Skip to main content

Acceder remotamente a un dispositivo no accesible: túnel SSH inverso

Aunque este ejemplo esta pensado para Raspberry Pi, tiene un uso genérico para poder conectar remotamente de manera sencilla con cualquier dispositivo con un servidor de ssh ubicado en una red privada, o detrás de un cortafuegos que nos impida un acceso normal a el.

Problemática

Disponemos de un dispositivo el cual, aunque dispone de conexión a Internet, no es es accesible desde el exterior, no tenemos el control de la configuración de la red, pero necesitamos poder acceder a el remotamente.

Concepto general

La idea básica es implementar el llamado túnel SSH inverso, para ello estableceremos una conexión saliente desde nuestro dispositivo aislado a una maquina exterior, al ser una conexión saliente y no entrante, nos podemos saltar todas las posibles limitaciones de red existentes (firewall, red privada, …).

Posteriormente utilizaremos esta conexión activa para lanzar una conexión inversa desde nuestro dispositivo al dispositivo objetivo.

Existen dos escenarios principales, en todos los casos necesitamos disponer de un ordenador con una IP publica con un servidor ssh abierto al exterior.

Escenario 1

Como hemos comentado anteriormente, para poder acceder a nuestro sistema objetivo necesitamos disponer de acceso a un dispositivo con una IP pública, en este primer escenario será nuestro ordenador.

Lanzaremos una conexión desde el dispositivo objetivo a nuestro ordenador mediante el comando:

nohup ssh -f -N -R 10000:localhost:22 nuestro_usuario@nuestro_host

Donde nuestro_usuario es el usuario de nuestra maquina local y nuestro_host es nuestro ordenador (recordad que debe ser accesible)

Cuando esto esta hecho, podremos acceder a nuestro dispositivo objetivo con el comando:

ssh -p 10000 usuario_dispositivo@localhost

Escenario 2

Este escenario es muy parecido al anterior, la única diferencia es que no disponemos de un ordenador local accesible desde el exterior. En este caso será necesario disponer de un servidor intermedio que nos servirá de puente entre nuestro ordenador local y el dispositivo objetivo, para ello:

Lanzaremos una conexión desde el dispositivo objetivo a nuestro host intermedio el comando:

nohup ssh -f -N -R 10000:localhost:22 nuestro_usuario@nuestro_host_intermedio

Nos conectaremos al host intermedio desde nuestro ordenador local

ssh nuestro_usuario@nuestro_host_intermedio

Y después, dentro de nuestro host intermedio, accederemos a nuestro dispositivo objetivo mediante:

ssh -p 10000 usuario_dispositivo@localhost

Leave a Reply

%d bloggers like this: