🛠️ Tutorial — Conexión SSH con reenvío de puertos (túnel local)
Este tutorial muestra cómo crear un túnel SSH local para exponer de forma segura un servicio remoto (por ejemplo, una interfaz web interna en el puerto 8443) hacia tu máquina local.
1) Línea
ssh -L 8443:127.0.0.1:8443 carlos@10.77.88.13 -p 22022 -i ~/.ssh/certi_id_ed25519
Qué hace cada parte:
-L 8443:127.0.0.1:8443: crea un túnel local; todo lo que accedas enlocalhost:8443se redirige al127.0.0.1:8443desde el host remoto.carlos@10.77.88.13: usuario y host remoto.-p 22022: puerto SSH no estándar en el servidor remoto.-i ~/.ssh/certi_id_ed25519: ruta a la clave privada usada para autenticación por clave.
2) Requisitos previos
- Tener cliente SSH (OpenSSH) instalado en tu equipo local.
- Acceso autorizado al servidor remoto (cuenta de usuario y/o clave pública en
~/.ssh/authorized_keysdel servidor). - Permisos adecuados en tu archivo de clave privada (
chmod 600 ~/.ssh/certi_id_ed25519). - Red y reglas de firewall que permitan la conexión al puerto SSH configurado.
3) Generar una clave SSH (si no la tienes)
ssh-keygen -t ed25519 -f ~/.ssh/certi_id_ed25519 -C "carlos@laptop"
— Luego copia la clave pública al servidor remoto (método seguro y autorizado):
ssh-copy-id -i ~/.ssh/certi_id_ed25519.pub -p 22022 carlos@10.77.88.13
4) Abrir el túnel SSH
Comando para crear el túnel (ejecútalo en tu máquina local):
ssh -L 8443:127.0.0.1:8443 carlos@10.77.88.13 -p 22022 -i ~/.ssh/certi_id_ed25519
— Después de iniciar la conexión, abre en tu navegador https://localhost:8443 para acceder al servicio remoto como si fuera local.
5) Ejecutar en segundo plano y mantener persistencia
- Para ejecutar el túnel en segundo plano sin abrir shell interactiva:
ssh -f -N -L 8443:127.0.0.1:8443 carlos@10.77.88.13 -p 22022 -i ~/.ssh/certi_id_ed25519
autossh (recomendado sólo para entornos controlados y con autorización administrativa).6) Cómo cerrar el túnel
Encuentra el PID y mata la conexión:
ps aux | grep "ssh -L 8443" kill <PID>
7) Troubleshooting rápido
- Conexión rechazada: verifica que el puerto SSH (22022) esté accesible y no bloquee el firewall.
- Permisos de clave: si SSH se queja, asegúrate de que la clave privada tenga permisos
600. - Servicio remoto no responde: comprueba en el host remoto que el servicio esté escuchando en
127.0.0.1:8443. Si está ligado a otra interfaz, ajusta el destino del reenvío. - Conflicto de puerto local: si ya usas
localhost:8443, cambia el puerto local (ej.-L 9443:127.0.0.1:8443).
8) Buenas prácticas de seguridad
- Usar siempre llaves públicas/privadas y deshabilitar autenticación por contraseña cuando sea posible.
- No reutilizar claves entre distintos servicios o personas; rotarlas periódicamente.
- Restringir las direcciones desde las que puede autenticarse cada clave (opciones
from="..."enauthorized_keyssi aplica). - Limitar el reenvío de puertos en la configuración SSH si no es necesario (
AllowTcpForwarding nopor defecto donde proceda). - Documentar y auditar túneles temporales: quién los abrió, con qué objetivo y cuándo se cerraron.
9) Variantes útiles
- Túnel a puerto remoto distinto:
-L 8080:127.0.0.1:80(redirige localhost:8080 → remoto:80). - Túnel inverso (cuando el servidor no es accesible desde tu cliente):
-R 9000:127.0.0.1:9000(requiere permiso en el servidor).
Nota ética y legal: usa estas técnicas únicamente en entornos autorizados (tus sistemas, laboratorios o dentro de un acuerdo explícito de prueba). La creación de túneles y la recolección de servicios remotos sin permiso es ilegal y puede causar daños.
Consulta adicional y referencias
Puedes profundizar con estas fuentes técnicas (oficiales y seguras):
Leave a Reply