Cuando un desarrollador quiere compartir un sitio en trabajo‑en‑progreso que se ejecuta en localhost, las opciones habituales son servicios comerciales como ngrok o Cloudflare Quick Tunnels, o herramientas auto‑alojadas que requieren un cliente dedicado. Bernat demuestra que el mismo resultado se puede lograr únicamente con el par cliente/servidor de OpenSSH que ya está presente en la mayoría de los servidores y un proxy inverso de nginx.
La técnica se basa en el reenvío de puertos remoto de SSH con un especificador de puerto cero (`ssh -R 0:localhost:8080 user@remote`). Cuando el puerto remoto se establece en cero, el servidor SSH asigna un puerto libre de número alto y lo devuelve. Nginx se configura con un nombre de servidor mediante expresión regular (`~^p(?<port>\d{5})\.ssh\.example\.cx$`) que captura ese puerto y lo utiliza en una directiva `proxy_pass` para reenviar la solicitud a `http://127.0.0.1:$port`. Para evitar que cualquiera que adivine el puerto acceda al servicio, la configuración emplea el módulo `ngx_http_secure_link_module` de nginx. El cliente construye una URL que contiene un hash MD5 codificado en base64 de una marca de tiempo de expiración, el puerto asignado y un secreto compartido; nginx verifica el hash y devuelve 401 o 410 si la firma falta o ha expirado.
Como el rango de puertos efímeros del núcleo proporciona solo unos 15 bits de entropía, el puerto asignado puede ser forzado por fuerza bruta, por eso el enlace firmado añade una capa de protección necesaria. El método sigue requiriendo un registro DNS comodín (`*.ssh.example.cx`) y un certificado TLS, que se pueden automatizar con Let’s Encrypt. Para los usuarios que prefieren un servidor de túnel listo para usar con funciones adicionales, el proyecto de código abierto sish ofrece túnelado HTTP(S), WS(S) y TCP, una consola web para inspeccionar el tráfico, alias TCP para hosts de salto privados y enrutamiento basado en SNI, todo ejecutándose como un único servidor SSH.
El artículo menciona sish como un proyecto de código abierto que ofrece un servidor de túnel listo para usar con funciones adicionales más allá de la configuración básica de SSH/nginx.