LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

AutoSSH es una gran herramienta para administradores de Linux. SSH es imprescindible, lo usamos a diario. En muchos casos, es suficiente. La herramienta bien diseñada que está haciendo su trabajo. Sin embargo, de vez en cuando necesitamos algo más.

¿Para qué puedo usar AutoSSH?

AutoSSH es una herramienta para monitorear y reiniciar sesiones SSH. Está comprobando el estado de la conexión y reinicia la sesión SSH si es necesario. Es útil para conexiones de Internet no confiables como GSM o en casos en los que los parámetros de conexión cambian de vez en cuando (por ejemplo, el ISP está asignando una nueva IP al servidor desde). Lo estamos usando para mantener un túnel confiable entre nuestros servidores remotos y el servidor de monitoreo principal.

Los servidores remotos están ubicados en lugares donde no se asignan direcciones IP estáticas y no hay posibilidad de abrir puertos en el enrutador. En este caso, la conexión debe iniciarse desde el host remoto. Simplemente estamos creando el túnel que reenvía todas las conexiones al puerto NNNN del host de monitoreo al puerto 22 (SSH) del host remoto. En algunos casos, estamos haciendo lo mismo para el puerto 80 (HTTP) del host remoto si queremos reenviar datos del servidor web.

Uso básico de AutoSSH

AutoSSH está disponible actualmente como paquete en la mayoría de las distribuciones de Linux. Puedes instalarlo usando yum o apt . Una vez instalado, está listo para usar. Sin embargo, hay un requisito previo importante: su SSH debe poder conectarse sin la contraseña . No desea ingresar la contraseña durante cada reconexión, ¿no es así?

El ejemplo básico del comando autossh es:

remote.host$ autossh -N -R 6000:localhost:22 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

El comando anterior debe iniciarse en el host remoto. Simplemente crea el túnel que reenvía el puerto 6000 del host de monitoreo al puerto local 22. Esto significa que ahora puedo ejecutar el siguiente comando en el host de monitoreo:

monitoring.com$ ssh remoteuser@localhost -p 6000

Tenga en cuenta que me estoy conectando al número de puerto 6000 del host local. No es necesario conocer la IP del servidor remoto, el túnel ya está allí. Esto también muestra una cosa importante: solo puede haber un host remoto conectado al puerto único del servidor de monitoreo. Cada conexión adicional debe colocarse en el otro puerto.

¡Pero quiero que se inicie durante el arranque del servidor!

Hoy en día, la forma más conveniente de ejecutar autossh en el momento del arranque es usar el servicio systemd . Creemos el archivo llamado  autossh-tunnel.service  en  /etc/systemd/system/ y peguemos este código en él:

[Unit]
Description=AutoSSH tunnel service Remote port 6000 to local 22
After=network.target

[Service]
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -o "ServerAliveInterval 10" -o "ServerAliveCountMax 3" -N -R 6000:localhost:22 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

[Install]
WantedBy=multi-user.target

Hay algunas cosas importantes a tener en cuenta: primero, la variable de entorno. Systemd no admite la opción & o -f para ejecutar el servicio en segundo plano. La variable de entorno le dice a autossh que no espere a que la primera conexión sea exitosa, sino que vaya inmediatamente a segundo plano y reinicie incluso si esta primera conexión falla. También agregamos ServerAliveInterval y ServerAliveCountMax : esto le dice a SSH que pruebe la conexión cada 10 segundos y asuma la falla después de 3 mensajes fallidos consecutivos. Dicha configuración asegura una rápida recuperación después de la falla de la conexión.

Una vez que tenemos el archivo de servicio creado, debemos informar a systemd que cambiamos algo, podemos iniciar el servicio y podemos habilitarlo para que se ejecute durante el tiempo de arranque:

remote.host$ systemctl daemon-reload
remote.host$ systemctl start autossh-tunnel.service
remote.host$ systemctl enable autossh-tunnel.service

Ahora podemos probar nuestro nuevo túnel de la misma manera que lo hicimos antes.

¿Que más puedo hacer?

También puede crear el túnel que funciona al revés. En algunos casos, lo usamos para reenviar el puerto 80 remoto al puerto local 8080 para reenviar algunas llamadas API. El único cambio que tiene que hacer es cambiar la parte de la configuración. Dicho túnel se puede crear así:

remote.host$ autossh -N -R 8080:localhost:80 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Ahora, en el host remoto, puede acceder a Monitoring.com HTTP abriendo http: //localhost:8080/; la solicitud se reenviará a través del túnel al host de monitoreo.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política