A veces, mi sesión ssh en la terminal se cuelga. ¿Cómo puedo salir de la sesión ssh y volver a conectarme?
Escriba ~.
(es decir, tilde, punto) al comienzo de una línea. En otras palabras, presione Enter, luego ~, luego .. (En algunos idiomas, es posible que deba presionar Shifto Altpara ingresar el ~
carácter).
En términos generales, el ~
carácter es un carácter de escape en una sesión SSH cuando lo 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 ~luego Ctrl+ Z) para suspender la conexión y escriba un comando localmente (ejecute el comando fg
para volver a la sesión SSH)Si desea una tilde al comienzo de una línea, presione ~dos veces.
Si su sesión está bloqueada y el mensaje ya no responde, simplemente puede eliminar la instancia de Terminal. Todos los procesos secundarios asociados con esa instancia, incluida su sesión ssh, se cierran.
Un enfoque más completo, abra un nuevo shell (nueva pestaña o ventana), enumere las sesiones ssh y envíe señales de finalización:
> 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 someuser@someinstance.amazonaws.com
> kill 57139
Si eso no funciona, intente:
> kill -9 57139
No elimine los procesos ssh-agent
o .sshd
O puede abrir el Monitor de actividad y buscar allí sesiones y presionar el botón "Salir del proceso" para ellas:
~.
_ Véase más arriba.Todo lo que necesita hacer para salir de una sesión ssh es escribir exit
en el indicador.
Intenta ingresar Shift+ `+.
broken-pipe
pero prefiero no esperar.~.
. Puede obtener más información en la página de manual de SSH (un poco más de la mitad), y al escribir: ~?
en una sesión SSH activa/conectada, nuevamente, es posible que tenga para presionar enter una vez antes.Según la documentación:
Supported escape sequences:
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - request rekey
~V/v - decrease/increase verbosity (LogLevel)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
~?
, solo copia y pega~. funciona, aunque parece estar totalmente atascado, detiene la conexión ssh y puedes iniciarla de nuevo, pero en mi teclado tengo que presionar Alt+~ luego espacio y luego .
Para mí, al trabajar con Terminal en macOS Mojave 10.14.6, la única solución fue ingresar ~ seguido de Ctrl-Z como se describe en esta respuesta: https://apple.stackexchange.com/a/175670/136875
De la respuesta de Ian en apple.stackexhange, esta es la respuesta para Mac OS X :
La tecla de escape predeterminada para el ssh que se envía con OS X el
~
carácter. Debe ingresarlo inmediatamente después de una nueva línea para que ssh lo respete. Y luego la secuencia de teclas Control- zse usa para suspender y poner en segundo plano una tarea en bash.
Así que prueba esta secuencia de teclas:
Return
~
Control-z
Si funciona verás algo como:
myhost.local:~ |ruby-2.2.0|
> ssh someremotehost
Last login: Fri Mar 6 14:15:28 2015 from myhost
someremotehost:~ |ruby-2.2.0|
> ~^Z [suspend ssh]
[1] + 48895 suspended ssh myremotehost
Bogdan Mart
Seamus
johan alexis duque cadena
Gilles 'SO- deja de ser malvado'
~
no se inserta~
inmediatamente, sino que al escribir, por ejemplo~
, luego sea
insertaã
), es posible que deba escribir un espacio después~
para insertar realmente una tilde, luego escriba el segundo carácter. Consulte también apple.stackexchange.com/questions/219603/…Pablo P
Alt Gr + +
.