Mantener viva la sesión SSH [cerrado]
Lo uso ssh -p8520 username@remote_host
para 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?
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/config
despué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
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
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.