Ich habe einen Host, in den ich ssh. Manchmal bin ich im selben Netzwerk und kann direkt in das Netzwerk ssh, manchmal bin ich außerhalb des Netzwerks und muss einen Proxy verwenden.
Da ssh über den Proxyserver viel langsamer als direkt ist, möchte ich meine ssh-Konfiguration so einrichten, dass ich versuche, eine direkte Verbindung herzustellen, und auf den Proxy zurückgreifen kann, wenn dies fehlschlägt.
Derzeit sieht die Konfiguration folgendermaßen aus:
Host proxy_server
User user
Port port
Hostname some_domain
Host target_host
User user
Port port
Hostname ip_addr_of_host
Match exec not_inside_network
ProxyCommand ssh -W %h:%p proxy_server
Der target_host
Eintrag ist der letzte Eintrag in meiner Konfigurationsdatei, not_inside_network
wird jedoch von jeder SSH-Verbindung zu nicht verwandten Servern in der Konfigurationsdatei aufgerufen. Wie kann ich mich Match
nur auf diesen einen Server bewerben?
ssh
openssh
ssh-config
James Tocknell
quelle
quelle
ssh.config
ich besser vertraut bin, habe ich mich gefragt, ob Sie das Beispiel hier überprüft haben . Es kann hilfreich sein, das Modell zu versuchen, das der Autor für mehrere Hosts verwendet (dh einen exakten und einen Platzhalter in Ihrem Fall).Antworten:
Match
ist eher auf Augenhöhe mitHost
. Es existiert nicht wie andere Optionen als Teilmenge von Host.Sie können jedoch mehrere Kriterien für eine Übereinstimmung angeben, und diese scheinen als Kurzschluss UND zu wirken. Das sollte also für Sie möglich und nützlich sein:
Diese Regel wird bei jedem SSH überprüft. Bei Hosts, die nicht mit "target_host" übereinstimmen, schlägt die Übereinstimmung jedoch sofort fehl und wechselt zum nächsten
Match
oderHost
Schlüsselwort (falls vorhanden). Nur wenn der Host "target_host" ist, erfolgt die Ausführung. Dann bestimmt die Wahrheit dieser Anweisung, ob der ProxyCommand aufgerufen wird oder nicht.Führen Sie mit -vvv aus, um die Logik zu sehen. Sie sollten einige Übereinstimmungsprüfungen bei debug3 sehen.
quelle