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-terminal
aunque 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-terminal
que 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_config
si 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
screen
ytmux
que 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
screen
lo 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-a
seguido deC-d
(esoControl + A
y luegoControl + D
).También hay un sencillo tutorial en línea .
Usar
screen
ytmux
en servidores remotos se considera una práctica recomendada y es muy recomendable . Algunas personas llegan a tenerscreen
su shell de inicio de sesión predeterminado, por lo que cuando se conectan, comienzan inmediatamente una nuevascreen
sesión.fuente
Intente agregar
-o ServerAliveInterval=30
a su cadena de conexión (30
significa 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_config
Contenido:
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 0
en 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