Mantener viva la sesión SSH [cerrado]

Resuelto Haifeng Zhang asked hace 10 años • 5 respuestas

Lo uso ssh -p8520 username@remote_hostpara iniciar sesión en el servidor remoto.

Asunto :

Siempre está conectado y funciona correctamente cuando estoy en el lugar de trabajo. Desafortunadamente, la terminal se congela entre 10 y 15 minutos después de conectarme al servidor remoto desde casa.

No hay ningún informe de error/tiempo de espera en la consola, pero el cursor ya no puede moverse.

Cuando entro wpara verificar los usuarios que iniciaron sesión, algunos usuarios de inicio de sesión zombies están allí y tengo que eliminarlos manualmente.

Esto es bastante molesto. ¿Alguien puede ayudarme?

Haifeng Zhang avatar Aug 01 '14 23:08 Haifeng Zhang
Aceptado

El demonio ssh (sshd), que se ejecuta en el lado del servidor, cierra la conexión desde el lado del servidor si el cliente se queda en silencio (es decir, no envía información). Para evitar la pérdida de conexión, indique al cliente ssh que envíe una señal de vida al servidor de vez en cuando.

La configuración para esto está en el archivo $HOME/.ssh/config, cree el archivo si no existe (el archivo de configuración no debe ser legible en todo el mundo, así que ejecútelo chmod 600 ~/.ssh/configdespués de crear el archivo). Para enviar la señal cada, por ejemplo, cuatro minutos (240 segundos) al host remoto, coloque lo siguiente en ese archivo de configuración:

Host remotehost
    HostName remotehost.com
    ServerAliveInterval 240

Para habilitar el envío de una señal de mantenimiento de conexión para todos los hosts, coloque el siguiente contenido en el archivo de configuración:

Host *
    ServerAliveInterval 240
rockymonkey555 avatar Aug 01 '2014 19:08 rockymonkey555

Quería una solución única:

ssh -o ServerAliveInterval=60 [email protected]

Lo almacené en un alias:

alias sshprod='ssh -v -o ServerAliveInterval=60 [email protected]'

Ahora puedes conectarte así:

me@MyMachine:~$ sshprod
Ryan avatar Apr 05 '2015 15:04 Ryan

Para aquellos que se preguntan, @edward-coast

Si desea configurar el mantenimiento de vida para el servidor , agregue esto a /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 2

ClientAliveInterval : establece un intervalo de tiempo de espera en segundos después del cual, si no se han recibido datos del cliente, sshd(8) enviará un mensaje a través del canal cifrado para solicitar una respuesta del cliente.

ClientAliveCountMax : establece el número de mensajes activos del cliente (ver más abajo) que pueden enviarse sin que sshd(8) reciba ningún mensaje del cliente. Si se alcanza este umbral mientras se envían mensajes de cliente activo, sshd desconectará el cliente y finalizará la sesión.

Jeff Davenport avatar May 19 '2016 17:05 Jeff Davenport