Я часто сажу в свою коробку дома из школы, но обычно, когда я меняю классы и мой компьютер приостанавливается, труба будет сломана. Однако ssh просто блокируется - Ctrl + c, Ctrl + z и Ctrl + d не влияют.
Досадно, что нужно перезапустить мой терминал и еще более раздражать, чтобы закрыть и заново создать новое окно экрана.
Итак, мой вопрос: есть ли простой способ заставить ssh умереть должным образом (т. е. когда труба выходит из строя «нормально», она выйдет с сообщением о сломанной трубе)? Или мне нужно выяснить, что такое PID, и вручную убить его?
Вы также можете настроить на уровне приложений keep-alives для SSH, чтобы предотвратить его зависание при проблемах подключения. Мой ~/.ssh/config содержит следующее:
Host *
ServerAliveInterval 15
# ServerAliveCountMax 3
Это заставляет ssh-клиент отправлять на уровне приложений каждые 15 секунд. Всякий раз, когда три из них прерываются последовательно (по умолчанию ServerAliveCountMax), клиент рассматривает соединение как зависание и закрывает его.
Против другой опции TCPKeepAlive это проверяется в зашифрованном канале и не подделано.
Следует отметить, что эти keep-alives также помогают поддерживать, , предотвращение соединений, т. е. предотвращать вас полузакрытым tcp сеансы, висящие в течение нескольких часов, не тронуты.
Я настоятельно рекомендую включить эту функцию, если вы сталкиваетесь с этим регулярно, но вы также должны знать о небольшом угрозе безопасности, который она может наложить. A полузамкнутый может стать проще, если злоумышленник знает интервал и содержимое простоя. Это может быть причиной того, почему он не включен по умолчанию.
Как отмечено в ответе гейкозавра, escape-последовательность ~. завершит соединение.
Полный список управляющих последовательностей и то, что они делают, можно отобразить, набрав ~?:
[F1]