Cuando me conecto a través de ssh a ciertos servidores, el tiempo de espera y "congela" el terminal (no acepta entradas, no se desconecta, no puede Ctrl-C para matar el proceso ssh ni nada).
Esto está en Ubuntu, gnome-terminalaunque parece estar pausando la entrada / salida del terminal, y no afecta la operación del software del Terminal GNOME. Por lo tanto, es menos un error gnome-terminalque una molesta inconsistencia con ssh.
Entonces, ¿hay alguna manera de prevenir / recuperar el terminal de las conexiones ssh que han excedido el tiempo de espera?
ssh
terminal
timeout
gnome-terminal
Kzqai
fuente
fuente

Respuestas:
sshd (el servidor) cierra la conexión si no escucha nada del cliente por un tiempo. Puede decirle a su cliente que envíe una señal de señal de vida al servidor de vez en cuando.
La configuración para esto está en el archivo
~/.ssh/config. Para enviar la señal cada cuatro minutos a host remoto, ingrese lo siguiente en su~/.ssh/config.Esto es lo que tengo en mi
~/.ssh/config.Para habilitarlo para todos los hosts use:
También asegúrese de ejecutar
chmod 600 ~/.ssh/config, porque el archivo de configuración no debe ser legible en todo el mundo.fuente
~/.ssh/config?Prensa Enter, ~, .uno tras otro para desconectarse de una sesión congelado.
La sección "CARACTERES DE ESCAPE" en la página de manual de ssh explica los detalles subyacentes.
fuente
EscapeChar ~en/etc/ssh/ssh_config(o~/.ssh/ssh_configsi se prefiere).EscapeChar ~ya es el valor predeterminado incorporado.Aunque esto no sea una respuesta directa a su pregunta, está muy relacionada con el problema que tiene. En lugar de tratar de mantener viva la conexión (todas las conexiones eventualmente mueren) puede usar multiplexores de terminal, como
screenytmuxque mantienen la sesión viva en segundo plano, incluso si su terminal se desconecta.Esencialmente, cuando inicia sesión en el servidor SSH, ejecuta inmediatamente
screenlo que creará y adjuntará una nueva sesión:Luego continúas y haces tu trabajo con el shell como lo harías normalmente. Ahora, si se corta la conexión, cuando pueda volver a conectarse y volver a conectarse al servidor a través de SSH, obtendrá una lista de las sesiones actuales con:
Para volver a adjuntar a una sesión:
donde
<session>está el PID o el nombre de una sesión. ¡Volverá a conectarse a su sesión y podrá continuar desde donde lo dejó!Incluso puedes separar la sesión y volver a conectarte desde casa para continuar desde el punto exacto donde lo dejaste. Para separar la sesión que usa
C-aseguido deC-d(esoControl + Ay luegoControl + D).También hay un sencillo tutorial en línea .
Usar
screenytmuxen servidores remotos se considera una práctica recomendada y es muy recomendable . Algunas personas llegan a tenerscreensu shell de inicio de sesión predeterminado, por lo que cuando se conectan, comienzan inmediatamente una nuevascreensesión.fuente
Intente agregar
-o ServerAliveInterval=30a su cadena de conexión (30significa 30 segundos y, por supuesto, se puede ajustar)fuente
También puede establecer un intervalo de tiempo de espera inactivo desde el lado del servidor SSH:
Expediente:
/etc/ssh/ssh_configContenido:
Esto funciona exactamente de la misma manera que la configuración del cliente, pero los paquetes nulos se envían desde el servidor, en lugar del cliente.
Extraído de:
http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html
fuente
Para las personas que desean evitar que el cliente agote el tiempo de espera en primer lugar.
Podría intentar establecer
ConnectTimeout 0en el archivo de configuración. El valor 0 significa que la conexión se mantendrá viva indefinidamente a menos que se cierre.su archivo de configuración (o ssh_config) podría verse así:
fuente