Conexión remota persistente con autossh

Conexión remota persistente con autossh en Linux

En entornos de administración de sistemas y operaciones de red, mantener un túnel SSH activo de manera confiable es fundamental para realizar tareas remotas, monitorización y despliegues automatizados. autossh es una herramienta que extiende las capacidades de OpenSSH para garantizar que un túnel SSH se reanude automáticamente ante interrupciones de red o cierres imprevistos.

1. ¿Qué es autossh

autossh es un envoltorio (wrapper) de SSH escrito en C que monitoriza la conexión establecida y, en caso de caída, la restablece automáticamente. Se basa en el envío de paquetes de “prueba” a través del canal de control SSH y, cuando detecta fallo, relanza la sesión.

2. Ventajas frente a SSH puro

  • Reconexión automática: Recupera el túnel sin intervención manual.
  • Monitoreo de estado: Detecta caídas por inactividad o fallos de red.
  • Flexibilidad: Puede usarse en scripts, cron jobs o como servicio de sistema.
  • Ligero: No requiere dependencias adicionales más allá de SSH.

3. Instalación y requisitos

autossh está presente en la mayoría de las distribuciones Linux:

  • En Debian/Ubuntu: sudo apt update sudo apt install autossh
  • En RHEL/CentOS/Fedora: sudo dnf install autossh o sudo yum install autossh
  • En Arch Linux: sudo pacman -S autossh

Requisitos adicionales:

  • Acceso a cliente OpenSSH.
  • Permisos adecuados (clave SSH ya configurada).

4. Sintaxis básica de autossh

La línea de comandos de autossh es muy similar a la de ssh. Ejemplo mínimo:

autossh -M 20000 -f -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -R 2222:localhost:22 usuario@remoto.example.com

Explicación de parámetros clave:

Parámetro Función
-M 20000 Puerto de monitoreo local. Desactívalo con -M 0 si usas opciones propias de SSH.
-f Envía el proceso al fondo (background).
-N No ejecuta comandos remotos útil para túneles.
-R 2222:localhost:22 Crea un túnel inverso del puerto 2222 remoto al localhost:22.

5. Configuración de autenticación con claves SSH

  1. Genera un par de claves en el cliente: ssh-keygen -t ed25519 -f ~/.ssh/id_autossh.
  2. Copiar clave pública al servidor remoto: ssh-copy-id -i ~/.ssh/id_autossh.pub usuario@remoto.example.com.
  3. Verificar acceso sin contraseña: ssh -i ~/.ssh/id_autossh usuario@remoto.example.com.
  4. Opcional: restringir la clave en authorized_keys para el túnel (comando forced-commands).

6. Desplegar autossh como servicio de sistema

Crear unidad systemd para mayor robustez.

[Unit]
Description=autossh Tunnel Service
After=network.target

[Service]
User=usuario
Environment=AUTOSSH_GATETIME=0
ExecStart=/usr/bin/autossh -M 0 -N -R 2222:localhost:22 usuario@remoto.example.com -i /home/usuario/.ssh/id_autossh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Habilitar e iniciar:

sudo systemctl enable autossh-tunnel.service
sudo systemctl start autossh-tunnel.service

7. Monitoreo y diagnósticos

  • Ver logs de systemd: journalctl -u autossh-tunnel.service -f
  • Comprobar procesos activos: ps aux grep autossh
  • Probar conectividad manual: telnet remoto.example.com 20000 (puerto monitor).

8. Integración con VPNs

En ocasiones, se emplea autossh junto con soluciones VPN para asegurar aún más el tráfico:

  • OpenVPN: VPN tradicional con cifrado SSL/TLS.
  • WireGuard: Ligero, moderno y de alto rendimiento.

Al combinar autossh y una VPN, puedes encapsular el tráfico de túneles SSH dentro de un túnel VPN, proporcionando capas adicionales de escudo ante inspecciones de red o firewalls corporativos.

9. Buenas prácticas de seguridad

  • Usar siempre claves con passphrase y ssh-agent.
  • Restringir el puerto remoto y la IP de origen en iptables o firewalld.
  • Actualizar OpenSSH y autossh periódicamente.
  • Emplear opciones SSH como PermitRootLogin no y AllowUsers en sshd_config.

10. Casos de uso avanzados

  • Acceso a consolas de dispositivos IoT a través de túneles inversos.
  • Replicación de bases de datos en entornos remotos con túneles dedicados.
  • Supervisión remota de cámaras IP o sensores sin IP pública.
  • Automatización de despliegues en entornos aislados.

11. Preguntas frecuentes (FAQ)

¿Puedo usar autossh sin puerto de monitoreo

Sí. Con -M 0 delegas la supervisión a las opciones de SSH (ServerAliveInterval y ServerAliveCountMax).

¿Cómo evito encadenar múltiples procesos autossh

Configura AUTOSSH_GATETIME en 0 y comprueba que -M no esté en uso en varias instancias.

¿Se puede usar en Windows

No nativamente en Windows 10/11 podrías usar Windows Subsystem for Linux (WSL) o Cygwin para instalarlo.

12. Conclusión

autossh es una solución robusta y ligera para mantener túneles SSH siempre activos, minimizando tiempos de inactividad y evitando intervenciones manuales. Su integración con servicios systemd y su compatibilidad con claves SSH hacen de él una herramienta esencial en la caja de herramientas de administradores de sistemas y DevOps.

Artículo realizado para profesionales de TI que buscan optimizar la confiabilidad de sus conexiones remotas en Linux.

Download TXT




Deja una respuesta

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