SSH-Schlüssel über mehrere Maschinen mit SSH-Verkettung

366
user910861

Ich möchte in der Lage sein, ssh über mehrere Maschinen mit dem -A-Flag auf ssh zu verwenden: ssh -A user @ hostB ssh -A user @ hostC

Dies funktioniert gut in Szenarien, in denen ich über SSH-Schlüssel verfügt, die es mir ermöglichen, von meinem Computer (hostA) zu hostB und dann von hostB zu hostC zu wechseln. Was aber, wenn ich von A nach C gehen möchte, aber keine schlüsselbasierte Kommunikation von B nach C zulassen soll? Gibt es eine Möglichkeit, den Schlüssel an der SSH-Pipe weiterzuleiten, ohne diesen Schlüssel tatsächlich auf der Maschine B zu speichern und dort zu lassen?

0

1 Antwort auf die Frage

1
grawity

Gibt es eine Möglichkeit, den Schlüssel an der SSH-Pipe weiterzuleiten, ohne diesen Schlüssel tatsächlich auf der Maschine B zu speichern und dort zu lassen?

Der Schlüssel verlässt niemals Ihren lokalen Rechner. Mit dieser -AOption können nur Clients auf hostB und hostC Anforderungen zum Signieren von Daten an Ihren lokalen ssh-agent senden . (Die SSH-Authentifizierung funktioniert mit Ihrem Schlüsselpaar, um digitale Signaturen zu erstellen.)

(Technisch gesehen können sie jeden ssh-agent-Befehl senden, einschließlich "list keys" oder "add new key". Es gibt jedoch keinen Befehl zum Extrahieren des privaten Schlüssels oder anderer vertraulicher Informationen.)


Wenn hostB jedoch nicht absolut vertrauenswürdig ist (und Sie nicht möchten, dass Authentifizierungsanfragen übermittelt werden), verwenden Sie einen anderen Ansatz: Führen Sie den zweiten Client lokal aus und leiten Sie das SSH-Protokoll über die SSH-Pipe weiter. Auf diese Weise sehen Zwischen-Hosts nur eine verschlüsselte Konversation.

Die einfachste Methode (in OpenSSH 7.3 und höher) ist die Option ProxyJump:

ssh -J user@hostB user@hostC 

Andere Optionen sind -o ProxyCommand="ssh -W %h:%p user@hostB"oder statische TCP-Tunnel über -L.

Perfekt, vielen Dank user910861 vor 6 Jahren 0