SSH über Zwischenhost mithilfe des Control-Sockets

SSH über Zwischenhost mithilfe des Control-Sockets

Ich möchte von Maschine A über B per SSH auf Maschine C zugreifen. Normalerweise würde ich Folgendes tun:

A$ ssh user@B
B$ ssh user@C

Ich muss beide Male Passwörter eingeben (kein öffentlicher Schlüssel erlaubt). Ich möchte einen Kontroll-Socket einrichten, sodass ich nach der Eingabe beider Passwörter über den Socket eine SSH-Verbindung zu C herstellen kann, indem ich beispielsweise Folgendes eingebe:

A$ ssh -S socket C

Ist das möglich?

Antwort1

Sie können B als Sprunghost verwenden:

ssh -J user@B user@C

Wenn Ihre Benutzernamen oder Hostnamen lang sind, können Sie sie folgendem hinzufügen ~/.ssh/config:

Host hostB
    HostName some-long-hostname-of-B-or-its-ip
    User username-on-B

Host hostC
    HostName same-here-for-C
    User username-on-C

Anschließend können Sie SSH wie folgt verwenden:

ssh -J hostB hostC

Der Sprung kann auch konfiguriert werden für ssh hostC:

Host hostC
    HostName same-here-for-C
    User username-on-C
    ProxyJump hostB

Antwort2

Als Ergänzung zu gronostajs Antwort erfahren Sie hier, wie Sie mit -J einen Socket erstellen:

$ ssh -M -S socket -J user@B user@C -fN

Verwenden Sie dann den Socket, um sich bei C anzumelden:

$ ssh -S socket C

Auf diese Weise müssen Sie keine Passwörter eingeben.

verwandte Informationen