Finalmente logré lograr esto ssh
solo con :
- iniciar un proxy SOCKS local en su máquina cliente (usando
ssh -D
)
- conéctese al servidor remoto y configure un reenvío de puerto inverso (
ssh -R
) a su proxy SOCKS local
- configurar el software del servidor para usar el proxy reenviado
1. Inicie proxy de calcetines locales en segundo plano
Conéctese a localhost a través de SSH y abra el proxy SOCKS en el puerto 54321.
$ ssh -f -N -D 54321 localhost
-f
ejecuta SSH en segundo plano.
Nota: Si cierra la terminal donde inició el comando, el proceso de proxy se eliminará. ¡Recuerde también limpiar después de usted mismo ya sea cerrando la ventana del terminal cuando haya terminado o matando el proceso usted mismo!
2. conéctese al servidor remoto y configure el reenvío de puerto inverso
Enlace el puerto remoto 6666 al puerto local 54321. Esto hace que su proxy de calcetines locales esté disponible para el sitio remoto en el puerto 6666.
$ ssh root@target -R6666:localhost:54321
3. Configure el software del servidor para usar el proxy reenviado
Simplemente configure yum, apt, curl, wget o cualquier otra herramienta que admita SOCKS para usar el proxy 127.0.0.1:6666
.
Voilá! Feliz túnel!
4. opcional: configure el software del servidor para usar el proxy reenviado
Descubrí que la instalación proxychains
en el servidor de destino facilita mucho las cosas.
Permite que cualquier software use el proxy SOCKS (incluso telnet
), mediante un LD_PRELOAD
truco para redirigir las solicitudes TCP y DNS de comandos arbitrarios a un proxy.
Configuración /etc/proxychains.conf
para usar el proxy de calcetines reenviados:
[ProxyList]
# SSH reverse proxy
socks5 127.0.0.1 6666
Herramientas arbitrarias de túnel (que usan TCP) con proxychains
:
$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update