Verwenden Sie ProxyCommand für alle SSH-Verbindungen

Verwenden Sie ProxyCommand für alle SSH-Verbindungen

Ich spielte mit der Idee, einen SSH-Proxy-Server oder auch Jump Host genannt zu haben, den ich verwenden würde, um mich mit all meinen"versteckt"Server. Im Grunde habe ich also das folgende Setup. Bitte beachten Sie, dass ich hier absichtlich IP-Adressen anstelle von Hostnamen verwende.

<client> ---> <proxy_ssh> ---> <192.168.0.*>

Meine Absicht ist, dass es für die Benutzer so transparent wie möglich sein soll. Im Idealfall sollten die Benutzer also nur den folgenden Befehl ausführen müssen

# ssh [email protected]

Damit dies funktioniert, habe ich Folgendes erstellt .ssh/config.

Host *                                                                                                                                                                           
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               

Host 192.168.0.*                                                                                                                                                                   
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

Das funktioniert gut. Aber es ist etwas mühsam, wenn ich hinter meinem proxy_sshServer mit mehreren Netzwerken arbeiten müsste. Ich habe also versucht, das einfach ProxyCommandzum Host *Abschnitt hinzuzufügen, was aber nicht funktioniert hat.

Ich wollte dies für den Endbenutzer transparenter machen und habe die SSH-Konfiguration wie folgt geändert, wobei ich einfach die spezifische Hostdefinition weggelassen habe.

Host *
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

Dies hatte zur Folge, dass ich keine Verbindung mehr zum Endhost herstellen konnte. Die Verbindung ist einfach abgelaufen!

Daher meine Frage: Gibt es eine Möglichkeit, dies transparenter zu gestalten, sodass alle meine SSH-Verbindungen den proxy_sshHost verwenden?

Antwort1

Das obige Beispiel macht es rekursiv, d. h. jede Verbindung verwendet einen Proxy-Befehl, also wieder ssh mit einem anderen Proxy-Befehl. Eine gute Möglichkeit, Ihren Proxy per DOS zu manipulieren.

Sie sollten den Proxy aus der Liste ausschließen, -F /dev/nullden Befehl „Konfiguration für Proxy ignorieren“ verwenden oder den Proxy-Befehl für den Proxy-SSH einfach ignorieren:

ProxyCommand ssh -oProxyCommand=none my_user@proxy_ssh.example.com netcat -w 120 %h %p

Antwort2

Fügen Sie der Konfiguration für den Jump-Host einen Eintrag hinzu, der den Proxy-Befehl überschreibt:

Host proxy_ssh.example.com
  ProxyCommand none

Andernfalls wird versucht, mithilfe des Proxy-Befehls selbst zum Jump-Host zu gelangen.

verwandte Informationen