Utilice ProxyCommand para todas las conexiones SSH

Utilice ProxyCommand para todas las conexiones SSH

Estaba jugando con la idea de tener un servidor proxy SSH o llamado Jump Host, que usaría para conectarme a todos mis"oculto"Servidores. Básicamente tengo la siguiente configuración. Tenga en cuenta que aquí uso intencionalmente direcciones IP en lugar de nombres de host.

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

Mi intención es que sea lo más transparente posible para los usuarios. Entonces, idealmente, los usuarios solo deberían ejecutar el siguiente comando

# ssh [email protected]

Para que esto funcione, he creado lo siguiente .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

Esto funciona bien. Pero es un poco tedioso si tuviera más redes con las que trabajar detrás de mi proxy_sshservidor. Así que intenté simplemente agregar el ProxyCommanda la Host *sección que no funcionó.

Quería hacer esto más transparente para el usuario final y cambié la configuración de ssh a la siguiente, simplemente omitiendo la definición de Host específica.

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

Esto tuvo el impacto de que ya no pude conectarme al servidor final. ¡La conexión simplemente se agotó!

Entonces, mi pregunta es: ¿hay alguna forma de hacer esto más transparente de tal manera que toda mi conexión SSH use el proxy_sshhost?

Respuesta1

El ejemplo anterior hará que sea recursivo, es decir, que cada conexión utilizará un comando de proxy, que nuevamente es ssh con otro comando de proxy. Buena manera de utilizar DOS en tu proxy.

Debe excluir el proxy de la lista, usarlo -F /dev/nullpara ignorar la configuración del comando proxy o simplemente ignorar el comando proxy para el proxy ssh:

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

Respuesta2

Agregue una entrada a la configuración del host de salto que anule el comando de proxy:

Host proxy_ssh.example.com
  ProxyCommand none

De lo contrario, intentará utilizar el comando proxy para acceder al host de salto.

información relacionada