Вот что делать, если ваши SSH-соединения в Linux перестают отвечать на запросы и нажатия клавиш не работают.
Вы можете вводить удаленный сеанс SSH, и внезапно ничего не происходит. Кажется, система не реагирует на нажатия клавиш. Что вы делаете?
Вот почему это происходит, как выйти из неотвечающего сеанса SSH и почему вам может потребоваться переключиться на Mosh.
Что вызывает зависание сеансов SSH?
Основная причина зависания сеансов SSH — обрыв сетевого соединения. Сигналы Wi-Fi могут пропасть, или вы можете перевести компьютер в спящий режим. Чаще всего это происходит с ноутбуками. Вы можете закрыть крышку ноутбука, забыв, что вы все еще вошли в систему через SSH.
SSH изначально был разработан в эпоху, когда люди обычно не использовали ноутбуки. SSH лучше работает в проводных сетях.
1. Завершить с помощью Escape-последовательности
Если ваш сеанс SSH зависает, попробуйте использовать escape-последовательность. Escape-последовательность позволяет отправлять сигналы SSH-клиенту вместо удаленного компьютера. Escape-последовательности начинаются с escape-символа. По умолчанию в клиенте OpenSSH это
тильда (~) характер.Чтобы выйти из 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 — еще лучшая замена, которая будет поддерживать ваше соединение во время обрывов соединения и перехода системы в спящий режим.