Mehrere SSH ForwardAgent-Hops

15

Ich habe in den letzten 2 Stunden ohne Glück nach einer Lösung für das folgende Problem gesucht.

Entwicklung:

Ich verwende die öffentliche Authentifizierung, um eine Verbindung zu meinen Servern herzustellen. Ich verwende ssh-agent forwarding, um keine öffentlichen / privaten Schlüssel verwalten zu müssen.

Nehmen wir an, ich habe Server A, B and C.

Das funktioniert sehr gut, wenn ich von verbinde LOCAL ---> A ---> B.

Es funktioniert auch sehr gut, wenn ich es tue LOCAL ---> A ---> C.

Wenn ich es jetzt versuche LOCAL ---> A ---> B ---> C, kann SSH keine Verbindung herstellen B to C.

Bemerkenswert: Ich verbinde mich mit Server A als Liquidität, während ich mich mit Server B als Root verbinde. Die Verbindung zu Server B als Liquidität behebt das Problem, aber dies ist keine Option für mich.

Gemäß der Empfehlung eines Benutzers ssh -Astelle ich jedes Mal sicher, dass die Agentenweiterleitung aktiviert ist.

Ich habe eine ähnliche Frage gefunden, auf die hier keine Antwort gefunden wurde: Ist es möglich, die Weiterleitung von ssh-Agenten durch mehrere Hops zu verketten?

Laut @Zoredache hier: /server//a/561576/45671 Ich muss nur meine Client-Konfiguration auf jedem Zwischensystem anpassen. Ich glaube das habe ich getan.

Liquidität
quelle
Ziehen Sie die Verwendung von ProxyCommandHopping in Betracht (wie hier erläutert ), anstatt den SSH-Agenten weiterzuleiten. Für Ihre Vorgehensweise müssen Sie allen Maschinen in der Kette vertrauen, da diese Ihre privaten Schlüssel (ab) verwenden können. Ich mag auch den ProxyCommand-Ansatz viel besser, da die Überprüfung der bekannten Hosts lokal erfolgt. Außerdem können Sie die Kette in Ihrer SSH-Konfiguration so einrichten, dass Sie mit einem einzigen Befehl eine Verbindung zu C. herstellen können.
gertvdijk
Ich kann leider keinen Proxy-Befehl verwenden. Trotz der Sicherheitsüberlegungen muss ich forwardAgent wirklich verwenden.
Liquidität
@liquidity kann ich Sie fragen, warum Sie ProxyCommand nicht verwenden möchten? Ich habe das gleiche Problem und proxyCommand ist meines Wissens sicherer. Also überlege ich mir, welches ich verwenden soll.
grep

Antworten:

13

Damit die Agentenweiterleitung mehrere Hops durchläuft, müssen Sie lediglich Ihre Client-Konfiguration auf jedem Zwischensystem anpassen, damit die Agentenweiterleitung funktioniert.

Es könnte so einfach sein, als ob Sie sicherstellen, dass /etc/ssh/ssh_configdies konfiguriert ist. Wenn Sie jedoch Client-spezifische Konfigurationen ~/.ssh/configverwenden, müssen Sie möglicherweise auch diese Einstellungen anpassen.

Host *
    ForwardAgent yes

Sie können sehen, ob eine Agentenweiterleitung stattgefunden hat oder ob ein Fehler aufgetreten ist, wenn Sie nur die -vOption hinzufügen .

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

Stellen Sie außerdem sicher, dass Sie eine gültige Umgebungsvariable festgelegt haben.

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"
Zoredache
quelle
4
Erwähnenswert ist das Flag -A für ssh als schnelle und schmutzige Alternative zur Option ssh_config oder ~ .ssh / config. -A [e] Aktiviert die Weiterleitung der Authentifizierungsagentenverbindung.
Dmourati
1
In jedem Schritt können Sie mithilfe ssh-add -lvon die Schlüssel auflisten, von denen ssh glaubt , dass sie über Ihren Agenten abgerufen werden können. Stellen Sie sicher, dass Sie es bei jeder Verbindung weiterleiten!
MikeyB
Vielen Dank! Beachten Sie auch, dass Sie den ssh-agent auf dem letzten Server nicht manuell starten müssen, wenn alles korrekt ausgeführt wurde. Es wird automatisch gestartet, wenn Sie die Zeile Requesting authentication agent forwarding.in Ihrer Debug-Ausgabe sehen. Wenn Sie über versucht haben .bash_profile, ssh-agent zu starten, entfernen Sie es von dort. Andernfalls wird Ihr Agent ohne Identitäten erneut gestartet.
2upmedia