Как я могу вырваться из ssh, когда он блокируется?

Я часто сажу в свою коробку дома из школы, но обычно, когда я меняю классы и мой компьютер приостанавливается, труба будет сломана. Однако ssh просто блокируется - Ctrl + c, Ctrl + z и Ctrl + d не влияют.

Досадно, что нужно перезапустить мой терминал и еще более раздражать, чтобы закрыть и заново создать новое окно экрана.

Итак, мой вопрос: есть ли простой способ заставить ssh умереть должным образом (т. е. когда труба выходит из строя «нормально», она выйдет с сообщением о сломанной трубе)? Или мне нужно выяснить, что такое PID, и вручную убить его?

1
задан 19 January 2013 в 16:40

2 ответа

Вы также можете настроить на уровне приложений keep-alives для SSH, чтобы предотвратить его зависание при проблемах подключения. Мой ~/.ssh/config содержит следующее:

Host *
ServerAliveInterval 15
# ServerAliveCountMax 3

Это заставляет ssh-клиент отправлять на уровне приложений каждые 15 секунд. Всякий раз, когда три из них прерываются последовательно (по умолчанию ServerAliveCountMax), клиент рассматривает соединение как зависание и закрывает его.

Против другой опции TCPKeepAlive это проверяется в зашифрованном канале и не подделано.

Следует отметить, что эти keep-alives также помогают поддерживать, , предотвращение соединений, т. е. предотвращать вас полузакрытым tcp сеансы, висящие в течение нескольких часов, не тронуты.

Я настоятельно рекомендую включить эту функцию, если вы сталкиваетесь с этим регулярно, но вы также должны знать о небольшом угрозе безопасности, который она может наложить. A полузамкнутый может стать проще, если злоумышленник знает интервал и содержимое простоя. Это может быть причиной того, почему он не включен по умолчанию.

47
ответ дан 25 May 2018 в 22:36
  • 1
    Причины безопасности. Вы можете пойти выпить и оставить ssh sessio открытым, и ваш партнер по лабораторным вопросам, с которым вы работали в течение последних 20 лет, может использовать вашу сессию, чтобы захватить сервер и уничтожить его ... пока вы пили в своем 10-минутном перерыве. – Luis Alvarado♦ 11 March 2011 в 23:16
  • 2
    @CYREX, а? И как можно отключить по умолчанию вариант, препятствовать вам иметь несправедливые партнеры лаборатории? [F1] – ulidtko 12 March 2011 в 01:31
  • 3
    @ulidtko: Есть ли причина не устанавливать ServerAliveInterval в 1, чтобы потерянное соединение было обнаружено немедленно? – krlmlr 19 January 2013 в 14:01
  • 4
    Я улучшил сообщение с моими знаниями об этом вместе с другими «исправлениями». Я думаю, что это ответ на вопрос, поскольку он скорее связан с предотвращением, а не с фиксацией уже сломанной. – gertvdijk 19 January 2013 в 23:01
  • 5
    @gertvdijk: Спасибо. Для меня это работает даже без линии Host. Кроме того, «Современные шифры, такие как« Расширенный стандарт шифрования », в настоящее время не чувствительны к известным атакам с открытым текстом». (из добавленной вами ссылки) ... – krlmlr 20 January 2013 в 04:32

Как отмечено в ответе гейкозавра, escape-последовательность ~. завершит соединение.

Полный список управляющих последовательностей и то, что они делают, можно отобразить, набрав ~?:

[F1]
37
ответ дан 25 May 2018 в 22:36
  • 1
    Как закрыть список управляющих последовательностей? – kristianp 19 October 2013 в 03:19
  • 2
    Вы не хотите, после того, как он распечатает список escape-последовательностей, он готов принять следующий. – Tejas Kale 24 March 2017 в 19:15

Другие вопросы по тегам:

Похожие вопросы: