Diese Abfrage bezieht sich nicht direkt auf Git, aber da SSH eines der von Git unterstützten Transportmittel ist und ich versuche, Agent-Forwarding zu verwenden, dachte ich, ich würde um eine Klarstellung bitten (die Manpages haben mich im Stich gelassen).
Ich versuche, eine Softwarebereitstellung mit Capistrano zu automatisieren. Es ist mir gelungen, einige der Schwachstellen zu beseitigen (Vorab-Setzen der bekannten Hosts vor der Bereitstellung usw.), aber ich stehe nun vor der folgenden Situation.
Mein Team meldet sich beim Server als sie selbst an, mit individuellen Benutzerkonten, jeder ist in einer developers
Gruppe und das umask
ist 002
. Nichts von dem oben Gesagten ist wirklich relevant, außer dass der Zweck darin besteht, sicherzustellen, dass mein Team immer als sie selbst arbeiten kann, ohne Superuser-Berechtigungen zu benötigen.
Wir stellen die Verbindung zum Server example.com
folgendermaßen her ~/.ssh/config
:
Host example.com
User beaks
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa_business
Der erste Login klappt einwandfrei, ssh example.com
es wird eine Verbindung zu meinem Benutzerkonto hergestellt und alles ist in Ordnung.
Das Problem kommt beim nächsten Schritt,
git ls-remote [email protected]:project/repository.git
Dies nutzt die oben erwähnte Git+SSH-Transportschicht (siehe Link oben) – und sollte normalerweise meinen Forwarded-Agent-Schlüssel verwenden (dessen Vorhandensein ich überprüft habe env | grep SSH_AUTH_SOCK
).
Die Antwort ist ein einfaches „Authentifizierung fehlgeschlagen (öffentlicher Schlüssel), das andere Ende hat unerwartet aufgelegt“, ich vermute, weil der Agent für meinen Benutzer nicht verwendet wird, wenn ich mich github.com
als gemeinsamer git
Benutzer anmelde.
EC2
Ich kann auch Merkwürdigkeiten (Sicherheitsrichtlinien usw.) nicht ausschließen – aber in diesem Fall hätte ich mit einem Timeout oder einem Verbindungsfehler gerechnet. Ich bin ziemlich sicher, dass ich erfolgreich bin – und dass sie mich nicht reinlassen, weil mein Agent meinen Schlüssel für ihren Benutzer github.com
nicht anbietet .beaks
git
Gerne füge ich weitere Informationen hinzu, falls ich etwas übersehen habe.
Antwort1
Es reicht nicht aus, einfach nur zu sehen, dass der SSH-Agent ausgeführt wird. Prüfen Sie, ob der gewünschte Schlüssel vorhanden ist. ssh-add -L
Haben Sie überprüft, ob dieser Schlüssel von einem anderen Host aus funktioniert? Was wird ssh-add -L
auf diesem System ausgegeben?
Sie können es auch ausführen GIT_TRACE=1 git ls-remote ...
und es wird den ausgeführten SSH-Befehl ausgeben. Sie können den SSH-Befehl manuell ausführen und ihn zum Laufen bringen, bevor Sie Git ins Spiel bringen.
Antwort2
Niemand hat diese Frage wirklich beantwortetDaher kann es für die Leute, die hierher kommen, von Vorteil sein, meine Antwort auf eine ähnliche Frage zu sehen.https://superuser.com/a/1141035/3376