SSH redirigir puerto local


openssh

Introducción

SSH es una excelente herramienta no solo para conectarte e interactuar con servidores remotos. En este artículo vamos a explorar el reenvío de puertos locales con SSH y qué significa. También exploraremos el Reenvío de puertos remotos con SSH y el Proxy Socks con SSH y cómo usar estas funcionalidades.


Explicación

El reenvío de puertos locales básicamente te permite redirigir un puerto de una máquina remota hacia tu máquina local. Por ejemplo, si querés conectarte a un servicio remoto desde tu máquina pero solo temporalmente o si hay un firewall que no te deja hacerlo. Supongamos que querés conectarte a una instancia de MySQL en el puerto por defecto (3306).


El comando

ssh -Nn -L 3306:localhost:3306 user@example.com

En este caso, estamos redirigiendo localhost:3306 de la máquina remota a localhost:3306 de tu máquina local, pero también podés especificar otra dirección de la red, por ejemplo 172.16.16.200, y el comando se vería así:

ssh -Nn -L 3306:172.16.16.200:3306 user@example.com

Esto te dará acceso a la IP 172.16.16.200 y al puerto 3306 en la red remota.


Los parámetros y su significado

Saqué una porción del significado de los parámetros de la página del manual, pero en resumen significa un reenvío de puerto local sin ejecutar un shell.

-N No ejecuta un comando remoto. Esto es útil solo para redirigir puertos.
-n Redirige stdin desde /dev/null (en realidad, evita la lectura desde stdin). Debe usarse cuando SSH se ejecuta en segundo plano.
-L Especifica que las conexiones al puerto TCP o socket Unix en el host local (cliente) deben ser redirigidas al host y puerto dados, o socket Unix, en el lado remoto.

Configuración del servidor

Hay un parámetro de configuración que puede cambiar el comportamiento del reenvío de puertos locales y remotos. Ese parámetro es AllowTcpForwarding.


AllowTcpForwarding

Por defecto, esta opción está configurada en yes. Podés restringir el reenvío de puertos remotos y locales configurándola en no, o permitir solo el reenvío local configurándola en local.


Notas finales

Como podés ver, esta opción puede ser muy útil para saltarse firewalls o tener un reenvío de puertos temporal. Si querés hacerlo automático y no tan temporal, podés revisar autossh. Para probar las conexiones y los túneles sin instalar nada adicional, podés usar nc (netcat): en el servidor ejecutás nc -l -p PUERTO, y en el cliente, nc HOST PUERTO.


Errata

Si encontrás algún error o tenés alguna sugerencia, por favor enviame un mensaje para que lo corrija.

Además, podés revisar el código fuente y los cambios en el código generado y las fuentes aquí



No tienes cuenta? Regístrate aqui

Ya registrado? Iniciar sesión a tu cuenta ahora.

Iniciar session con GitHub
Iniciar sesion con Google
  • Comentarios

    Online: 0

Por favor inicie sesión para poder escribir comentarios.

by Gabriel Garrido