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:
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
- Genera un par de claves en el cliente: ssh-keygen -t ed25519 -f ~/.ssh/id_autossh.
- Copiar clave pública al servidor remoto: ssh-copy-id -i ~/.ssh/id_autossh.pub usuario@remoto.example.com.
- Verificar acceso sin contraseña: ssh -i ~/.ssh/id_autossh usuario@remoto.example.com.
- 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.
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 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:
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
yAllowUsers
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.
Leave a Reply