SSH-Konfiguration für Hostnamen aus Datei lesen

SSH-Konfiguration für Hostnamen aus Datei lesen

Der Aufbau ist wie folgt:

  • Lokaler PCvon dem aus ich per SSH auf … zugreifen möchte.
  • Gateway-KnotengatewayDies ist ein Zwischenknoten, der nur zum SSH-Zugriff auf … verwendet wird.
  • Vorderer Knotenfront, 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 gatewayund frontist 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.shdas frontden 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 RemoteCommandin 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 %hund %pautomatisch zum angeforderten Hostnamen und Port erweitert werden.

Sie können einen dynamischen Hostnamen verwenden, indem Sie den %hParameter 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.

verwandte Informationen