Skip to main content
andrés ignacio torres

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!