English version: https://medium.com/@rretamal.dev/create-a-reverse-ssh-tunnel-41278050a7ee
En ocasiones es necesario conectarse a una computadora de forma remota, dependiendo del caso estos equipos se encuentran detrás de un firewall o de un NAT que impiden que puedas ingresar de forma remota sin hacer todas las configuraciones necesarias para un redireccionamiento de puertos o sencillamente no puedes hacer uso de una vpn.
TeamViewer es una herramienta que ayuda en mucho en estos casos pero tuve la necesidad de conectar un equipo linux que no tenía un entorno gráfico y para que esta aplicación funcionara iba a necesitar configurar una pantalla ficticia con X.Org que la verdad no me funcionó muy bien así que decidí irme por la opción de crear un túnel ssh inverso.
La idea detrás de esto es que tu máquina destino esté conectada a un servidor en el que se habilita el túnel y tu máquina cliente se conecte a ese servidor y de ahí salte por medio del túnel creado al equipo destino.
Quizás sea más fácil de ver con un pequeño diagrama (mis dotes de diseñador son limitadas pero ahí va):

Como necesitaba probar rápido y barato me incliné por usar portmap.io así que para poner manos a la obra nos creamos una cuenta indicando un login, un correo y una clave de ingreso (te pedirá confirmación por correo):

Seguidamente verás la siguiente pantalla donde seleccionaremos la opción Configurations:

Cuando veas la pantalla indicada deberás seleccionar la opción “Create New Configuration”:

En la pantalla siguiente deberás colocarle un nombre a tu configuración, en mi ejemplo le coloque “First Tunnel”, el tipo de tunel a crear, para mi caso indiqué SSH y seguidamente deberemos generar una llave privada, para ello presionarás la opción “Generate”, esto te generará la llave y te dará la opción de descargarla y copiarla al portapapeles.

La llave generada deberás guardarla en el equipo al que te quieres conectar, en la pantalla podrán ver que sugiere una ubicación para el archivo en ~/.ssh, para efectos del ejemplo usaremos esa ubicación, seguidamente tendrás que darle permisos al archivo para poder usarlo, para ello ejecuta el siguiente comando:
chmod 600 /.ssh/tuarchivo.pem
Así que perfecto, tenemos la cuenta, creamos la configuración y tenemos nuestro archivo guardado, ahora hace falta crear el redireccionamiento de puertos, para ellos te vas a “Mapping Rules”. Allí verás lo siguiente:

En esta pantalla seleccionarás la opción “Create new Rule”, en ella tendrás que especificar lo siguiente:
- La configuración que creaste anteriormente.
- El protocolo con el que queremos trabajar, para este caso será TCP.
- Se mostrará el host junto al dominio en caso de que lo quieras cambiar.
- Se te sugerirá un puerto por defecto (lo puedes dejar así).
- A que puerto te deseas conectar en el equipo remoto, como es una conexión por ssh se indicará el puerto 22.
- Por último podrás indicar un listado de ip’s que tendrá permiso para conectarse a tu equipo, si lo dejas en blanco cualquiera con los datos y las credenciales del equipo podrá conectarse.

Ya con la configuración y el mapeo del puerto solo tenemos que ir a nuestro equipo (al que queremos conectarnos de forma remota) y ejecutar el siguiente comando para poder levantar el tunel (cuando creas el mapping se muestra el comando con los datos que indicaste):
ssh -i /.ssh/ricardoejemplo.pem ricardo.first@ricardoejemplo–52452.portmap.host -N -R 52452:localhost:22
Y bum! exploto! nahhh ya tienes el tunel activo. Así que nos vamos a otro equipo que esté fuera de la red y tratas de conectarte, yo usé putty:

Seguidamente te pedirá confirmar que la llave es de confianza y listo verás una pantalla como la siguiente donde deberás ingresar las credenciales del equipo:

Una vez colocadas las credenciales estas dentro del equipo!

A partir ya de aquí ya podrás administrar y hacer lo que necesites en el equipo remoto.
Espero les guste esta pequeña guía y les sea de ayuda.
Saludos!