Frecuentemente me meto en mi caja en casa desde la escuela, pero generalmente cuando cambio de clases y mi computadora se suspende, la tubería se rompe. Sin embargo, ssh simplemente se bloquea - Ctrl+ c, Ctrl+ zy Ctrl+ dno tienen ningún efecto.
Es molesto tener que reiniciar mi terminal, y aún más molesto tener que cerrar y volver a crear una nueva ventana de pantalla.
Entonces, mi pregunta, ¿hay una manera fácil de hacer que ssh muera correctamente (es decir, cuando la tubería falla "normalmente", saldrá con un mensaje sobre una tubería rota)? ¿O tengo que averiguar qué es el PID y eliminarlo manualmente?
screen -x
: PRespuestas:
Las claves normales se reenvían durante la
ssh
sesión, por lo que ninguna de ellas funcionará. En cambio, use las secuencias de escape. Para matar la sesión actual hit posteriormente Enter ↵, ~, ..Más de estas secuencias de escape se pueden enumerar con Enter ↵, ~, ?:
Puede cerrar la lista de secuencias de escape presionando enter.
Tenga en cuenta que debido a que presionar ~~hace
ssh
que se envíe el en~
lugar de interceptarlo, puede abordar Nssh
conexiones anidadas presionando ~ N veces. (Esto solo se aplica a los correos ~electrónicos que siguen directamente a enter). Es decir, que enter~~~~~.finaliza unassh
sesión de 5 capas de profundidad y mantiene intactos los otros 4.fuente
~
hay una tecla muerta , la secuencia de teclas esEnter
~
Space
.
.EscapeChar ~
en/etc/ssh/ssh_config
(o~/.ssh/ssh_config
si se prefiere).Enter
~
~
.
Dado que~
~
envía un literal a~
través de su sesión SSH, la segunda sesión SSH lo recibirá como una sola tilde e interpretará el.
como parte de la fuga. Para enviar a la quinta sesión ssh anidada, solo use 5 tildes en su secuencia de escape.También es posible que desee configurar sistemas de mantenimiento de nivel de aplicación para SSH para evitar que se bloquee por problemas de conexión. Mi
~/.ssh/config
contiene esto:Esto hace que el cliente ssh envíe mensajes de mantenimiento de nivel de aplicación cada 15 segundos. Cuando tres de ellos fallan consecutivamente (el valor predeterminado de
ServerAliveCountMax
), el cliente considera la conexión como colgada y la cierra.Opuesto a la otra opción
TCPKeepAlive
, esto se verifica dentro del canal encriptado y no se puede suplantar.Se está observando que esos dispositivos vivos también ayudan a, uhm, mantener vivas las conexiones de inactividad prolongada , es decir, evitar que tengas sesiones tcp medio cerradas suspendidas durante horas intactas.
Le recomiendo activar esta función si se encuentra con esto regularmente, pero también debe conocer el ligero riesgo de seguridad que puede imponer. Un ataque de texto sin formato conocido podría ser más fácil si el atacante conoce el intervalo y el contenido de una conexión inactiva. Esta podría ser la razón por la cual no está habilitada de manera predeterminada.
fuente
%)
ServerAliveInterval
en 1 para que se detecte una conexión perdida de inmediato?Host
línea. Además, "los cifrados modernos como Advanced Encryption Standard no son actualmente susceptibles a ataques de texto sin formato conocidos". (desde el enlace que agregó) ...Como se señaló en la respuesta de geekosaur, la secuencia de escape
~.
terminará la conexión.La lista completa de secuencias de escape y lo que hacen se puede mostrar escribiendo
~?
:fuente