GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo evitar que SSH se desconecte si ha estado inactivo por un tiempo

Para que quede claro:estoy buscando una solución que comience una vez después de iniciar sesión, y luego quiero usar esa terminal, irme, volver dos horas después y continuar trabajando, sin escribir nada antes de irme.

El problema es que hay algo (normalmente un cortafuegos o un equilibrador de carga) que está eliminando las sesiones inactivas. Si configura las sesiones keepalives, las keepalives evitarán que los dispositivos de red consideren la sesión como inactiva.

Corrección de Linux/Unix/Cygwin OpenSSH :
La solución más simple es habilitar los keepalives del cliente ssh; este ejemplo enviará un ssh keepalive cada 60 segundos:

ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>

Si desea habilitar esto en todas sus sesiones, póngalo en su /etc/ssh/ssh_config o ~/.ssh/config :

ServerAliveInterval 60

Para obtener más información, consulte el ssh_config página de manual

Corrección de masilla :

Guarde esto en su "Configuración predeterminada" de PuTTY...

  • Haga clic en Conexión
  • Escriba 60 en "Segundos entre keepalives"


Además de la respuesta de Mike Pennigton, me gustaría informarle sobre ServerAliveCountMax también.

  • El ServerAliveInterval enviará un keepalive cada x segundos (el valor predeterminado es 0 , que deshabilita esta función si no se establece en otra cosa).
  • Esto se hará ServerAliveCountMax veces si no se recibe respuesta. El valor predeterminado de ServerAliveCountMax es 3 (consulte la página de manual ssh_config).

Ejemplo:si establece ServerAliveInterval a 60 y deja ServerAliveCountMax tal como está, esto significa que el keepalive solo esperará a 3 * 60 = 180 seconds = 3 minutos antes de dejar de fumar.

Para aumentar esto a, p. 2 horas de tratar de mantener viva la conexión, puedes hacer:

Por comando:

Por lo tanto, debe considerar establecer

ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>

Persistente:

Para hacerlo persistente, escríbalo en /etc/ssh/ssh_config (se aplicará a todo el sistema) o ~/.ssh/config (aplicará solo para el usuario):

ServerAliveInterval 60
ServerAliveCountMax 120

Nota

Como señaló correctamente dislick, esto podría no ser lo que desea, dependiendo de su situación:

  • Si desea terminar rápidamente la sesión tan pronto como el servidor ya no responda, debe elegir un valor bajo para ServerAliveCountMax .
  • Si está más interesado en mantener una conexión ya establecida (por ejemplo, va en tren y tiene una latencia alta), debe elegir un valor más alto para ServerAliveCountMax para permitir ssh para seguir intentando restablecer la conexión.

Véase también:

  • unix.stackexchange.com:¿cuál es el tiempo de inactividad predeterminado para OpenSSH?

Estoy usando Mobaxterm y también me he encontrado con este problema. Mobaxterm también incluye una opción para mantener vivo al cliente cuando está inactivo. Ir a Settings -> Configuration -> SSH . Hay una sección titulada SSH settings , marca la opción SSH keepalive . Entonces el problema debería desaparecer.


Linux
  1. Cómo usar SSH en Linux desde Android

  2. ¿Cómo detectar si el Shell está controlado desde Ssh?

  3. ¿Cómo escribir la contraseña para varias ventanas?

  4. ¿Cómo evitar que `ls` ordene la salida?

  5. Linux:¿cómo iniciar sesión como usuario en Tty desde Ssh?

Cómo configurar la autenticación multifactor para SSH en Linux

Cómo evitar que se agote el tiempo de espera de SSH

Cómo SSH en su servidor Linux desde Windows

Cómo SSH en WSL2 en Windows 10 desde una máquina externa

Cómo SSH en una máquina con Windows 10 desde Linux O Windows O en cualquier lugar

Cómo evitar que las conexiones SSH se desconecten por inactividad al usar MobaXterm