La conexión del servidor OpenSSH se desconecta después de unos minutos de inactividad

OpenSSH

Ya he escrito sobre cómo denegar/permitir acceso SSH. Hoy voy a escribir sobre otro problema interesante que puede causar tiempos de espera de conexión ssh y cómo aumentar el tiempo de espera de conexión SSH en macOS, Linux, *BSD y sistemas similares a Unix.

Básicamente, esta es una característica de seguridad. La conexión SSH se congela o se cae después de N minutos de inactividad. De acuerdo con la página de manual oficial de OpenSSH:

Esto suele ser el resultado de un filtro de paquetes o dispositivo NAT que agota el tiempo de espera de su conexión TCP debido a la inactividad. Por razones de seguridad, la mayoría de las empresas solo usan el protocolo SSH versión 2. Este problema solo ocurrió con la versión 2.

Si trabaja largas horas usando ssh y dejó la estación de trabajo para otro trabajo, el servidor remoto desconectará su conexión. Es un pequeño problema molesto para mí. Entonces podemos deshacernos de este problema de la siguiente manera.

## Arreglar la conexión del servidor OpenSSH se cae después de unos minutos de inactividad

Primero, inicie sesión en el servidor remoto y luego abra su archivo `/etc/ssh/sshd_config`:

# vim /etc/ssh/sshd_config

Modifique la configuración de la siguiente manera:

ClientAliveInterval  30
ClientAliveCountMax  5

Donde:

* ClientAliveInterval: Establece un intervalo de tiempo de espera en segundos (30) después del cual, si no se han recibido datos del cliente, sshd enviará un mensaje a través del canal encriptado para solicitar una respuesta del cliente. El valor predeterminado es 0, lo que indica que estos mensajes no se enviarán al cliente. Esta opción solo se aplica a la versión 2 del protocolo. * ClientAliveCountMax: Establece el número de mensajes vivos (alive) al cliente (5) que pueden enviarse sin que sshd reciba ningún mensaje del cliente. Si se alcanza este umbral mientras se envían mensajes vivos del cliente, sshd desconectará al cliente y finalizará la sesión.

Cierra y guarda el archivo y procedemos a reiniciar el servicio:

# /etc/init.d/ssh restart
# service sshd restart
# systemctl restart sshd.service
# rcctl restart sshd

O la forma que requiera su sistema.

## Aumente el tiempo de espera de conexión SSH utilizando la configuración del lado del cliente

Otra opción es habilitar la opción `ServerAliveInterval` en el archivo `$HOME/.ssh/ssh_config` del cliente. Muy útil cuando no tiene acceso al archivo de configuración sshd de servidores remotos. Abra la aplicación de terminal y luego escriba el siguiente comando:

$ vim .ssh/ssh_config

Agregue o modifique valores de la siguiente manera:

ServerAliveInterval 15
ServerAliveCountMax 3

Donde:

* ServerAliveInterval: Establece un intervalo de tiempo de espera en segundos después del cual, si no se han recibido datos del servidor, ssh enviará un mensaje a través del canal encriptado para solicitar una respuesta del servidor. Por ejemplo, establezca un tiempo de espera de 15 segundos. * ClientAliveInterval: Establece el número de mensajes vivos del servidor que pueden enviarse sin que el comando ssh reciba ningún mensaje del servidor. Si se alcanza este umbral mientras se envían mensajes vivos del servidor, ssh se desconectará del servidor y finalizará la sesión. Los mensajes vivos del servidor se envían a través del canal encriptado y, por lo tanto, no se podrán suplantar.

Por ejemplo, cuando `ServerAliveInterval` se establece en 15 y `ServerAliveCountMax` se deja en el 3, si el servidor deja de responder, ssh se desconectará después de aproximadamente 45 segundos. Nuevamente, esta opción solo se aplica a la versión 2 del protocolo. También puede agregar las opciones anteriores en el archivo `/etc/ssh/ssh_config` en el lado del cliente para todos los usuarios. Consulte los siguientes tutoriales para obtener más información:

* [Las 20 mejores practicas de Seguridad de OpenSSH](https://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html) * [Cómo configurar claves SSH en un sistema Linux/Unix](https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/) * [Llavero: configurar acceso SSH sin contraseña seguro para secuencias de comandos de copia de seguridad](https://www.cyberciti.biz/faq/ssh-passwordless-login-with-keychain-for-scripts/)

## Conclusiones

También podemos usar Mosh (shell móvil) para conectarnos desde un escritorio a un servidor. Es similar a SSH, con características adicionales destinadas a mejorar la usabilidad para los usuarios de dispositivos móviles, especialmente cuando ocurre la discusión frecuente. Lea las páginas de manual de `ssh`, `sshd` y `sshd_config` o `ssh_config` para obtener más información en [línea aquí](https://www.openssh.com/manual.html) o escribiendo el siguiente comando man:

man sshd_config
man sshd