¿Cómo descongelar la terminal cuando la connection SSH muere?

Estoy usando Mac 10.9.5 con Bash Shell. Ocasionalmente, cuando entro en otra máquina y luego la connection muere (por ejemplo, Internet se cae o me muevo a una nueva location), la window del terminal con la session SSH abierta se congela y la única forma en que parezco poder avanzar es cerrarla y comenzar una nueva session.

¿Hay alguna forma de configurar cosas tales que si la connection de la session SSH se muere, me devolverán a mi shell bash normal, como era antes de que ejecutara mi command SSH?

  • comportamiento extraño de pgrep en bash script
  • Bash Script que llama a osascript deja de funcionar cuando se ejecuta por launchd
  • iMac iPhone USB Internet Sharing
  • Bash no ejecuta el script en /opt/local/etc/bash_completion.d/
  • Shell o Applescript para retrasar el cierre?
  • AppleScript vs. Bash script?
  • Ruby 2.0.0 no se puede instalar debido a openssl
  • Cómo usar un nombre de aplicación para eliminarlo de un script
  • Equivalente 'Byobu' de Linux para mac
  • No se puede crear un enlace simbólico dentro de una carpeta diferente
  • acceso directo para abrir múltiples progtwigs y hacer que abran un file específico
  • ¿Cómo puedo hacer que los files invisibles (como el perfil de bash) estén visibles en el buscador?
  • One Solution collect form web for “¿Cómo descongelar la terminal cuando la connection SSH muere?”

    Puedes suspender y luego matar el process ssh que está colgado. Para hacer esto, debe emitir la secuencia de escape, suspender el process ssh y luego usar kill -9 para matar ese process.

    La key de escape pnetworkingeterminada para el ssh que viene con OS X es el carácter ~ . Debe ingresarlo inmediatamente después de una nueva línea para que ssh lo respete. Y luego, la secuencia de teclas Controlz se usa para suspender y generar el background de una tarea en bash.

    Entonces testing esta secuencia de teclas:

    Regreso

    ~

    Controlz

    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 

    le dirá la identificación del process del process ssh en su máquina. Es 48895 en este ejemplo. Ese process todavía se está ejecutando, simplemente se ha suspendido y retrocedido. Tienes que matarlo.

    Puedes hacer eso con el command kill . Quieres matarlo con prejuicios, así que usa la opción -9 cuando llames a kill así:

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

    Simplemente use el PID de su process ssh cuando llame a ese command en lugar del PID 48895 que utilicé anteriormente.

    Y tendrás tu respuesta de vuelta.

    Alternativamente, puede abrir una segunda window de Terminal y usar ps para encontrar el process ssh en la list de processs y emitir la llamada kill -9 contra el PID. Sin embargo, ese tipo de derrotas en el process de recuperar el post en la window original de la Terminal, ¿no?

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).