Túnel SSH

Crear túnel SSH

Con el comando ssh en linux es posible crear túneles de forma que otras aplicaciones puedan conectar a un servidor remoto sobre SSH. Básicamente lo que se trata de hacer es un reenvio de una conexión local a un servidor remoto sin cambiar configuración de puertos o firewall en el servidor remoto.

Un ejemplo puede ser el siguiente, si en un servidor remoto tiene un gestor de bases de datos como MySQL y solo está configurado para aceptar peticiones locales es posible conectar a través de SSH creando un túnel. De esta forma desde aplicaciones como MySQL Workbench o similares pueden conectar de forma remota. Esto permite que no tengamos que abrir puertos en el firewall del sistema o añadir reglas a nuestro firewall para restringir el acceso por dirección IP.

ssh USER@DIRECCION_IP_REMOTA -p PUERTO_REMOTO_SSH -L PUERTO_LOCAL:DIRECCION_IP_INTERNA:PUERTO_REMOTO -N

# USER: corresponde al usuario con el que conectaremos por SSH.
# DIRECCION_IP_REMOTA: es la dirección IP del servidor al que queremos conectar.
# PUERTO_REMOTO_SSH: es el puesto donde escucha el servicio sshd en el servidor remoto (si no es el por defecto: 22).
# PUERTO_LOCAL: puerto local al que conectaremos la aplicacción en nuestra maquina.
# DIRECCION_IP_INTERNA: si es para conectar el propio servidor remoto utilizaremos la IP 127.0.0.1 
#   Sería posible conectar a cualquier otra IP que tenga acceso desde el servidor remoto.
# PUERTO_REMOTO: puerto donde escucha el servicio remoto de forma local.

Una vez lanzado el comando pedirá con contraseña de usuario, quedando escuchando conexiones y se podrá conectar a la direccion local 127.0.0.1:PUERTO_LOCAL que será reenviada al servidor remoto a través del túnel SSH al puerto PUERTO_REMOTO.