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

Много раз у меня сеанс SSH, который больше не отвечает (например, когда я теряю подключение к Интернету, а затем снова подключаюсь). Ctrl + C , Ctrl + D , Ctrl + Z и миллион нажатий клавиш не имеют никакого эффекта.

В большинстве случаев у меня уже есть tmux или byobu , поэтому я могу просто запустить другой терминал и снова подключиться. Однако он чувствует себя громоздким. Как отключить SSH от текущего терминала?

Используйте «escape-символ» (обычно, тильда ~ ) для управления сеансом SSH:

  • Затем следует . закрывает соединение SSH;
  • ~ за которым следует Ctrl + Z, приостанавливает процесс SSH;
  • ~ а затем другой ~ отправляет литерал ~ .

Вы можете установить escape-символ, используя параметр -e для ssh .

Кроме того, помните, что

Также не забудьте нажать Enter до ~ . Управляющий символ работает, когда он является первым символом в строке. А также вы можете использовать ~ и позже ? для получения помощи от клиента ssh. (Спасибо комментарию Лукаша Стельмаха .)

Openssh может быть настроен для отправки сообщений клиента или сервера на другую сторону. Если ответ не получен, соединение будет прекращено. Со стороны сервера см. ClientAliveInterval конфигурации ClientAliveInterval и ClientAliveCountMax . Со стороны клиента см. ServerAliveInterval и ServerAliveCountMax . TCPKeepAlive также является опцией, но подталкивает, в то время как прежние опции отсутствуют, поэтому они, вероятно, лучше.

Если вы установите их на разумные значения, вы, вероятно, никогда не будете снова подключаться. Единственным недостатком является то, что ваши ssh-соединения могут оставаться открытыми, если вы предпочтете их прекратить по соображениям безопасности.

См. Страницу управления конфигурацией OpenSSH sshd и страницу управления конфигурацией OpenSSH ssh для дальнейшей интрормации.

Попробуйте Ctrl + Break