Deja que SSH use un listener SOCKS local cuando esté disponible
Limita la comprobación Match exec de OpenSSH a un destino y entiende qué demuestra y qué no una prueba correcta del puerto local.
Un listener SOCKS local resulta útil en algunas redes y está ausente en otras. OpenSSH puede elegir un comando de proxy de forma condicional, sin que esa elección se aplique a todos los hosts.
Para OpenSSH con la forma de OpenBSD de nc, una configuración de cliente ilustrativa es:
Host work-server
HostName ssh.example.net
User alex
Match originalhost work-server exec "nc -z -w 1 127.0.0.1 1080"
ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
Match all
originalhost limita la comprobación al nombre indicado en la línea de comandos de SSH. exec coincide cuando su comando termina correctamente. El Match all final cierra ese ámbito condicional para los ajustes siguientes.
Esto supone que ningún ajuste anterior aplicable ha elegido ya un comando de proxy o una ruta de salto en conflicto. SSH suele usar el primer valor obtenido para una opción de configuración, así que un valor predeterminado amplio al principio puede impedir que una condición posterior tenga el efecto esperado.
Un socket que escucha es una promesa modesta
La prueba comprueba el acceso TCP a un puerto local. No completa la negociación SOCKS, no establece la conexión de destino deseada ni demuestra qué programa posee ese puerto. El listener también puede desaparecer después de la comprobación.
El tiempo de espera mantiene acotada una prueba fallida. Las opciones mostradas pertenecen a la interfaz nc de OpenBSD; otros programas con ese mismo nombre de archivo pueden exponer opciones distintas.
Cuando la condición no coincide, este ejemplo deja la conexión sin este ProxyCommand, lo que permite su ruta habitual. Eso solo es apropiado cuando se permite el acceso directo. Una política de proxy obligatoria no debería usar una comprobación de disponibilidad como permiso para escapar a otra ruta.
El nombre de host SSH de destino y las comprobaciones de clave de host siguen identificando el servidor de destino. Elegir un auxiliar de transporte no es motivo para aceptar una clave de host inesperada.