10 votos

¿Cómo descongelar el terminal cuando la conexión SSH muere?

Estoy usando Mac 10.9.5 con bash shell. De vez en cuando, cuando me meto en otra máquina y luego la conexión se corta (por ejemplo, se cae Internet o me mudo a una nueva ubicación), la ventana de terminal con la sesión SSH abierta se congela y la única forma en que parece que puedo avanzar es cerrándola e iniciando una nueva sesión.

¿Hay alguna manera de configurar las cosas de tal manera que si la conexión de la sesión SSH muere, se me devolverá a mi shell bash normal, tal y como estaba antes de ejecutar mi comando SSH?

9voto

shsteimer Puntos 8749

Se puede suspender y luego matar el ssh proceso que está colgado. Para ello hay que emitir la secuencia de escape, suspender el ssh y, a continuación, utilizar kill -9 para matar ese proceso.

La clave de escape por defecto para el ssh que viene con OS X la ~ carácter. Tienes que introducirlo inmediatamente después de una nueva línea para que ssh lo respete. Y luego la secuencia de claves Control - z se utiliza 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 así:

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

Esta línea de salida:

[1]  + 48895 suspended  ssh myremotehost

le indica el ID del proceso del ssh en su máquina. Es 48895 en este ejemplo. Ese proceso sigue en marcha, sólo ha sido suspendido y puesto en segundo plano. Tienes que matarlo.

Puede hacerlo con el kill comando. Quieres matarlo con prejuicios así que usa el comando -9 cuando llame a kill así:

myhost.local:~ |ruby-2.2.0|
> kill -9 48895
[1]  + 48895 killed     ssh someremotehost

Sólo hay que utilizar el PID de su ssh cuando se llama a ese comando en lugar del 48895 PID que utilicé arriba.

Y tendrás tu prontitud de vuelta.

Como alternativa, puede abrir una segunda ventana de Terminal y utilizar ps para encontrar el ssh en la lista de procesos y emitir el kill -9 contra el PID. Sin embargo, eso anula el proceso de recuperar el prompt en la ventana original de la Terminal, ¿no es así?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X