249 votos

Forma de evitar la conexión ssh tiempo de espera y la congelación de la pestaña de terminal

Cuando me conecto a través de terminal ssh a ciertos servidores, por lo que los tiempos de espera y "congela" la terminal (no acepta, no desconecte, no puede Ctrl-C para matar el proceso de ssh ni nada).

Esto es en Ubuntu Gnome-terminal, aunque parece estar pausando el terminal de entrada/salida, y no afecta la operación de la terminal de Gnome software en sí. por lo menos un error con gnome-terminal de un molesto inconsistencia con ssh.

Entonces, ¿hay una manera de evitar recuperar el terminal de conexiones ssh que se ha agotado?

269voto

Peter Eisentraut Puntos 3962

Pulse Enter, ~, . uno después de otro para desconectar de un congelado de la sesión.

La sección "los CARACTERES de ESCAPE" en el ssh hombre página explica los detalles subyacentes.

266voto

Gishu Puntos 59012

sshd (el servidor) cierra la conexión si no se oye nada en el cliente por un tiempo. Usted puede decirle a su cliente para enviar una señal de vida de señal para el servidor de vez en cuando.

La configuración de este se encuentra en el archivo ~/.ssh/config. Para enviar la señal de cada cuatro minutos para remotehost, pon lo siguiente en su ~/.ssh/config.

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

Esto es lo que tengo en mi ~/.ssh/config.

A fin de habilitarla para todos los hosts utilizan:

Host *
  ServerAliveInterval 240

También asegúrese de ejecutar chmod 600 ~/.ssh/config, debido a que el archivo de configuración no debe ser legible por todo el mundo.

39voto

fotos Puntos 341

Incluso aunque esta no es una respuesta directa a tu pregunta, está altamente relacionado con el problema que tienes. En lugar de tratar de mantener la conexión activa (todas las conexiones finalmente mueren) usted puede utilizar el terminal multiplexors, como screen y tmux que mantener activa la sesión en el fondo incluso si el terminal se desconecta.

Esencialmente cuando usted inicie sesión en el servidor SSH se ejecuta inmediatamente screen que va a crear y adjuntar una nueva sesión:

$ screen

A continuación, seguir adelante y hacer su trabajo con la shell como lo haría normalmente. Ahora bien, si la conexión se cae, cuando usted puede conseguir en línea de nuevo y volver a conectar con el servidor a través de SSH, se obtiene una lista de las sesiones con:

$ screen -ls

Para volver a una sesión:

$ screen -r <session>

donde <session> es el PID o un nombre de sesión. Reconectan a su sesión y se puede continuar desde donde lo dejaste.

Incluso se puede separar de la sesión y vuelva a conectar desde casa a recoger desde el punto exacto donde lo dejó. Para desconectar la sesión de uso C-a , seguido por C-d (thats Control + A y, a continuación, Control + D).

No es sencillo tutorial en línea así.

El uso de screen y tmux en servidores remotos se considera una mejor práctica y es muy recomendable. Algunas personas van tan lejos como para tener screen como valor predeterminado shell de inicio de sesión, así que cuando se conecte de inmediato iniciar una nueva screen sesión.

13voto

soc Puntos 10868

Trate de adjuntar -o ServerAliveInterval=30 a la cadena de conexión (30 medio 30 segundos y, por supuesto, puede ajustar)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: