¿Qué es el Túnel SSH (SSH Tunneling) y Para Qué Sirve?
Amigo, si llevas un tiempo en el área de la tecnología, ya te habrás topado con SSH. Pero lo que la gente no siempre se da cuenta es del superpoder que esconde: el tunelado, o SSH Port Forwarding. Para mí, esta es una de esas herramientas “fundamentales” que, incluso con la avalancha de frameworks y soluciones “cloud native” que surgen cada día, sigue siendo absurdamente útil y, sinceramente, subestimada [exam-labs.com].
Básicamente, un túnel SSH es como crear un puente seguro y cifrado entre dos puntos en la red [strongdm.com]. Piensa así: tienes un servicio ejecutándose en una máquina en la nube, detrás de un firewall astuto, y quieres acceder a él desde tu portátil aquí en la Tierra. En lugar de abrir un montón de puertos y exponer el servicio a todo el mundo, usas SSH para crear un camino secreto, un túnel, que solo tú conoces. Todo el tráfico que pasa por ese túnel está cifrado, lo que significa que nadie en el camino puede espiar lo que estás haciendo [medium.com]. Es la seguridad que tanto buscamos, ¿verdad?
Sirve para muchas cosas, como acceder a una base de datos interna que solo acepta conexión desde la red privada, o depurar una aplicación web que está ejecutándose en un servidor remoto como si estuviera en tu máquina [exam-labs.com]. Para mí, la mayor ventaja es la capacidad de sortear firewalls y restricciones de red sin necesidad de una VPN completa, que a menudo es una exageración para una tarea puntual.
[!CALLOUT tipo=“opinião sincera”] Mucha gente gasta una energía tremenda aprendiendo herramientas complejas de red, cuando SSH ya tiene la solución para el 80% de los problemas de conectividad segura. Es como querer comprar un cohete para ir a la panadería, cuando una bicicleta ya lo resuelve. Menos es más, especialmente cuando el “menos” ya es una tecnología tan robusta y presente en casi cualquier servidor Linux.
En esencia, vamos a aprender a ‘reenviar’ puertos de una máquina a otra de forma segura. Esto hace que el tráfico parezca originarse en el servidor SSH, engañando a los firewalls y permitiendo el acceso. Es una gran ayuda para desarrolladores, sysadmins y arquitectos de seguridad. Y lo mejor: no necesitas software extra la mayoría de las veces, ya que SSH ya viene instalado en la mayoría de los sistemas tipo Unix [digitalocean.com].
Cómo Crear un Túnel SSH: Port Forwarding Local y Remoto
Ahora que ya entendemos la belleza del túnel SSH, vamos a poner manos a la obra. Existen tres tipos principales de tunelado: local, remoto y dinámico [builtin.com]. Cada uno tiene su truco y sirve para una situación específica. Te mostraré los dos más utilizados ahora: el local y el remoto.
Port Forwarding Local (Local Forwarding)
Este es el tipo más común y, en mi humilde opinión, el más útil para el día a día del desarrollador. Permite que accedas a un servicio en la red remota como si estuviera ejecutándose en tu máquina local [oneuptime.com]. Imagina que tienes una base de datos MySQL ejecutándose en un servidor en la nube, en el puerto 3306, y esta base de datos solo acepta conexiones desde la red interna del centro de datos. No quieres exponer el puerto 3306 directamente a internet, ¿verdad? Ahí entra el local forwarding.
Creas un túnel desde tu portátil (máquina local) hacia el servidor remoto, y apuntas un puerto de tu portátil al puerto del servicio en el servidor. OpenSSH puede hacer esto usando la opción -L [digitalocean.com].
El comando es más o menos así:
ssh -L [puerto_local]:[host_remoto_objetivo]:[puerto_remoto_objetivo] [usuario]@[servidor_ssh]
Vamos a desmitificar esto:
[puerto_local]: Es el puerto en tu ordenador que usarás para acceder al servicio. Puede ser cualquier puerto libre, como 8080, 9000, 3307, etc.[host_remoto_objetivo]: Es la dirección IP o nombre de dominio del servidor donde el servicio realmente se está ejecutando, en la red interna del servidor SSH.[puerto_remoto_objetivo]: Es el puerto en el que el servicio realmente está escuchando enhost_remoto_objetivo.[usuario]@[servidor_ssh]: Es el usuario y la IP/dominio del servidor SSH que usarás como “puente”. Es a este servidor al que tienes acceso SSH directo.
Después de establecer esta conexión, si quieres acceder al MySQL que está en el servidor remoto, simplemente conecta tu cliente MySQL en localhost:[puerto_local] (por ejemplo, localhost:3307). SSH se encarga de llevar el tráfico de forma segura a través del túnel hasta host_remoto_objetivo:puerto_remoto_objetivo. ¡Es mágico!
Port Forwarding Remoto (Remote Forwarding)
Este es el hermano menos famoso, pero igualmente poderoso. El remote forwarding hace lo opuesto al local: expone un servicio de tu máquina local a la red remota [builtin.com]. Piensa en una situación donde tienes un servidor web ejecutándose en tu máquina, en el puerto 8000, y quieres que un colega, que solo tiene acceso al servidor SSH en la nube, pueda acceder a ese servicio. O, un escenario más común, para hacer un “SSH inverso”, útil cuando tu máquina local está detrás de un NAT o firewall que te impide recibir conexiones desde fuera.
El comando usa la opción -R:
ssh -R [puerto_remoto_servidor_ssh]:[host_local_objetivo]:[puerto_local_objetivo] [usuario]@[servidor_ssh]
Decodificando:
[puerto_remoto_servidor_ssh]: Es el puerto en el servidor SSH que quedará abierto y que tu colega usará para acceder a tu servicio.[host_local_objetivo]: Generalmente eslocalhost(o127.0.0.1), porque el servicio que quieres exponer está ejecutándose en tu propia máquina.[puerto_local_objetivo]: Es el puerto del servicio que está ejecutándose en tu máquina.[usuario]@[servidor_ssh]: De nuevo, el usuario y la IP/dominio del servidor SSH que será el puente.
Con este túnel activo, tu colega en la red del servidor SSH puede acceder a tu servicio web local apuntando el navegador a localhost:[puerto_remoto_servidor_ssh] en el propio servidor SSH. O, si el servidor SSH está configurado para ello, puede acceder desde otra máquina en la misma red del servidor SSH, usando la IP del servidor SSH y el puerto configurado. Es una forma genial de colaborar o de ‘perforar’ firewalls cuando no tienes control total de la red.
Paso a Paso: Configurando Túneles SSH en la Práctica
Bien, la teoría es importante, pero la práctica es lo que marca la diferencia. Te daré los comandos exactos y algunos consejos para no enredarte al crear tu túnel SSH.
Configurando Port Forwarding Local
Vamos a usar el ejemplo de la base de datos MySQL que mencioné. Digamos que la IP de tu servidor SSH es 192.168.1.100, tu usuario es devops, la base de datos está en 10.0.0.5 en el puerto 3306. Quieres acceder a ella en tu máquina local a través del puerto 3307.
- Abre la terminal en tu máquina local: Asegúrate de que tienes el cliente SSH instalado (en la mayoría de los Linux/macOS, ya viene).
- Ejecuta el comando:
- bash
- ssh -L 3307:10.0.0.5:3306 devops@192.168.1.100
- Autentícate: Si es la primera vez que te conectas a este servidor, te preguntará si confías en la clave (escribe yes). Luego, introduce tu contraseña o usa tu clave SSH.
- Mantén la conexión activa: La ventana de la terminal debe permanecer abierta. Mientras esté activa, el túnel funciona.
- Accede al servicio: Ahora, abre tu cliente MySQL favorito (o cualquier aplicación que necesite acceder a la base de datos) y configúralo para conectar en localhost:3307. ¡Es como si la base de datos estuviera en tu máquina!
Un consejo importante: si el puerto local que elegiste (como 3307) ya está en uso en tu máquina, SSH te avisará. ¡Elige otro! Y para evitar que la conexión SSH se caiga si no la estás usando, puedes añadir las opciones -N (no ejecuta comandos remotos, solo reenvía) y -f (coloca SSH en segundo plano) al comando:
ssh -L 3307:10.0.0.5:3306 devops@192.168.1.100 -N -f
Esto es genial para dejar el túnel ejecutándose en segundo plano. Para matar el proceso, necesitarías encontrar su PID (con ps aux | grep ssh) y usar kill [PID].
Configurando Port Forwarding Remoto
Ahora, el escenario inverso. Tienes un servidor web ejecutándose en tu máquina local en el puerto 8000 (como un python -m http.server 8000). Tu servidor SSH en la nube es 192.168.1.100 y quieres que el servicio sea accesible allí en el puerto 8080 del servidor SSH.
- Inicia tu servicio local: Asegúrate de que el servicio que quieres exponer está ejecutándose en tu máquina, en el puerto deseado (ej: 8000).
- Abre la terminal en tu máquina local: Sí, el comando se ejecuta desde tu máquina, no desde el servidor SSH.
- Ejecuta el comando:
- bash
- ssh -R 8080:localhost:8000 devops@192.168.1.100
- Autentícate: Lo mismo, contraseña o clave SSH.
- Mantén la conexión activa: De nuevo, la ventana de la terminal debe permanecer abierta.
- Accede al servicio remotamente: Ahora, cualquiera que tenga acceso al servidor SSH (192.168.1.100) puede abrir un navegador en el propio servidor SSH e ir a localhost:8080. Si el servidor SSH está configurado para ello (lo que no siempre es el valor predeterminado por seguridad), otras máquinas en la misma red del servidor SSH también podrán acceder usando la IP del servidor SSH y el puerto 8080.
Un pequeño truco aquí: por defecto, SSH en el servidor remoto solo permite que el puerto reenviado (8080 en el ejemplo) sea accedido desde localhost en el propio servidor. Para permitir que otras máquinas en la red del servidor SSH accedan, necesitas añadir la opción -g al comando SSH (y quizás configurar GatewayPorts yes en el /etc/ssh/sshd_config del servidor SSH, pero eso ya es tema para otro día y tiene implicaciones de seguridad):
ssh -R 8080:localhost:8000 devops@192.168.1.100 -g
Para quienes son más visuales, un video sobre cómo crear un túnel SSH puede aclarar bastante las ideas. Es un concepto que, una vez que ‘hace clic’, ya no lo olvidas.
Bonus: Port Forwarding Dinámico (Dynamic Forwarding)
Este es el “canivete suizo” de los túneles SSH. Crea un proxy SOCKS en tu máquina local que puede reenviar cualquier tráfico a la red remota [builtin.com]. Es como transformar tu servidor SSH en un proxy para tu máquina. Esto es útil para navegar por internet como si estuvieras en el servidor remoto, acceder a varios servicios en la red remota sin configurar un túnel para cada uno, o incluso para sortear algunas restricciones de red de tu lado.
El comando es con la opción -D:
ssh -D [puerto_local_proxy] [usuario]@[servidor_ssh]
Por ejemplo:
ssh -D 8080 devops@192.168.1.100
Después de ejecutar esto, configuras tu navegador (o cualquier aplicación) para usar un proxy SOCKS en localhost:8080. Todo el tráfico que pase por este proxy será enrutado a través de tu servidor SSH. Para mí, es la forma más elegante de tener una “VPN temporal” para tareas específicas [superuser.com]. ¡Es genial para probar cosas desde fuera de la red interna de la empresa, ¿sabes?!
Ventajas y Ejemplos de Uso de los Túneles SSH
Las ventajas de usar túneles SSH son tantas que, a veces, hasta olvidamos lo que costaba antes de conocerlos. La principal, sin duda, es la seguridad de datos sensibles. Todo el tráfico que pasa por el túnel está cifrado, lo que protege tus credenciales, datos de bases de datos y cualquier otra información de curiosos [strongdm.com].
Otra ventaja es la capacidad de sortear restricciones de red. ¿Cuántas veces te has visto bloqueado por un firewall que no te dejaba acceder a un servicio interno? Con el túnel SSH, usas el servidor SSH como un intermediario seguro, y el firewall solo te ve conectándote al puerto 22 del servidor SSH (el puerto estándar de SSH), sin darse cuenta de lo que ocurre dentro del túnel [exam-labs.com]. ¡Es el ingenio brasileño de la ciberseguridad, pero de una manera legítima!
¿Y los ejemplos de uso? Ah, esos son muchos:
- Acceder a una interfaz web interna: Imagina un panel de administración de un sistema legado que solo se ejecuta en la red interna. Con un túnel local, accedes a él desde tu navegador como si estuvieras en la misma sala del servidor.
- Administrar bases de datos remotas: Como en nuestro ejemplo de MySQL, puedes usar tu cliente de base de datos favorito para administrar instancias remotas sin exponer el puerto de la base de datos a internet.
- Depurar aplicaciones: ¿Tienes una API ejecutándose en un entorno de staging que solo acepta llamadas de otros servicios internos? Puedes tunelar ese puerto a tu máquina y usar Postman o Insomnia para probar como si estuvieras allí dentro.
- Crear un proxy seguro: Usando el tunelado dinámico (
-D), puedes configurar tu navegador para enrutar el tráfico a través del servidor SSH. Esto es genial para acceder a sitios restringidos por geolocalización o para añadir una capa extra de privacidad a tu navegación. - Acceder a máquinas detrás de NAT/Firewall: El port forwarding remoto es una bendición para quienes tienen servidores o dispositivos en redes domésticas (o IoT) que necesitan ser accedidos desde fuera, pero no tienen IP pública o están detrás de NATs complejos. Tú ‘empujas’ la conexión hacia fuera, a tu servidor SSH.
- Transferencia de archivos segura: Aunque
scpysftpson más comunes, puedes tunelar un puerto a un servidor FTP o NFS que no es seguro y añadir la encriptación de SSH.
[!CALLOUT tipo=“dica de mestre”] Para quienes trabajan con microservicios o sistemas distribuidos, la capacidad de acceder a servicios específicos de forma aislada y segura, sin la sobrecarga de una VPN completa, es un antes y un después. El SSH tunneling no es solo para seguridad, también es para productividad. ¡Menos tiempo configurando, más tiempo codificando!
En 2026, con el aumento de la complejidad de las arquitecturas de nube y la descentralización de los entornos de desarrollo, dominar el SSH tunneling se ha convertido casi en un arte. Es una herramienta que te da una ‘superpotencia’ para resolver problemas de conectividad que, de otra manera, serían un inmenso dolor de cabeza.
Seguridad del Túnel SSH, Alternativas y Buenas Prácticas
A pesar de toda la magia y utilidad, es fundamental hablar sobre seguridad. El túnel SSH es inherentemente seguro porque usa la criptografía del protocolo SSH. Pero, como dicen, “con grandes poderes vienen grandes responsabilidades”. Una configuración inadecuada puede abrir brechas serias [remote.it].
Riesgos y Vulnerabilidades
- Exposición Inadvertida: Si usas el port forwarding remoto (
-R) y permitesGatewayPortsen tu servidor SSH, puedes terminar exponiendo un servicio de tu máquina local a internet sin querer. Ya he visto a muchos desarrolladores haciendo esto y luego preguntándose por qué el sitio web de su universidad estaba siendo accedido por bots chinos. - Backdoors: Lamentablemente, el tunelado SSH puede ser usado por personas malintencionadas para crear ‘backdoors’ en redes corporativas [cisco.com]. Un empleado con acceso SSH a un servidor puede crear un túnel remoto para exponer un servicio de su máquina en la red interna de la empresa, o viceversa, burlando las políticas de seguridad.
- Evasión de Firewalls: Aunque es una ventaja, también es un riesgo. Si un atacante consigue acceso SSH a un servidor, puede usar el tunelado para enviar tráfico no-SSH (como HTTP, FTP) dentro del túnel, sorteando firewalls que inspeccionan solo el puerto 22 [cisco.com]. Esto es un riesgo real desde 2024 [cisco.com].
Boas Práticas Essenciais
- Usa Claves SSH, no contraseñas: Las contraseñas son más fáciles de ser adivinadas o interceptadas. Las claves SSH son mucho más seguras. Y, por favor, ¡usa una frase de contraseña fuerte en tu clave!
- Restringe el acceso SSH: Da acceso SSH solo a quien realmente lo necesita. Usa grupos de usuarios, límites de IP y
fail2ban. - Verifica la huella digital de la clave del servidor: Cuando te conectas a un servidor SSH por primera vez, muestra la ‘huella digital’ de la clave. Siempre verifica si corresponde a la clave esperada del servidor. Si no corresponde, puede ser un ataque man-in-the-middle [cisco.com]. Es molesto, lo sé, ¡pero es crucial!
- Desactiva
PermitRootLogin: Nunca permitas que el usuariorootinicie sesión directamente vía SSH. - Monitorea los logs: Mantente atento a los logs de SSH (
/var/log/auth.logen Linux) para identificar actividades sospechosas. - Usa
AllowTcpForwardingcon sabiduría: En el archivosshd_configdel servidor SSH, puedes controlar si el tunelado está permitido y para qué usuarios. Desactívalo si no es necesario. - Puertos altos: Al configurar el tunelado local o remoto, prefiere puertos altos y no estándar (por encima de 1024) que no sean comúnmente usados por otros servicios.
Alternativas al Túnel SSH
Aunque el túnel SSH es poderoso, no es la única solución, ni siempre la mejor para todos los casos.
- VPNs (Virtual Private Networks): Para acceso a redes enteras o equipos más grandes, una VPN es más adecuada. Crea una red virtual segura que conecta tu máquina a la red remota, como si estuvieras físicamente allí. Es más completa, pero también más compleja de configurar y mantener.
- SDP (Software-Defined Perimeter) / Zero Trust Network Access (ZTNA): Son soluciones más modernas y robustas que ofrecen control de acceso granular y basado en identidad, en lugar de solo red. El acceso es ‘just-in-time’ y de ‘least-privilege’, perfecto para grandes entornos corporativos.
- Cloudflare Tunnel (anteriormente Argo Tunnel): Para exponer servicios internos a internet de forma segura, sin abrir puertos en el firewall, es una alternativa excelente. Crea un túnel de salida desde tu servidor a Cloudflare.
- Tailscale / Zerotier: Estas herramientas crean redes mesh VPN entre tus dispositivos, facilitando el acceso a cualquier máquina en cualquier red sin preocuparse por firewalls o IPs públicos.
Al final, el tunelado SSH es una herramienta increíble que, si se usa con inteligencia y responsabilidad, puede simplificar mucho la vida de quienes trabajan con tecnología. Pero, como cualquier herramienta poderosa, exige respeto y un buen conocimiento de sus riesgos. Así que, adelante, experimenta, pero siempre con la seguridad en mente, ¿entendido?
Fuentes
- https://builtin.com/software-engineering-perspectives/ssh-port-forwarding — A Complete Guide to SSH Port Forwarding ↩
- https://community.cisco.com/t5/security-knowledge-base/what-is-ssh-tunneling-or-ssh-port-forwarding-what-are-the-risks/ta-p/4998925 — What is SSH Tunneling or SSH Port Forwarding? What are the risks? ↩
- https://www.digitalocean.com/community/tutorials/ssh-port-forwarding — How To Create SSH Tunnels (Port Forwarding) ↩
- https://www.exam-labs.com/blog/the-quiet-power-of-ssh-port-forwarding-in-cybersecurity-architecture — The Quiet Power of SSH Port Forwarding in Cybersecurity Architecture ↩
- https://isabellecda.medium.com/tunelamento-ssh-ssh-tunneling-2fe466e95823 — Tunelamento SSH (SSH Tunneling) ↩
- https://oneuptime.com/blog/post/2026-03-20-ssh-local-port-forwarding-ipv4/view — SSH Local Port Forwarding: A Comprehensive IPv4 Guide ↩
- https://www.remote.it/resources/ssh-port-forwarding-risks-and-safer-alternatives — SSH Port Forwarding: Risks and Safer Alternatives ↩
- https://www.strongdm.com/blog/ssh-tunneling — What is SSH Tunneling? ↩
- https://superuser.com/questions/361215/how-secure-ssh-dynamic-port-forwarding — How secure SSH dynamic port forwarding? ↩
Lee también
- Crear Chatbot WhatsApp IA 2026: Guía Esencial y Gratuita
- Crear Sitios Web con IA Sin Código 2026: Guía Esencial
- Crear Chatbot WhatsApp IA: Guía Paso a Paso 2026
¿Listo para escalar esta idea?
Narratron convierte temas como este en guiones de YouTube optimizados para retención en menos de 2 minutos — hook magnético, estructura, SEO completo, descripción con timestamps y prompt de miniatura listos. 50 créditos gratis, sin tarjeta.