Proceso SSH no eliminado en la máquina remota cuando el sistema remoto se desconecta inesperadamente

8

Tengo una pregunta para la que no he podido encontrar una respuesta. Tengo dos computadoras, ambas con Ubuntu 12.04. Mantengo una de mis computadoras en casa y uso SSH para conectarme desde la otra computadora ("remota"). La computadora remota puede conectarse a la computadora doméstica sin problemas. La computadora remota también tiene SetAliveInterval configurado en 60 en / etc / ssh / ssh_config, para que la conexión no falle si me alejo de la computadora por un momento.

Ocasionalmente, mi conexión a internet en mi computadora remota se interrumpe. Las interrupciones de Internet hacen que mi túnel SSH se cierre (por supuesto). Sin embargo, cuando restauro la conectividad a Internet y me vuelvo a conectar a la computadora doméstica usando un nuevo túnel SSH, puedo ver #ps axque el antiguo proceso de conexión SSH todavía se está ejecutando. Esto es un problema porque uso un directorio de inicio encriptado en la computadora del hogar, que no permite que los archivos se vuelvan a encriptar hasta que se elimine la conexión SSH (ahora muerta).

¿Hay alguna manera de configurar sshd_config en la computadora de la casa para que detecte automáticamente cuándo una conexión ha muerto y la finalice?

JL
fuente

Respuestas:

5

Prueba screen o tmux . En el lado del servidor, o en ambos lados si lo desea:

sudo apt-get install tmux

Después de iniciar sesión, inicie tmux .

tmux

Si la conexión se interrumpe, inicie sesión nuevamente a través de ssh y vuelva a conectar la sesión tmux . Para descubrir el número de sesión:

tmux ls

El resultado podría ser algo como esto:

0: 1 ventanas (creado el martes 25 de diciembre 19:20:40 2012)

Conéctese a la sesión numerada de tmux de esta manera:

tmux attach -t 0

Entonces estás de vuelta donde lo dejaste. No tendrás que matar las sesiones. Solo esperan su próxima visita. O, si solo quieres matar la sesión ...

En el lado del servidor, vea la /etc/ssh/sshd_configconfiguración de ClientAliveInterval y ClientAliveCountMax . ( man 5 ssh_config)

ClientAliveInterval 300
ClientAliveCountMax 0

Una vez que se hayan cambiado según sus preferencias, reinicie el servidor SSH.

sudo /etc/init.d/ssh restart

El 300 son segundos (cinco minutos).


fuente
¡Esto es exactamente lo que estaba buscando! Comenzaré con ClientAliveInterval, y definitivamente también probaré tmux. ¡Gracias!
JL
1
Una tercera opción además de Screen y Tmux es Byobu : Website , Wikipedia . Desde el sitio web: "Originalmente fue diseñado para proporcionar mejoras elegantes a la pantalla GNU, por lo demás funcional, simple y práctica, para la distribución del servidor Ubuntu. Byobu ahora incluye perfiles mejorados, combinaciones de teclas convenientes, utilidades de configuración y notificaciones de estado del sistema conmutables tanto para el administrador de ventanas GNU Screen como para el multiplexor de terminales Tmux más moderno, y funciona en la mayoría de las distribuciones de Linux, BSD y Mac ".
sierrasdetandil
1

Podrías probar moshInstalar mosh , un reemplazo para SSH construido sobre SSH. Es compatible con conectividad itinerante e intermitente, por lo que su sesión de Mosh (SSH) continuaría donde la dejó cada vez que se restablezca su conexión a Internet después de una interrupción.

Deberá instalar Mosh en ambas máquinas.

Referencias

Flimm
fuente