Estoy usando Mac 10.9.5 con shell bash. Ocasionalmente, cuando me conecto a otra máquina y luego la conexión muere (por ejemplo, Internet se cae o me muevo a una nueva ubicación), la ventana de la terminal con la sesión SSH abierta se congela y la única forma en que parece que puedo seguir adelante es para cerrarlo y comenzar una nueva sesión.
¿Hay alguna forma de configurar las cosas de tal manera que si la conexión de la sesión SSH muere, volveré a mi shell bash normal, como estaba antes de ejecutar mi ssh
comando?
Puede suspender y luego eliminar el ssh
proceso que se colgó. Para hacer esto, debe emitir la secuencia de escape, suspender el ssh
proceso y luego usar kill -9
para matar ese proceso.
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
Esta línea de salida:
[1] + 48895 suspended ssh myremotehost
decirle el ID de proceso del ssh
proceso en su máquina. Está 48895
en este ejemplo. Ese proceso aún se está ejecutando, solo se suspendió y se puso en segundo plano. Tienes que matarlo.
Puedes hacerlo con el kill
comando. Quieres matarlo con prejuicio, así que usa la -9
opción cuando llames kill
así:
myhost.local:~ |ruby-2.2.0|
> kill -9 48895
[1] + 48895 killed ssh someremotehost
Simplemente use el PID de su ssh
proceso cuando llame a ese comando en lugar del 48895
PID que usé anteriormente.
Y tendrás tu aviso de vuelta.
Alternativamente, puede abrir una segunda ventana de Terminal y usar ps
para encontrar el ssh
proceso en la lista de procesos y emitir la kill -9
llamada contra el PID. Sin embargo, eso anula el proceso de recuperar el aviso en la ventana de Terminal original, ¿no es así?
scott dudley
phatmann
scott dudley
ServerAliveCountMax 4
yServerAliveInterval 15
, si el cliente SSH no recibe una respuesta del servidor después de 4*15=60 segundos, debería desconectarse automáticamente. Consulte la página del manual para obtener más detalles.clarktfu
return
luego~.
más información apple.stackexchange.com/questions/35524/…