Agent-Weiterleitung über verschiedene Benutzernamen (Git & Bereitstellung)

Agent-Weiterleitung über verschiedene Benutzernamen (Git & Bereitstellung)

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 developersGruppe und das umaskist 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.comfolgendermaßen her ~/.ssh/config:

Host example.com
  User beaks
  ForwardAgent yes
  IdentityFile ~/.ssh/id_rsa_business

Der erste Login klappt einwandfrei, ssh example.comes 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.comals gemeinsamer gitBenutzer anmelde.

EC2Ich 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.comnicht anbietet .beaksgit

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 -Lauf 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

verwandte Informationen