Antes de empezar
A continuación esta los post donde se explica como instalar OpenSSH
- Instalar OpenSSH en windows
- Instalar OpenSSH en ubuntu
- Configurar OpenSSH server para producción
- SSH key: guía completa de las llaves públicas y privadas de SSH
- Cómo conectarse a la instancia EC2 desde Windows mediante OpenSSH
- Túnel SSH inverso
Ejemplo practico
En la maquina local se ha expuesto una pagina web, en este caso practico un nginx que carga en el puerto 8000:
Ahora queremos que esta pagina web local se pueda ver en otro equipo de computo como se menciono anteriormente, es decir:
En este caso lo que se pretende es acceder desde el host C a la web del host A, pero como hemos revisado anteriormente no podemos acceder directamente, lo que vamos a hacer es crear un túnel inverso desde host A hasta host B y host C accederá a host B.
Para crear el túnel inverso vamos a necesitar un servido externo en este caso podemos usar:
- Guía de inicio rápido: creación de una máquina virtual Windows en Azure Portal - Azure Virtual Machines | Microsoft Learn
- Crea y después inicia una instancia de VM | Documentación de Compute Engine | Google Cloud
- Crear una instancia EC2 de Amazon AWS | CodigoElectronica
En este caso, he creado una instancia EC2 en AWS, en esta instancia tenemos que asegurarnos de instalar y configurar OpenSSH en Ubuntu server | CodigoElectronica y debemos hacer pruebas para acceder vía SSH con Cómo conectarse a la instancia EC2 desde Windows mediante OpenSSH | CodigoElectronica
ssh -i iot.pem ubuntu@34.234.166.116
Respuesta
Last login: Fri Jul 28 21:16:35 2023 from 201.244.108.81
ubuntu@ip-172-31-84-248:~$
Procederemos a crear el túnel inverso, para ello observemos la siguiente imagen:
El tunel inverso que vamos a crear va a estar conectado desde Host A al Host B, y abriremos un puerto remoto en host B para que al acceder a el, realice la conexión interna al puerto 8000 del host A, debemos asegurarnos de que el servidor puueda recibir peticiones TCP en el puerto 24000 que usaremos como ejemplo para crear el tunel inverso.
En este caso, tenemos habilitado este puerto en el servidor (instancia ec2) para recibir conexion de entrada.
Procedemos a crear el túnel inverso, para ello ejecutamos el siguiente comando:
ssh -i iot.pem -R 24000:localhost:8000 ubuntu@34.234.166.116
Abrira el túen ssh, ahora si ingresamos a la ip http://34.234.166.116:24000 podemos ver la pagina ofrecida por el nginx.