¿Qué puedo hacer cuando mi sesión SSH está atascada?

109

A veces mi sesión ssh en la terminal se cuelga. ¿Cómo puedo salir de la sesión ssh y volver a conectar?

Kit Sunde
fuente

Respuestas:

196

Escriba ~.(es decir, tilde, punto) al comienzo de una línea. En otras palabras, de prensa Enter, a continuación ~, a continuación .. (En algunos idiomas, es posible que deba presionar Shifto Altingresar el ~carácter).

En términos generales, el ~carácter es un carácter de escape en una sesión SSH cuando se escribe al principio de una línea. Escriba Enterluego ~?para ver la lista de comandos de escape. Los más comunes son

  • ~. para terminar la conexión
  • ~^Z(presione y ~luego Ctrl+ Z) para suspender la conexión y escribir un comando localmente (ejecute el comando fgpara volver a la sesión SSH)

Si desea una tilde al comienzo de una línea, presione ~dos veces.

Gilles
fuente
7

Todo lo que necesita hacer para salir de una sesión ssh es escribir exiten el indicador.

Intenta ingresar Shift+ `+.

daviesgeek
fuente
2
Ya no acepta la entrada del usuario, está literalmente estancado. En Ubuntu hay una combinación de teclado que finaliza la sesión que puede usar en casos como estos. Después de un tiempo, la sesión finalizará, broken-pipepero prefiero no esperar.
Kit Sunde
1
@ Kit, arreglé mi respuesta. Lo siento por eso. No me di cuenta de que te referías a una sesión SSH completamente estancada.
daviesgeek
Por lo general, solo espero a que se agote el tiempo de espera. A pesar de que conozco estos comandos, siempre olvido que puedo usarlos para acelerar el proceso de recuperar mi shell. Tenga en cuenta que @Gilles responde también, es posible que tenga que presionar Enter / Return una vez antes ~. Puede obtener más información en la página de manual de SSH (un poco más de la mitad), y escribiendo: ~?en una sesión de SSH activa / conectada, nuevamente, puede que tenga presionar enter una vez antes.
Jason Salaz el
7

Si su sesión se cuelga y el mensaje ya no responde, puede matar la instancia de Terminal y todos los procesos secundarios asociados con esa instancia, de los cuales su sesión ssh es una, deben eliminarse junto con ella.

Si realmente desea ser exhaustivo, aunque puede abrir una nueva instancia de Terminal, busque sesiones ssh en la lista de procesos y elimínelas a través de la línea de comandos:

> ps -ef  |grep ssh
501  1332   142   0 20Dec11 ??         0:01.33 /usr/bin/ssh-agent -l
501 57172 57150   0  1:58pm ttys000    0:00.01 grep ssh
501 57139 57133   0  1:57pm ttys002    0:00.03 ssh -i/Users/ian/code/ec2-keys/id_rsa-gsg-keypair [email protected]

> kill 57139

Si eso no funciona, intente:

> kill -9 57139

No mates el ssh-agentproceso.

O puede abrir Activity Monitor y buscar allí sesiones y presionar el botón de matar para ellas:

Monitor de actividad de filtrado para sesiones ssh

Ian C.
fuente
+1, esto es lo que hago. A menudo, cuando dejé una sesión ejecutándose, y luego la conexión se rompe accidentalmente o duermo la computadora portátil, hace que ssh se congele. Abro una nueva pestaña de consola y elimino el PID del proceso ssh (o cierro la pestaña ssh y abro una nueva)
suspender el
¿Funciona el atajo de teclado en tu Mac sin matar tediosamente el proceso?
Rafael Bugajewski
1
Utilizar ~.. Véase más arriba.
Snowcrash
0

~. funciona, aunque parece estar totalmente atascado, detiene la conexión ssh y puede iniciarlo de nuevo, pero en mi teclado tengo que presionar Alt + ~ luego espacio y luego.

Hannu
fuente