Como crear un túnel reverso de SSH

domingo 12 septiembre 2010 | In English

A veces que necesitamos conectarnos vía SSH a otra computadora, nos encontramos con que esta computadora a la que deseamos conectarnos vía SSH (llamaremos a esta computadora "destino") se encuentra utilizando NAT y por lo tanto no cuenta con una dirección de IP pública que podamos usar para conectarnos a ella, o bien se encuentra tras un muro de fuego que no permite el acceso desde fuera.

Si "destino" puede establecer con éxito una conexión SSH a otra computadora que se encuentre accesible, podemos utilizar esta segunda computadora para establecer un túnel reverso de SSH a nuestra computadora "destino", llamaremos a esta segunda computadora "origen" (aún que no sea en realidad la computadora que estaremos utilizando para manejar la computadora "destino", y solo sea un puente).

Un túnel reverso de SSH funciona conectando la computadora "destino" a la computadora "origen" y utilizando entonces esta conexión para establecer un túnel de SSH a "destino" desde cualquier computadora que se encuentre conectada a "origen". Este túnel reverso de SSH debería funcionar sin problemas en la mayoría de los sistemas con Linux.

Entonces, asumamos que tenemos estas dos computadoras:

IP de "origen": aaa.bbb.ccc.ddd

IP de "destino": desconocido o no disponible

Primero que nada, establecemos la conexión de SSH de "destino" a "origen", activando la funcionalidad para el túnel reverso de SSH con el parámetro -R:

ssh -R 61999:localhost:22 usuario_origen@aaa.bbb.ccc.ddd

El primer número (61999) indica que puerto usaremos en "origen" para conectarnos a "destino", localhost es el nombre de dominio que utilizaremos para esto mismo, y el último número (22) indica en que puerto esta "destino" escuchando SSH.

Una vez que esta conexión este viva, y estando conectados en "origen" (no importa si es localmente o remotamente), podemos establecer la conexión a la computadora "destino":

ssh -p 61999 usuario_destino@localhost

Efectivamente, podemos usar una computadora con acceso vía SSH permanente como puente entre computadoras que de otra manera no serían accesibles vía SSH. Cualquier computadora que esté conectada a "origen" puede conectarse a otras computadoras que tengan el túnel reverso de SSH activo.

Categorías: Comandos, FOSS, Linux, SSH