SSH Linux (OpenSSH)

SSH в Linux: SSH-сессия прерывается при длительном простое за NAT

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

SSH-соединение через NAT обрывается после длительного простоя. Это может быть тайм-аут таблицы соединений роутера или политики сервера; безопасное средство — умеренные клиентские keepalive и проверка фактической причины.

В этой статье
  1. Что происходит и когда это важно
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Команды из инструкции с пояснениями
  5. Как проверить результат
  6. Если проблема не устранена

#Что происходит и когда это важно

Пока пользователь печатает команды, SSH работает, но после нескольких минут/часов бездействия возникает Broken pipe, Connection reset или timeout. Это не относится к нестабильной сети во время активной передачи.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
NAT забывает соединениеРоутер удаляет неактивную TCP-сессию.Обрыв наступает при схожем времени простоя.Проверить умеренный ServerAliveInterval.
Сервер завершает бездействующие сеансыНа сервере задана политика ClientAlive или оболочки.В журнале sshd есть timed out/disconnected.Согласовать правила сервера с администратором.
Обрывается физическая сеть или VPNПотеря интерфейса совпадает с переключением Wi-Fi/сна.Активные передачи тоже прерываются.Диагностировать интерфейс и VPN отдельно.

#Пошаговая диагностика и исправление

  1. Измерьте, когда соединение прерываетсяОткройте терминал и подключитесь обычным SSH. Запишите, через сколько минут без команд возникает обрыв, повторите при активном использовании. Если сеанс рвётся во время активности, тайм-аут простоя не главная гипотеза.
  2. Проверьте, нет ли сна устройстваУбедитесь, что локальный ноутбук не уходит в сон и VPN не отключается при блокировке экрана. Сначала проверьте настройки энергосбережения штатным способом; без причины не меняйте системные службы.
  3. Протестируйте keepalive только на клиентеНа локальном компьютере выполните ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 пользователь@сервер с реальными данными. Каждые 60 секунд клиент отправляет зашифрованный запрос; после трёх отсутствующих ответов соединение завершается. Это диагностический, а не гарантированный обход корпоративной политики.
  4. Сравните без новой настройки сервераОставьте тестовый сеанс в простое дольше обычного времени обрыва. Если он сохранился, вероятен тайм-аут промежуточного устройства; если всё равно рвётся, сохраните время и тип ошибки.
  5. Внесите постоянные настройки только для нужного хостаНа клиенте откройте ~/.ssh/config в текстовом редакторе (при необходимости создайте файл с правами только владельца). В отдельном блоке Host для конкретного сервера установите ServerAliveInterval 60 и ServerAliveCountMax 3. Не включайте эти параметры глобально для всех подключений без необходимости.
  6. Проверьте настройки без отображения секретовВыполните ssh -G имя-хоста | grep -i alive для своего алиаса. SSH покажет итоговые значения. Если используются Match или централизованная конфигурация, настройки могут быть переопределены: разберите вывод с администратором.
  7. Проверьте откат и поведение после следующего подключенияЕсли не стало лучше, удалите добавленные две строки из конфигурации клиента и сохраните файл; перезапустите подключение. На сервере администратор может посмотреть журнал sshd, но не нужно глобально отключать тайм-ауты и защитные политики.

#Команды из инструкции с пояснениями

Linux · Терминал (Bash)Команда
Клиент: тест keepalive; заменить логин и адрес.
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 пользователь@сервер
Linux · Терминал (Bash)Команда
Клиент: итоговые параметры keepalive по алиасу.
ssh -G имя-хоста | grep -i alive

#Как проверить результат

Сессия остаётся активной в требуемый период простоя, а после исчезновения сети корректно закрывается, не зависая бесконечно.

#Если проблема не устранена

Если keepalive не помогает, соберите время обрыва, состояние VPN и сетевого интерфейса, вывод клиента ssh -v без секретов и информацию о корпоративных ограничениях.

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.