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.


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"

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.