Si pasas mucho tiempo en la línea de comandos puedes haberte encontrado con un molesto problema en el que tu sesión se agota después de un periodo relativamente breve de inactividad. Mientras que esto es deseable desde una perspectiva de seguridad, puede causar problemas cuando usted está tratando de realizar una operación de larga duración.
Usualmente lo que sucede es que su conexión con el servidor se restablece cuando usted ha estado inactivo durante un tiempo, produciendo típicamente el error: Connection reset by peer. Para evitar esto, es necesario establecer una opción Keep Alive en el servidor.
En esta guía, usted aprenderá cómo evitar el tiempo de espera de la conexión SSH y mantener su sesión SSH vivo incluso después de cierta inactividad en Linux.
Aumentar el tiempo de espera de la conexión SSH
En el servidor, dirígete al archivo de configuración /etc/ssh/sshd_config
.
$ sudo vi /etc/ssh/sshd_config
Desplázate y localiza los siguientes parámetros:
#ClientAliveInterval #ClientAliveCountMax
Donde,
-
ClientAliveInterval
: Establece un intervalo de tiempo de espera en segundos después del cual si no se han recibido datos del cliente, sshd enviará un mensaje a través del canal cifrado para solicitar una respuesta del cliente. El valor por defecto es 0, indicando que estos mensajes no serán enviados al cliente. Esta opción se aplica sólo a la versión 2 del protocolo. -
ClientAliveCountMax
: Establece el número de mensajes de cliente vivo que pueden ser enviados sin que sshd reciba ningún mensaje de vuelta del cliente. Si se alcanza este umbral mientras se envían mensajes de vida del cliente, sshd desconectará al cliente, terminando la sesión.
El valor del tiempo de espera viene dado por el producto de los parámetros anteriores i.e.
Timeout value = ClientAliveInterval * ClientAliveCountMax
Por ejemplo, digamos que ha definido sus parámetros como se muestra:
ClientAliveInterval 1200ClientAliveCountMax 3
El valor del tiempo de espera será de 1200 segundos * 3 = 3600 segundos. Esto equivale a 1 hora, lo que implica que su sesión ssh permanecerá viva durante el tiempo de inactividad de 1 hora sin caer.
Alternativamente, puede lograr el mismo resultado especificando el parámetro ClientAliveInterval solo.
ClientAliveInterval 3600
Una vez hecho esto, recargue el demonio OpenSSH para que los cambios surtan efecto.
$ sudo systemctl reload sshd