En sistemas donde conectamos por SSH para administrarlos, por ejemplo, sistemas operativos Linux, hosts VMWare ESXi o routers, nos podemos encontrar con el problema de la desconexión por inactividad.
Para evitar este problema, basta con que dejemos ejecutando un comando que envíe tráfico entre el cliente y el servidor SSH, es decir, que muestre algo por pantalla que vaya cambiando, por ejemplo: un ping continuo o el comando top de Linux o esxtop para hosts VMWare ESXi.
Sin embargo, la forma correcta para evitar desconexión por inactividad es configurar un KeepAlive.
La idea es que durante la inactividad, el cliente o servidor SSH envíe tráfico nulo al otro extremo de la conexión, para evitar la desconexión.
El parámetro se puede configurar tanto en el lado servidor como en el lado cliente.
Si lo configuramos en el lado servidor, este enviará tráfico nulo al cliente SSH para mantener viva la conexión.
Si podemos acceder a la configuración del servidor SSH, esta será la forma más cómoda para configurar KeepAlive: Todos los clientes que se conecten al mismo, se les aplicará la configuración.
Sin embargo, nos podremos encontrar con que el sistema al que queremos conectar, no tengamos acceso a la configuración del servicio SSH, por ejemplo, si accedemos con un usuario sin permisos de root.
En este caso, no nos quedará otra opción, que configurar el KeepAlive desde el lado cliente.
Veamos como configurar KeepAlive para evitar desconexiones en sesiones SSH por inactividad desde el lado servidor o bien desde el lado cliente:
Desde el lado servidor SSH:
Localizamos el fichero de configuración de SSH, en la mayoría de distribuciones la ubicación sera: /etc/ssh/ssh_config
La configuración a añadir será:
ClientAliveInterval XX
ClientAliveCountMax YY
Donde:
XX = Número de segundos que esperará el cliente SSH a enviar un paquete NULL al lado servidor.
YY = Número de veces sin respuesta que esperará el lado servidor para desconectar.
Deberemos reiniciar el servicio de SSH para que el cambio sea efectivo.
Desde el lado cliente SSH:
Si el cliente es Linux:
Editar el fichero de configuración:
A nivel de usuario: ~/.ssh/config
o bien para todos los usuarios: /etc/ssh/ssh_config
Añadir:
Host *
ServerAliveInterval XX
ServerAliveCountMax YY
ServerAliveCountMax YY
Donde:
XX = Número de segundos que esperará el cliente SSH a enviar un paquete NULL al lado servidor.
YY = Número de veces sin respuesta que esperará el lado servidor para desconectar.
El cliente SSH de Linux, leerá la configuración del fichero y enviará el KeepAlive.
Otra forma es pasar directamente los parámetros de KeepAlive desde el cliente de Linux.
Por ejemplo:
ssh -o ServerAliveInterval=XX usuario@IP-Servidor-SSH
Si el cliente es Windows:
Por ejemplo, utilizando PuTTy:
En las propiedades de la sesión, en el apartado "Connection", deberemos configurar:
"Sending of null packets to keep session active", "Seconds between keepalives" e introducir un número.
También deberemos marcar la opción:
"Enable TCP keepalives (SO_KEEPALIVE option).
Recordemos que podemos exportar la configuración de PuTTy a otros equipos y también realizar cambios masivos en la configuración de las sesiones:
No hay comentarios:
Publicar un comentario