Я часто захожу в свою коробку дома из школы, но обычно, когда я меняю классы и мой компьютер зависает, труба будет сломана. Тем не менее, ssh просто блокирует - Ctrl+ c, Ctrl+ zи Ctrl+ не dимеют никакого эффекта.
Раздражает необходимость перезапускать мой терминал, и еще более досадно, когда приходится закрывать и заново создавать новое окно экрана.
Итак, мой вопрос, есть ли простой способ заставить ssh умереть правильно (то есть, когда канал не работает "нормально", он выходит с сообщением о сломанной трубе)? Или мне нужно выяснить, что такое PID, и вручную убить его?
screen -x
: PОтветы:
Обычные ключи пересылаются в течение
ssh
сеанса, поэтому ни один из них не будет работать. Вместо этого используйте escape-последовательности. Для того, чтобы убить текущую сессию ударила впоследствии Enter ↵, ~, ..Больше эти управляющие последовательности могут быть перечислены с Enter ↵, ~, ?:
Вы можете закрыть список последовательностей Escape, нажав enter.
Обратите внимание на то, что, поскольку нажатие ~~вызывает
ssh
отправку~
вместо перехвата, вы можете адресовать N вложенныхssh
соединений, нажимая ~ N раз. (Это относится только к ~s, которые непосредственно следуют за enter.) То есть это enter~~~~~.завершаетssh
сеанс глубиной 5 уровней и сохраняет остальные 4 нетронутыми.источник
~
представляет собой мертвый ключ , ключ последовательностиEnter
~
Space
.
.EscapeChar ~
в/etc/ssh/ssh_config
(или ,~/.ssh/ssh_config
если вы предпочитаете).Enter
~
~
.
Так как~
~
отправляет литерал~
через ваш сеанс SSH, второй сеанс SSH получит его как одну тильду и будет интерпретировать.
как часть escape. Чтобы отправить на 5-й вложенный сеанс SSH, просто используйте 5 тильд в своей escape-последовательности.Вы также можете настроить поддержку активности на уровне приложения для SSH, чтобы предотвратить его зависание при проблемах подключения. Мой
~/.ssh/config
содержит это:Это заставляет клиента ssh отправлять keep-alive уровня приложения каждые 15 секунд. Всякий раз, когда три из них терпят неудачу последовательно (по умолчанию
ServerAliveCountMax
), клиент считает соединение зависшим и закрывает его.В отличие от другого варианта
TCPKeepAlive
, этот параметр проверяется в зашифрованном канале и не подделывается.Это время отмечено , что те , держать-alives также помогают, UHM, держать давно на холостом ходу соединения в живых, то есть предотвратить вас от полузакрытой TCP сессий висит часами нетронутым.
Я настоятельно рекомендую включить эту функцию, если вы сталкиваетесь с этим регулярно, но вы также должны знать о небольшом риске безопасности, который она может создать. Открытый текст атака может стать легче , если злоумышленник знает интервал и содержимые нерабочее соединение. Это может быть причиной того, почему он не включен по умолчанию.
источник
%)
ServerAliveInterval
значение 1, чтобы немедленно обнаружить потерянное соединение?Host
линии. Кроме того, «Современные шифры, такие как Advanced Encryption Standard, в настоящее время не подвержены атакам с открытым текстом». (по добавленной вами ссылке) ...Как отмечено в ответе геекозавра, escape-последовательность
~.
прервет соединение.Полный список escape-последовательностей и их действия можно отобразить, набрав
~?
:источник