Verwenden Sie einen angegebenen Schlüssel von ssh-agent

11

In Anlehnung an Wie kann ich Git mitteilen, welcher private Schlüssel verwendet werden soll? Ich möchte in einer bestimmten Situation einen bestimmten SSH-Schlüssel verwenden.

Mein Problem ist, dass ssh die Schlüssel von meinem ssh-Agenten in der Reihenfolge verwendet, in der sie hinzugefügt werden, selbst wenn ich '-i etwas' angebe.

Meine spezifische Situation:

  • Ich habe zwei Github-Benutzer, jeder mit seinem eigenen Schlüssel. Ich möchte - zum Beispiel über eine SSH-Konfiguration - für jeden Klon angeben, welcher Schlüssel verwendet werden soll:

    Host USER1.git

    Hostname github.com

    User git

    IdentityFile ~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

wird weiterhin USER2.id_rsa verwenden, wenn dies der Schlüssel ist, der zuerst zu ssh-agent hinzugefügt wurde.

svrist
quelle

Antworten:

5

Ich habe es endlich geschafft:

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.
  • Stellen Sie ssh-add -lsicher, dass beide Schlüssel hinzugefügt wurden.
    • Kopieren Sie jeden Pfad von ssh-add -lin die entsprechende Zeile ~/.ssh/config, um Tippfehler zu vermeiden. Wenn ~/.ssh/configfür USER1 ein Tippfehler im Identitätsdateipfad vorliegt, wird stattdessen der falsche Schlüssel (der Schlüssel von USER2) verwendet.

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

Versuchen Sie den folgenden Vorschlag von @ stijn-hoop (im Kommentarbereich dieser Antwort), damit dies auf einem Remote-Server mithilfe der Agentenweiterleitung funktioniert.

dgo.a.
quelle
3
Für Ihren letzten Kommentar zur Weiterleitung von Agenten siehe diese Antwort: superuser.com/questions/273037/…
Stijn Hoop
1

Verwenden Sie IdentitiesOnly yesunter diesen Hosts in .ssh / config.

Puma
quelle
1
aber dann wird es nicht den Agenten verwenden und mich zwingen, Passphrase für alle Github-Verbindungen
einzugeben
1
Ja, so funktioniert es. Sie können bei Verwendung von ssh-agent nicht zwischen verschiedenen Schlüsseln wählen. Eine Möglichkeit besteht darin, mehrere SSH-Agenten zu starten und zwischen ihnen zu wechseln, entweder mit unterschiedlichen Wrappern für unterschiedliche Github-Operationen oder einfach zwischen SSH-Agenten zu wechseln (SSH_AUTH_SOCK ändern)
Cougar
6
Der obige Kommentar ist falsch - Sie können Identitäten von Ihrem SSH-Agenten auswählen. Siehe auch die Antwort, die ich oben bereits erwähnt habe, superuser.com/questions/273037/…
Stijn Hoop
0

Der Punkt ist, die öffentliche Schlüsseldatei innerhalb der IdentityFileDirektive 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: /unix//a/495785/264704

ttimasdf
quelle