🛠️ 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 en localhost:8443 se redirige al 127.0.0.1:8443 desde 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_keys del 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 
  • Si necesitas reconexión automática en entornos de laboratorio, considera 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="..." en authorized_keys si aplica).
  • Limitar el reenvío de puertos en la configuración SSH si no es necesario (AllowTcpForwarding no por 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

Your email address will not be published. Required fields are marked *