Para mantener viva la conexión , puede verificar en /etc/ssh/ssh_configla línea donde dice ServerAliveInterval, que le dice con qué frecuencia (en segundos) su computadora enviará un paquete nulo para mantener viva la conexión. Si tiene un 0 que indica que su computadora no está tratando de mantener viva la conexión (está deshabilitada), de lo contrario le indica con qué frecuencia (en segundos) está enviando el paquete mencionado anteriormente. Intente poner 120 o 240, si todavía está cortando su conexión, puede bajar, tal vez a 5, si con ese número no sucede, tal vez sea su enrutador el que está descargando la conexión a la memoria libre.
Para matarlo cuando se cuelga , puede usar el carácter de escape ssh:
~.
Es decir, presione la tilde y luego el punto, si no funciona, presione Entrar antes de presionar eso, eso cerrará la conexión de inmediato.
Ok, puedes matar la conexión con ~., ¡gran consejo! Pero, ¿qué hace realmente?
CousinCocaine
Lo único de lo que estaba confundido era si tenía que reiniciar sshd o no, pero parece que simplemente salir de la sesión y volver a conectar hizo el truco
dgig
A menudo el ~. no me funciona por varios minutos. ¿Porqué es eso?
Sridhar Sarnobat
2
La ubicación de ssh_configestá /etc/ssh/ssh_configen Mac OS X. Editaría la respuesta yo mismo, pero no tengo suficiente representante en este sitio para hacerlo.
Erik B
¿Debo poner esto en el cliente o el servidor? Creo cliente, pero puede ser más claro.
EralpB
23
Usted puede:
Configure su sistema, en todo el sistema, para todas las conexiones Editando : / etc / ssh / ssh_config
Y agregue la línea:
ServerAliveInterval10
O bien, por servidor ~ / .ssh / config
Host keepsdroppingme.comServerAliveInterval10
Lo que esto básicamente hace es enviar un paquete de mantener vivo, cada 10 segundos ...
También puedes intentar usar el impresionante proyecto mosh . Manejará con gracia las pérdidas de red, las máquinas se apagarán, etc. y felizmente restaurará la conexión cuando tenga una red en funcionamiento nuevamente.
Otra solución más tradicional es usar tmux en la máquina remota. En ese caso, es posible que todavía tenga una tubería rota, pero si vuelve a conectar su shell y las aplicaciones estarán esperando justo como las dejó.
En realidad, eso es exactamente lo que estoy haciendo ahora.
Dan
5
Las diversas respuestas aquí están en conflicto con respecto a la ruta exacta a los archivos de configuración. Tal vez es diferente en diferentes unixes? ¡Sugiero leer las páginas man en su sistema!
En man ssh (1) , busque el texto: config . En mi sistema, puedo elegir entre los archivos de configuración de todo el sistema o de este usuario (y las rutas son extrañamente diferentes).
En man ssh_config (5) , busque el texto: vivo . En mi sistema, parece que necesito configurar ServerAliveInterval y ServerAliveCountMax .
Lo que funcionó para mí, en macOS 10.12 Sierra, es poner las siguientes dos líneas en ~ / .ssh / config:
ServerAliveInterval20ServerAliveCountMax180
Ahora puedo enviar ssh a mi servidor Ubuntu 16.04 sin desconectar durante 20 * 180 segundos = 1 hora. ¡Me alegró el día!
Acabo de resolver este problema, agregue estas líneas en $HOME/.ssh/config.
Host*ServerAliveInterval120TCPKeepAlive no
La configuración TCPKeepAlive nole dice al cliente que asuma que la conexión sigue siendo buena hasta que una solicitud del usuario demuestre lo contrario, lo que significa que las interrupciones temporales de la conexión mientras su término ssh está inactivo en segundo plano no matarán la conexión.
~.
, ¡gran consejo! Pero, ¿qué hace realmente?ssh_config
está/etc/ssh/ssh_config
en Mac OS X. Editaría la respuesta yo mismo, pero no tengo suficiente representante en este sitio para hacerlo.Usted puede:
Configure su sistema, en todo el sistema, para todas las conexiones Editando : / etc / ssh / ssh_config Y agregue la línea:
O bien, por servidor ~ / .ssh / config
Lo que esto básicamente hace es enviar un paquete de mantener vivo, cada 10 segundos ...
fuente
También puedes intentar usar el impresionante proyecto mosh . Manejará con gracia las pérdidas de red, las máquinas se apagarán, etc. y felizmente restaurará la conexión cuando tenga una red en funcionamiento nuevamente.
Otra solución más tradicional es usar tmux en la máquina remota. En ese caso, es posible que todavía tenga una tubería rota, pero si vuelve a conectar su shell y las aplicaciones estarán esperando justo como las dejó.
fuente
Las diversas respuestas aquí están en conflicto con respecto a la ruta exacta a los archivos de configuración. Tal vez es diferente en diferentes unixes? ¡Sugiero leer las páginas man en su sistema!
En man ssh (1) , busque el texto: config . En mi sistema, puedo elegir entre los archivos de configuración de todo el sistema o de este usuario (y las rutas son extrañamente diferentes).
En man ssh_config (5) , busque el texto: vivo . En mi sistema, parece que necesito configurar ServerAliveInterval y ServerAliveCountMax .
Lo que funcionó para mí, en macOS 10.12 Sierra, es poner las siguientes dos líneas en ~ / .ssh / config:
Ahora puedo enviar ssh a mi servidor Ubuntu 16.04 sin desconectar durante 20 * 180 segundos = 1 hora. ¡Me alegró el día!
fuente
Reconecta automáticamente ssh después de dormir o interrupción wifi
Instale autossh desde MacPorts o Homebrew:
brew install autossh
Abrir terminal y ejecutar
autossh -M 20000 -f [SSH ARGUMENTS GO HERE]
Desconecta tu wifi o pon tu Mac a dormir.
Cuando se vuelve a conectar a wifi, la sesión ssh se volverá a conectar automáticamente.
Ssh automáticamente después de iniciar sesión
Jon Stacey escribió una publicación de blog sobre la activación automática de una sesión ssh cuando inicia sesión.
Instale autossh desde MacPorts o Homebrew:
brew install autossh
Cree un flujo de trabajo de Automator con un script bash.
fuente
Agregue estas dos líneas a
/etc/ssh/ssh_config
:fuente
Acabo de resolver este problema, agregue estas líneas en
$HOME/.ssh/config
.La configuración
TCPKeepAlive no
le dice al cliente que asuma que la conexión sigue siendo buena hasta que una solicitud del usuario demuestre lo contrario, lo que significa que las interrupciones temporales de la conexión mientras su término ssh está inactivo en segundo plano no matarán la conexión.fuente