¿Qué es el reenvío de puertos SSH y qué problemas de la vida real resuelve?

El protocolo SSH no es solo una conexión de extremo a extremo a través de la cual puede acceder al símbolo del sistema de un servidor remoto, sino un protocolo que puede admitir múltiples flujos de datos simultáneos, de los cuales el reenvío de puertos es compatible con un tipo.

El reenvío de puertos, por lo tanto, es una configuración en la que se le dice a SSH que abra un puerto TCP y escuche el tráfico y luego lo envíe a través del túnel SSH para retransmitirlo en el otro extremo a un host y puerto específicos.

(Tenga en cuenta que UDP no es compatible: debe usar otras herramientas para cambiar los paquetes UDP en conexiones TCP y luego puede hacer un túnel a través de SSH).

Como ejemplo: en casa, puedo estar ejecutando un servicio web en mi escritorio en el que estoy desarrollando algo; esto está escuchando en el puerto 80. Actualmente estoy sentado en un café conectado a su punto de acceso inalámbrico, y he tenido una idea y me gustaría verificar algo. Sin embargo, como está en mi máquina de escritorio en casa y no puedo acceder a ella desde Internet, puedo configurar un puerto hacia adelante desde un puerto de mi máquina a mi escritorio (suponiendo que mi puerto SSH se reenvía a través del enrutador a mi escritorio) :

ssh -L8080: localhost: 80 [correo electrónico protegido]

Esto le dice a SSH que cree un puerto local en la máquina en la que estoy ahora ( L ), escuche en el puerto 8080 , y luego envíe el tráfico recibido a ese host local a través de la máquina remota al puerto 80 . Por lo tanto, puedo ir a Page en localhost: 8080 en mi navegador y parece que me estoy conectando al servidor como si estuviera en mi computadora portátil.

Una de las grandes ventajas es que esto puede pasar por alto los firewalls; en los servidores, puede desconectar los puertos y los servicios para que no se conecten de forma remota, pero si tiene SSH instalado, aún puede conectarse a ellos mediante el reenvío de puertos. Además, el canal de comunicación es seguro: incluso si accedo a él a través de http: // y los datos no están cifrados entre mi navegador y mi servidor, se envían a través de un canal seguro, por lo que nadie puede leer las comunicaciones. Esto puede ser útil para acceder a servicios que pueden no admitir el cifrado de redes inseguras o no confiables.

Hay una gran cantidad de usos que he hecho de esta función a lo largo de los años para ayudar con las migraciones de servidores, firewalls, acceso proxy, pruebas remotas, etc. y, aunque no es algo que uso todos los días, es una herramienta extremadamente útil en El arsenal de SSH.