Tengo, ServerAliveInterval
y en el caso de algunas máquinas, también ClientAliveInterval
configurado en 540 en archivos de configuración de cliente / servidor SSH (supongo que configurarlo en más de eso no sería una buena idea). Trabajo con muchas sesiones de SSH que actualmente se congelan después de unos minutos.
¿Cómo puedo arreglarlo? Lo que quiero es tener una sesión para no congelarse en absoluto, de modo que si abro una sesión a las 8 y no la uso durante 4 horas, por ejemplo, todavía la vuelvo a usar a las 12 sin tener que iniciar sesión nuevamente .
TCPKeepAlive yes
?TCPKeepAlive yes
- depende de la máquina.autossh
...screen
lugar. Pero todavía estoy votando su pregunta porque estoy experimentando el mismo problema después de solo un minuto o dos.Respuestas:
Los cambios que ha realizado
/etc/ssh/ssh_config
y/etc/ssh/sshd_config
son correctos pero aún no tendrán ningún efecto.Para que su configuración funcione, realice estos cambios de configuración en el cliente:
/etc/ssh/ssh_config
ServerAliveInterval El cliente enviará un paquete nulo al servidor cada 100 segundos para mantener viva la conexión
Paquete NULL Es enviado por el servidor al cliente. El cliente envía el mismo paquete al servidor. Un paquete TCP NULL no contiene ningún indicador de control como SYN, ACK, FIN, etc., porque el servidor no requiere una respuesta del cliente. El paquete NULL se describe aquí: https://tools.ietf.org/html/rfc6592
Luego configurando la parte sshd en el servidor.
/etc/ssh/sshd_config
ClientAliveInterval El servidor esperará 60 segundos antes de enviar un paquete nulo al cliente para mantener viva la conexión
TCPKeepAlive está ahí para garantizar que ciertos firewalls no eliminen las conexiones inactivas.
ClientAliveCountMax Server enviará mensajes vivos al cliente aunque no haya recibido ningún mensaje del cliente.
Finalmente reinicie el
ssh server
service ssh restart
oservice sshd restart
dependiendo del sistema en el que se encuentre.fuente
ServerAliveCountMax
también se necesita un alto para que esto sea lo más confiable posible. Y si ambosServerAliveInterval
yClientAliveInterval
están situados lo suficientemente baja, no creo que no habrá necesidad deTCPKeepAlive
. Además, si hay middleboxes, aún pueden perder el estado incluso con todas las configuraciones mencionadas anteriormente configuradas exactamente correctas. Puede ser útil usar MPTCP (si el cliente y el servidor lo admiten).ClientAliveInterval
yClientAliveCountMax
son opciones de servidor ssh, por lo tanto, parasshd_config
y nossh_config
ssh_config
las nuevas sesiones leerá ese archivo. El/etc/environment
archivo es una cosa diferente que tiene el formato deVAR="value"
sin espacios, porVAR = "value"
lo que no sería válido. Buscar de/etc/ssh/ssh_config
esa manera, por ejemplo, leerá:Port 22
oHost *
lo que los tratará como comandosSugerencia personal: uso
screen
en el host remoto; logrará mantener viva su conexión mientras permanezca activa en una terminal.Esto es lo que normalmente agrego
/etc/screenrc
para una identificación rápida de mis sesiones de pantalla:EDITAR: Sugerencias.
La
hardstatus
cadena mostrará una línea de estado inferior como esta:El búfer de desplazamiento hacia atrás también se extiende a 8192 líneas en lugar de las habituales 1000-1500 (dependiendo de la distribución).
fuente
screenrc
archivo? ¿Cómo configuro el sistema la pantalla de inicio / tmux justo después de iniciar sesión?screen
no mantiene viva su conexión ssh. Ejecuta procesos en un terminal virtual independiente del terminal de usuario al que se conecta parassh
que el proceso no dependa de su conexión. Aún perderá sussh
conexión hasta que se resuelva.screen
, aconsejo a los nuevos usuarios para comenzartmux
.Con OpenSSH:
Necesitas habilitar
tanto en su cliente ssh_config (p. ej.
/etc/ssh/ssh_config
o en~/.ssh/config
) como en su servidor SSH de destino que ejecuta OpenSSH (p. ej. / etc / ssh / sshd_config).Entonces, cada vez que su conexión está inactiva, OpenSSH envía un paquete ficticio a su host de destino ...
fuente
The default is ''yes'' (to send TCP keepalive messages), and the server will notice if the network goes down or the client host crashes.
...this means that connections will die if the route is down temporarily, and some people find it annoying.
corte linux.die.net/man/5/sshd_config"[…] network goes down […] client host crashes […] route is down […]"
son errores graves que ninguna configuración SSH puede detectar. El problema principal aquí son las sesiones SSH inactivas, no las fallas de la red. Por lo tanto, para resumirlo: habilíteloTCPKeepAlive yes
tanto en el servidor como en el cliente. - establecidoClientAliveInterval
en el servidor - establecidoIdleTimeout
en el servidor - establecidoClientAliveCountMax
Eso debería ser el truco ...Si el problema es una computadora portátil hibernada o una conexión de red menos que perfecta, recomendaría usar la
mosh
que se ejecutassh
y permite la reconexión automática.Desde el sitio web :
En combinación con
tmux
(o el anteriorscreen
), esto me permite conectarmessh
a un servidor desde mi computadora portátil y permanecer conectado durante días, incluso cuando cambie las conexiones wifi y sobreviva la pérdida de datos móviles.fuente
Verifique la configuración de sshd en la máquina host
/etc/sshd_config
para laIdleTimeout
configuración .fuente