Configurar servidor SSH para evitar timeout en CentOS/RHEL

La sesión expira debido a la falta de actividad o intercambio de datos entre el cliente y el servidor.

Normalmente, las conexiones que no tienen actividad son cortadas por un Firewall. Esto puede resultar bastante molesto para los adminstradores.

La solución en el caso de que esto suponga un problema es bien sencilla. Basta con configurar dos parámetros en el servidor SSH. En concreto se trata de los parámetros ClientAliveInterval y ClientAliveCountMax. El primer parámetro establece el tiempo en el que, en caso de estar la conexión SSH inactiva, el servidor SSH enviará una petición al cliente para comprobar si sigue existiendo la conexión, o en otras palabras, para comprobar si el cliente sigue “vivo”. El segundo parámetro indica cuantas peticiones con el fin anterior sin respuesta se van a permitir como máximo antes de dar por finalizada la conexión.

Dicho de otro modo, configurando adecuadamente los parámetros anteriores, el servidor SSH en caso de encontrarse una sesión inactiva, enviará peticiones al cliente para comprobar que la conexión sigue existiendo y no cerrará la sesión SSH a menos que realmente la conexión se pierda.

Estos parámetros se configuran en /etc/ssh/sshd_config y una configuración típica es:

ClientAliveInterval 10
ClientAliveCountMax 3

Lo que quiere decir esta configuración es que en las sesiones inactivas el servidor comprobará que la conexión sigue activa cada 10 segundos y si es así no cerrará la sesión. En el caso de que realmente se interrumpa la comunicación entre el servidor y el cliente, el servidor la dará por “muerta” a los 3 intentos fallidos, es decir, en 30 segundos (10×3).

El valor por defecto de ClientAliveInterval es 0, y suele estar comentado. Por tanto, eso significa que no se van a realizar las comprobaciones anteriores y de ahí que nuestra sesión caduque al poco tiempo de dejar de usarla.

Por último, comentar que realmente sólo es estrictamente necesario el parámetro ClientAliveInterval ya que el valor por defecto de ClientAliveCountMax es precisamente 3. Sin embargo, no está de más ponerlo.

One thought on “Configurar servidor SSH para evitar timeout en CentOS/RHEL

Deja un comentario

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