Вот что делать, если ваши SSH-соединения в Linux перестают отвечать на запросы и нажатия клавиш не работают.

Вы можете вводить удаленный сеанс SSH, и внезапно ничего не происходит. Кажется, система не реагирует на нажатия клавиш. Что вы делаете?

Вот почему это происходит, как выйти из неотвечающего сеанса SSH и почему вам может потребоваться переключиться на Mosh.

Что вызывает зависание сеансов SSH?

Основная причина зависания сеансов SSH — обрыв сетевого соединения. Сигналы Wi-Fi могут пропасть, или вы можете перевести компьютер в спящий режим. Чаще всего это происходит с ноутбуками. Вы можете закрыть крышку ноутбука, забыв, что вы все еще вошли в систему через SSH.

SSH изначально был разработан в эпоху, когда люди обычно не использовали ноутбуки. SSH лучше работает в проводных сетях.

1. Завершить с помощью Escape-последовательности

Если ваш сеанс SSH зависает, попробуйте использовать escape-последовательность. Escape-последовательность позволяет отправлять сигналы SSH-клиенту вместо удаленного компьютера. Escape-последовательности начинаются с escape-символа. По умолчанию в клиенте OpenSSH это

instagram viewer
тильда (~) характер.

Чтобы выйти из SSH-клиента, вы можете нажать клавишу тильды, а затем кнопку период (.) ключ.

Вы также можете изменить escape-символ, если хотите. Вы можете указать новый escape-символ с помощью опция в командной строке. Вы также можете изменить его навсегда, установив EscapeChar вариант в вашем .ssh/конфигурация файл в вашем домашнем каталоге на локальном компьютере.

2. Использование команды kill

Если использование escape-последовательности не помогло, попробуйте отключить SSH-клиент. Чтобы найти идентификатор процесса (PID) вашего сеанса, передайте команду ps через grep:

ps aux | grep ssh

Аргумент «aux» команды ps означает «перечислить все процессы в системе, независимо от того, кому они принадлежат и есть ли у них управляющий терминал или нет."

Если у вас несколько сеансов, вы можете выбрать замороженный, поскольку в списке будут показаны имя пользователя и адрес на удаленном компьютере, на котором зарегистрированы сеансы SSH. Найдя PID вашего сеанса, вы можете завершить его с помощью команды kill:

kill [PID]

Для улучшения SSH-соединений используйте Mosh!

Лучший способ избежать раздражающих зависших сеансов SSH — использовать Мош. Если соединение прервется, Mosh позволит вам оставаться на связи. Он будет отправлять любые сообщения при повторном подключении. Это также работает, когда вы переводите компьютер в спящий режим.

Вы также можете использовать терминальный мультиплексор, такой как GNU Screen или tmux, для возобновления сеанса SSH после любых отключений, но Mosh и tmux становятся еще более мощными при совместном использовании..

Чтобы установить Mosh в Debian и Ubuntu:

sudo apt install mosh

И в Arch Linux:

sudo pacman -S mosh

О семействе дистрибутивов Red Hat:

sudo dnf install mosh

Теперь вы можете избавиться от зависших сеансов SSH

Не отвечающие сеансы SSH могут вызывать разочарование, но вы можете избавиться от них с помощью escape-последовательности или команды kill. Mosh — еще лучшая замена, которая будет поддерживать ваше соединение во время обрывов соединения и перехода системы в спящий режим.