SSH a través de un proxy SOCKS? (cliente = OpenSSH OS X)

11

No estoy seguro de si esta pregunta es más adecuada aquí en ServerFault o en SuperUser. Pensando en ello lógicamente, creo que esta es una pregunta de administrador de sistemas, así que lo estoy poniendo aquí, y si los mods piensan que debería moverse, ¡disculpas por adivinar mal!

De todos modos: tengo un servidor fuera del sitio y estoy atascado en una IP privada sin acceso a la red, excepto a través de un proxy HTTP o un proxy SOCKS 4/5. Estoy ejecutando OS X, y me gustaría que el comando ssh del terminal funcione de alguna manera a través de uno de esos dos proxies para llegar al servidor remoto. El puerto SSH en el servidor remoto no es estándar, aunque dudo que eso haga mucha diferencia.

Bart B
fuente

Respuestas:

5

Sé que esta es una publicación antigua, pero creo que esta respuesta seguirá siendo útil:

Puede hacerlo fácilmente a través de un proxy SOCKS con NetCat (nc). En su ~ / .ssh / config solo agrega dos líneas, una que especifica qué hosts desea proxy y una línea para indicarle cómo conectarse a través de nc. Al igual que:

~ / .ssh / config: (probado en OSX, también debería funcionar en Linux)

Host 10.*
    ProxyCommand nc -X 5 -x PROXY_HOST:1080 %h %p

Reemplace "PROXY_HOST" con lo correcto para su configuración.

Esto hace que ssh, en lugar de abrir directamente una conexión TCP al host de destino (en este caso, cualquier cosa que comience con "10." - puede ser una IP o nombre de host), ejecute el comando "nc" con las opciones especificadas para realmente establece la conexión TCP, y SSH hace el resto desde allí. Muy útil.

"5" es la versión SOCKS, "1080" es el puerto proxy, "% h" SSH reemplaza con el host que escribió en la línea de comando y "% p" SSH reemplaza con el puerto desde la línea de comando (o el valor predeterminado 22)

bgp
fuente
7

Si, esto se puede hacer. Vea este sitio para un ejemplo.

Básicamente, utiliza su ~/.ssh/configarchivo local (o /etc/ssh/ssh_configsi necesita que sea para todo el sistema) para especificar una ProxyCommanddirectiva para los hosts a los que necesita acceder a través del proxy.

También puede usar nc(que viene con OS X) en lugar del software que mencionan en ese sitio.

Consulte las páginas ssh_config(5)y nc(1)man para obtener información adicional.

voretaq7
fuente
1
Desafortunadamente, la página a la que enlaza está desactualizada y el enlace a la versión parcheada del binario está muerto: error 404.
Bart B
1
¡Qué vergonzoso es esto! ¡Encontré un enlace a un comando proxy que funciona que todavía se compila en OS X 10.7 Lion, y aún funciona, EN MI PROPIO BLOG! En mi defensa, la publicación tiene 6 años, pero aún así. Instrucciones de trabajo aquí: bartbusschots.ie/blog/?p=184
Bart B
2
@BartB "Cualquier cosa que hayas escrito hace más de una semana bien podría haber sido escrita por otra persona". - Es un axioma de programación, pero también es válido para administradores de sistemas y blogueros.
voretaq7
3

Un poco tarde, pero tenga en cuenta que puede usar las otras respuestas aquí en el comando SSH con la bandera -o. Esto fue útil para mí, ya que podría o no necesitar usar el proxy (dependiendo de la oficina en la que me encuentre), por lo que realmente no quiero editar mis archivos de configuración ssh.

ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" [email protected]
EdmCoff
fuente