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.