Timeouts SSH – Keepalive SSH para el cliente o el servidor

Cada vez que me pongo a trabajar en un ordenador que no es el mio, me encuentro con el problema de las sesiones ssh que dan timeout. Para resolver esto, a veces sirve con abrir un screen, aunque no soy muy amigo de tener screen en servidores de producción, así que una forma facil de conseguir estabilidad es añadir un keepalive SSH. Para ello podemos optar por solucionarlo en el lado del servidor o en el lado del cliente. La ventaja de configurarlo en el lado del cliente es que no hay que hacer cambios en la configuración del servidor. Por otra parte, esto puede no funcionar en todos los escenarios. Si lo cambiamos en el lado del servidor, se aplicará a todos los clientes que se conecten. Implementar el keepalive ssh en el lado cliente o servidor será una decisión tuya 100%.

 

Keepalive SSH en el lado del cliente

Añadiremos unas lineas en /etc/ssh/ssh_config o bien en ~/.ssh/config (En el primer caso se aplican a todos los usuarios del sistema y en el segundo no, como gustes).

ServerAliveInterval 60
ServerAliveCountMax 5

Con esto enviamos un keepalive al servidor ssh cada 60 segundos, y si pasados 5 intentos, no responde, el cliente cerrará la sesion.

Keepalive SSH en el lado del servidor

Añadiremos las siguientes lineas en /etc/ssh/sshd_config

TCPKeepAlive yes
ClientAliveInterval 60
ClientAliveCountMax 3