Redirección de puertos a través de SSH
Cuando trabajaba en mi proyecto de investigación de pregrado hace unos años, hice una pequeña aplicación web para visualizar algunos patrones a medida que mis experimentos diarios culminaban. La aplicación se ejecutaba dentro de un servidor remoto y no estaba expuesta al internet público, así que era un fastidio para mí revisar su contenido.
Luego de buscar una manera de facilitarme el consultar la aplicación, me topé con la funcionalidad de redirección de puertos de ssh
. Escribo esta breve explicación muchos años después para evitar volver a olvidar que existe.
Según el manual de ssh (en inglés), puedes usar el modificador -L
para especificar "que las conexiones al puerto TCP o socket Unix dado en el host local (cliente) sean redireccionadas al host y puerto, o socket Unix, dados en el lado remoto".
En la práctica, si tu servidor remoto está ubicado en ejemplo.com
y ejecuta una aplicación que espera conexiones en el puerto 8001
, puedes ejecutar este comando en tu máquina local:
ssh [email protected] -L 3000:localhost:8001
Puedes leer la parte 3000:localhost:8001
como "las conexiones a (mi) puerto (local) 3000
serán redirigidas al servidor remoto, al host localhost
y puerto 8001
". Ajusta los puertos y el host a tu medida.
Mientras esta sesión de ssh
esté ejecutándose, puedes acceder a localhost:3000
en tu máquina local y deberías encontrar lo que esté accesible en localhost:8001
dentro de la máquina remota. ¡Excelente!