Se habla muy poco del port forwarding con ssh. Una característica más peligrosa que una caja de petardos con un mechero encendido al lado, pero extremadamente útil si la tienes controlada y la usas adecuadamente. Voy a poner un par de ejemplos de uso que no se alejan demasiado de la realidad, pero sí lo suficiente. Perfectamente válidos en Windows, Linux, Mac o el sistema que más os guste, si tiene OpenSSH instalado.
En mi servidor vps he instalado un producto x. Ese producto ofrece una interfaz web en localhost por el puerto 8080. No quiero meterle un proxy inverso ni obligar a que escuche en todas las direcciones, por seguridad. Así que hago:
ssh -L 8080:localhost:8080 usuario@direccion-del-servidor
Seguidamente, abro mi navegador, entro en localhost:8080, y mientras la ventanita de ssh permanezca abierta, manejo la interfaz web del producto como si estuviera aquí mismo.
Y está la inversa, el reenvío de un puerto remoto de mi propio pc. Tengo un vps con la CPU y la RAM justas, y quiero ofrecer un llama.cpp, ejecutado desde mi portátil, que tiene tarjeta gráfica y se puede apoyar en Cuda. Lo lanzo por el puerto 3000, y hago:
ssh -R 3000:localhost:3000 usuario@direccion-del-servidor
Después configuro un proxy inverso en el Apache del vps apuntando a localhost:3000, y magia! Los visitantes entran a un llama.cpp plenamente operativo que está en mi portátil.
@jmdaweb muy bueno ese tunelado. Estuve trabajando con eso mucho tiempo, incluso hay por ahí algún programa que mantiene vivas las conexiones reconectando si se cae.
@javido me acabo de montar yo un servicio con systemd. Le he puesto restart always y una frecuencia de reinicio de 10 segundos, y he tenido que probarlo varias veces hasta que he dado con la tecla para que no se desactivara nada más conectar. En teoría así debería resistir caídas, ya que el binario de ssh morirá si se pierde la conexión.
@jmdaweb Yo terminé usando autossh.
Échale un vistazo en https://github.com/Autossh/autossh