Elecciones 2026Vea quién creemos que merece su voto, según nuestros criteriosLa guía →
ESCRITO EN ESPAÑOL CLARO.
CLAY TRIBUNE.
Publicidad

Ejecute su propio túnel HTTP con SSH y Nginx, sin un servicio en la nube. )

Un truco de un ingeniero francés: SSH y nginx reenvían un puerto localhost con un token encriptado, un túnel personal gratuito. )

Por mitch·4 min de lectura
A glowing server room with a laptop displaying code for an SSH tunnel and nginx proxy.

El autor de una publicación de blog ha construido un truco: un servidor personal reenvía un puerto localhost a través de SSH, luego nginx proxyiza el tráfico de nuevo, con un token con hash protegiendo el acceso. El método no requiere más que OpenSSH y nginx.

Cómo se reenvía el puerto

El truco comienza con un comando de SSH que abre un túnel remoto. El autor se conecta a un servidor llamado web02.luffy.cx y le indica que reenvíe cualquier conexión que llegue a un puerto libre de vuelta a localhost:8080 en su máquina.

El comando se ve así:

Publicidad

ssh -N -R 0:localhost:8080 web02.luffy.cx

El servidor asigna un puerto libre automáticamente. En el ejemplo del autor, se fija en 41535. Ese número se convierte en la cara pública de todo el montaje.

Lo que Nginx hace con él

Una vez asignado el puerto, nginx toma el control. El autor lo configura para que escuche en HTTPS a través de todas las direcciones, enrutando las solicitudes desde https://p41535.ssh.luffy.cx a http://127.0.0.1:41535 en segundo plano.

La configuración incluye una configuración de DNS también. El autor agrega un registro CNAME que apunta *.ssh.luffy.cx a web02.luffy.cx y un certificado comodín a través de Let’s Encrypt, con acme.luffy.cx manejando los desafíos DNS-01.

El resultado es un túnel funcional al que cualquiera puede acceder escribiendo el número asignado en la URL.

Por qué importa el token

El puerto expuesto es el único secreto en el sistema. Cualquiera que adivine el número podría acceder al contenido. El autor soluciona esto envolviendo la URL en un token con hash que incluye un secreto, una marca de tiempo de vencimiento y el puerto en sí.

Utiliza el módulo ngx_http_secure_link_module para calcular el hash. El token aparece como un nombre de usuario en la URL, seguido de la marca de tiempo de vencimiento. Así es como se ve el desglose:

https://6J3jK1WmB15c6WmjW_X-Wg--1789928654@p41535.ssh.luffy.cx/

El cliente envía el nombre de usuario con autenticación básica HTTP. Nginx verifica el hash contra un valor almacenado, que incluye la marca de tiempo, el puerto y un secreto fijo.

El módulo devuelve su estado en una variable. Una respuesta vacía significa que los hashes no coinciden. Un cero significa que el enlace ha expirado. Cualquier otra cosa significa que el token es válido.

Una respuesta vacía significa que los hashes no coinciden. Un cero significa que el enlace ha expirado.

El Script Auxiliar

El enfoque del token funciona, pero es inconveniente. El autor lo admite. Él ofrece un script auxiliar que encuentra el puerto asignado, genera el token y muestra la URL de funcionamiento.

El script busca los procesos de sesión sshd ancestrales para encontrar el número de puerto, ya que OpenSSH no expone el puerto en una variable de entorno. Luego calcula el hash MD5, lo codifica y formatea la salida.

El comando final produce el token directamente:

$ printf '%s %s %s' "$expires" "$port" "$secret" \
| openssl md5 -binary \
| openssl base64 \
| tr +/ -_ | tr -d =

El autor instala el script en el servidor y agrega una entrada a ~/.ssh/config para que los usuarios puedan llamarlo fácilmente.

Nuestra Visión del Truco

Este es un truco ingenioso. Utiliza herramientas estándar en una combinación inteligente. La capa de token agrega seguridad real sin requerir un cliente especial o un servicio comercial.

La desventaja es la fricción. Generar un token a mano es incómodo, y el script auxiliar, aunque efectivo, todavía pide al usuario que ejecute comandos en el servidor.

Pero la idea principal se mantiene. Un servidor personal, un puerto gratuito y una URL con hash pueden reemplazar los servicios de túnel comercial por completo. El autor ha demostrado cómo construirlo usted mismo, y el método vale la pena recordarlo para cualquiera que necesite una exposición temporal a un servicio local.

El truco funciona porque confía en el número de puerto como el secreto y superpone el hash. El script alivia la molestia del cálculo manual. El método del autor es un ejemplo práctico de lo que se puede construir con solo OpenSSH y nginx.

Material fuente: “Túneles HTTP auto-alojados con SSH y Nginx,” bernat.ch.

El Cuaderno

Recibe El Cuaderno.

Las mejores historias del día y cada veredicto nuevo, en español claro, en tu correo a las siete. Un correo al día, nada más.

Enviamos una nota para confirmar. Cada número trae un enlace para darte de baja con un clic.

Publicidad

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Como Afiliado de Amazon, Clay Tribune obtiene ingresos por las compras adscritas que cumplen los requisitos aplicables.