Гид по технологиям

Как завершить зависшую SSH‑сессию и перейти на Mosh

5 min read Сетевое администрирование Обновлено 30 Nov 2025
Как завершить зависшую SSH‑сессию и перейти на Mosh
Как завершить зависшую SSH‑сессию и перейти на Mosh

Настенный телефон-автомат на крючке

Почему SSH-сессии зависают

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

Коротко: SSH поддерживает интерактивный терминал через TCP. Если TCP-канал прерывается, клиент «виснет», поскольку он ждёт подтверждений от сервера.

1. Завершение через escape‑последовательность

Выход из SSH с помощью escape-последовательности

OpenSSH имеет внутренние escape‑символы. По умолчанию это тильда (~). Escape‑последовательность позволяет отправить команду клиенту, а не удалённой машине.

Стандартный приём для немедленного выхода из клиента SSH:

~.

То есть нажмите клавишу тильда, затем точку. Обратите внимание: тильда интерпретируется только если она идёт в начале строки после последнего ввода клавиатуры; если вы набирали текст, нажмите Enter, затем ~. и затем .

Если вы хотите изменить escape‑символ временно, используйте опцию -e:

ssh -e '#' user@host

Чтобы поменять его навсегда, добавьте запись в локальный файл ~/.ssh/config:

Host *
  EscapeChar ~

(Замените ~ на желаемый символ.)

Важно: escape‑последовательности работают в клиенте OpenSSH. Если вы используете другой клиент, проверьте его документацию.

2. Завершение процесса через kill

Поиск SSH-процесса через ps и grep

Если escape не срабатывает или клиент полностью заморожен, можно завершить процесс вручную.

Найдите PID с помощью ps и grep:

ps aux | grep ssh

В выводе ищите строку с вашим пользователем и адресом удалённого хоста — так вы отличите нужную сессию от системных SSH‑процессов.

Когда PID найден, отправьте сигнал TERM или KILL:

kill 
# если нужно принудительно:
kill -9 

Сигнал TERM даёт процессу шанс корректно завершиться. Используйте kill -9 только если TERM не сработал.

Используйте Mosh для устойчивых соединений

Удалённый Vim через Mosh при отключенной сети

Mosh (Mobile Shell) — это замена SSH для интерактивных терминалов. Он использует UDP и состояние на стороне клиента, поэтому продолжает работать при кратковременных потерях сети и при смене IP (например, переход с Wi‑Fi на сотовую сеть). При восстановлении Mosh синхронизирует ввод/вывод, и вы не теряете работу.

Установка Mosh на популярных дистрибутивах:

sudo apt install mosh
sudo pacman -S mosh
sudo dnf install mosh

Mosh хорошо сочетается с tmux или GNU Screen: Mosh обеспечивает устойчивое сетевое соединение, tmux — возможность восстановить сессию и процессы на удалённой машине.

Альтернативные подходы

  • Использовать tmux/screen внутри SSH: если соединение разорвётся, вы вернётесь в тот же сеанс при повторном подключении.
  • Autossh: автоматический рестарт SSH‑туннелей (подходит для туннелей, но не для интерактивных терминалов).
  • SSH через стабильный промежуточный сервер (bastion) с постоянным сетевым каналом.

Методология диагностики зависшей сессии — шаг за шагом

  1. Нажмите Enter, затем ~. чтобы попыта��ься выйти через escape. Если клиент ответил — всё в порядке.
  2. Если нет реакции, переключитесь в локальную консоль (Ctrl+Alt+F2 на Linux) или откройте новый терминал.
  3. Выполните ps aux | grep ssh и найдите PID зависшего клиента.
  4. Попробуйте kill . Если после этого клиент не закрылся — kill -9 .
  5. Если подобные зависания происходят часто — установите Mosh и/или tmux.

Роли и чек‑листы

DevOps / Системный администратор:

  • Проверить логи сервера (journalctl /var/log/auth.log).
  • Настроить tmux на всех сервисных аккаунтах.
  • Развернуть Mosh на хостах, куда часто подключаются мобильные пользователи.

Разработчик / Инженер:

  • Использовать tmux для долгих задач.
  • Настроить в локальной машине alias для ssh с -o ServerAliveInterval=60 и -o ServerAliveCountMax=3.
  • Установить Mosh для ноутбука.

Служба поддержки:

  • Объяснить пользователю escape‑последовательность и команду kill.
  • Предложить Mosh или tmux как долгосрочное решение.

Критерии приёмки

  • После применения escape‑последовательности SSH‑клиент завершился или вернул приглашение.
  • После kill процесс SSH перестал присутствовать в ps aux.
  • После установки Mosh пользователь может продолжать ввод после краткого разрыва сети.

Когда методы не сработают

  • Если локальный терминал завис полностью (Xorg/Wayland или терминал-приложение упало), escape‑последовательность не сработает — нужно открыть новый терминал или перезапустить GUI‑сессию.
  • Если проблема на стороне сервера (OOM, crash), восстановить соединение можно только после устранения серверной ошибки.

Краткий глоссарий

  • SSH: протокол для безопасного доступа к удалённым машинам.
  • Mosh: мобильная оболочка, устойчивая к временным потерям сети (использует UDP).
  • tmux/screen: мультиплексоры терминала, позволяют возобновить сессию.
  • PID: идентификатор процесса в системе Unix.

Частые вопросы

Что делать, если escape‑последовательность не работает и я не вижу PID?

Откройте новый терминал и выполните ps aux | grep ssh; если клиент не отображается, возможно, он завис в состоянии ядра — перезапустите терминал или завершите GUI‑сессию.

Можно ли поменять escape‑символ, чтобы он не конфликтовал с рабочими командами?

Да. Используйте опцию -e при запуске SSH или настройку EscapeChar в ~/.ssh/config.

Краткое резюме

  • Попробуйте ~. для быстрого выхода.
  • Если это не помогает — найдите PID и используйте kill.
  • Для надёжных подключений используйте Mosh и/или tmux.

Важно: Mosh и tmux решают разные задачи — Mosh делает подключение устойчивым к сетевым разрывам, а tmux позволяет возобновлять рабочие процессы на сервере. Вместе они дают наиболее надёжный рабочий поток.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство