Verwenden Sie einen angegebenen Schlüssel von ssh-agent

Wie kann ich git mitteilen, welchen privaten Schlüssel ich verwenden soll? Ich möchte in einer bestimmten Situation einen bestimmten SSH-Schlüssel verwenden.

Mein Problem ist, dass ssh selbst dann die Schlüssel meines ssh-Agenten in der Reihenfolge verwendet, in der sie hinzugefügt werden, wenn ich "-i something " spezifiziere.

Meine spezifische situation:

  • Ich habe zwei Github-Benutzer mit jeweils einem eigenen Schlüssel Ich möchte - zum Beispiel über eine ssh-config - für jeden Klon angeben, welcher Schlüssel Verwendung:
   Host USER1.git
     Hostname github.com
     User git
     IdentityFile ~/.ssh/USER1.id_rsa

ssh -vt USER1.git verwendet weiterhin USER2.id_rsa, wenn dies der Schlüssel ist, der zuerst zu ssh-agent hinzugefügt wurde.

Author: upe, 2011-11-15

3 answers

Ich habe es endlich zum Laufen gebracht:

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa
  • Einrückung zählt.
  • Tun Sie ssh-add -l und stellen Sie sicher, dass beide Schlüssel hinzugefügt wurden.
    • Kopiere/füge jeden Pfad von ssh-add -l in die entsprechende Zeile in ~/.ssh/config ein, um Tippfehler zu vermeiden. Wenn es einen ~/.ssh/config identityfile-Pfadtipp für USER1 gibt, wird stattdessen der falsche Schlüssel (der Schlüssel von USER2) verwendet.

Ich habe die Anweisungen bei BitBucket. Sie sollten für GitHub funktionieren, da der einzige Unterschied HostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

Um dies mit Agent Forwarding auf einem Remote-Server zum Laufen zu bringen, versuchen Sie den Vorschlag von @stijn-hoop unten (im Kommentarbereich dieser Antwort).

 5
Author: dgo.a,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-26 07:34:07

Es geht darum, die öffentliche Schlüsseldatei in der Direktive IdentityFile zu verwenden.

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa.pub

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa.pub

Wenn wir den privaten Schlüssel in der SSH-Konfiguration angeben, kann der SSH-Agent den richtigen Schlüssel nicht auswählen, wenn der private Schlüssel verschlüsselt ist.

Eine ähnliche Frage zu Stackexchange: https://unix.stackexchange.com/a/495785/264704

 1
Author: ttimasdf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-02-16 05:40:13

Verwenden Sie IdentitiesOnly yes unter diesen Hosts, in .ssh/config.

 0
Author: Cougar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-11-17 18:50:46