Acceso remoto por tunel SSH inverso cuando no hay acceso

Sebastián Misuraca

Cuantas veces han querido tener acceso SSH a un servidor dentro de una red privada de una empresa y no han logrado que el encargado en redes les haga un NAT hacia el puerto SSH (22) del servidor requerido.

A veces por políticas de seguridad o por inconvenientes en la configuración no logran redirigir algún puerto público al puerto 22 del servidor que queremos tener acceso.

Hay una solución, no temas tener que caer en las manos de un TeamViewer sin licencia.

Si Mahoma no va a la montaña, la montaña va a Mahoma.
Hay una posibilidad de hacer un SSH inverso (o túnel SSH).

¿Cómo?

Solo hay que acceder una única vez al servidor (el día de la instalación, o pedirle a alguien que ejecute una línea) y tener desde la pc que estamos intentando conectarnos el servidor de SSH corriendo, como también conocer la ip pública.
Sabiendo

esto, sólo es necesario ejecutar un comando de SSH:

ssh -N -f -R {puerto_destino}:localhost:22 {ip_publica_nuestra}

Ej: ssh -N -f -R 22022:localhost:22 200.142.168.151

Este comando se conecta por SSH a nuestra PC (pide login a nuestra pc) y deja un túnel creado asociado al localhost de nuestra pc, para que si luego nos queremos conectar a ese servidor lo podamos hacer con este simple comando:

Ej: ssh -p 22022 root@localhost

De esta manera tenemos creado un túnel constante a nuestra pc y nos podemos conectar sin necesidad de que haya que redirigir ningún puerto 22 desde el router.

* El servidor debe tener configurada correctamente la salida a Internet.
* Debe estar corriendo el servidor SSH desde la ip pública que estamos saliendo a Internet.
* Dicho script remoto podría quedar configurado al inicio con un  certificado SSH para que la conexión se restablezca sola si el servidor se reinicia.