
Der Aufbau ist wie folgt:
- Lokaler PCvon dem aus ich per SSH auf … zugreifen möchte.
- Gateway-Knoten
gateway
Dies ist ein Zwischenknoten, der nur zum SSH-Zugriff auf … verwendet wird. - Vorderer Knoten
front
, wieder ein Zwischenknoten, der für den SSH-Zugriff auf das Finale erforderlich ist … - Rechenknoten, das ist der Knoten, den ich eigentlich verwenden möchte
Ich möchte meine lokale SSH-Konfiguration so einrichten, dass ich direkt eingeben kann ssh compute
.
Das Problem:Im Gegensatz zu gateway
und front
ist der Hostname für den Compute-Knoten nicht statisch (d. h. er kann sich mehrmals am Tag ändern). Ich habe ein Skript, compute_node_hostname.sh
das front
den Namen des Compute-Knotens ausgibt, d. h node339
. . Wie kann ich es in meiner Konfiguration verwenden?
Die folgende einfache Konfiguration mit fest codiertem Compute-Knoten funktioniert:
Host gateway front compute
User …
IdentityFile ~/.ssh/id_rsa
Host front
HostName front
ProxyJump gateway
Host compute
HostName node339
ProxyJump front
Zwang:Ich kann RemoteCommand
in meiner Konfiguration nicht verwenden
Antwort1
Denken Sie daran, dass „ProxyJump“ eine intelligentere Version von „ProxyCommand“ ist. Es übernimmt einige zusätzliche Aufgaben beim Kopieren der in der CLI angegebenen Optionen, ist aber im Wesentlichen dasselbe wie:
Host compute
ProxyCommand ssh -W %h:%p front
wobei %h
und %p
automatisch zum angeforderten Hostnamen und Port erweitert werden.
Sie können einen dynamischen Hostnamen verwenden, indem Sie den %h
Parameter ersetzen:
Host compute
ProxyCommand ssh -W $(compute_node_hostname.sh):%p front
Hinweis: Dies funktioniert nicht gut mit Knoten mit unterschiedlichen Hostschlüsseln. Da Sie sich über einen anderen Host verbinden, der sich bereits im Remote-Netzwerk befindet, sollte es sicher sein, die Hostschlüsselüberprüfung für diesen Hop einfach zu deaktivieren.