Ошибка Время сессии SSH истекло бесконечное поддержание связи

Как исправить ошибку Время сессии SSH истекло бесконечное поддержание связи

Ошибка "Время сессии SSH истекло" решается включением параметра ServerAliveInterval на клиенте или ClientAliveInterval на сервере, которые отправляют периодические пакеты для поддержания активного соединения и предотвращения разрыва сессии по таймауту.

Причины проблемы

  • Сетевой маршрутизатор или межсетевой экран разрывают неактивные соединения через определённый интервал времени (обычно 5-15 минут)
  • SSH-сервер имеет установленный таймаут отключения неактивных клиентов
  • Клиент SSH не отправляет сигналы keepalive для поддержания соединения
  • Неправильные настройки конфигурации SSH на стороне сервера или клиента
  • Проблемы с сетевой стабильностью или качеством интернет-соединения

Пошаговая инструкция (решение на клиенте)

  1. Откройте конфигурационный файл SSH на вашем компьютере: ~/.ssh/config (Linux/macOS) или C:\Users\YourUsername\.ssh\config (Windows с Git Bash)
  2. Если файл не существует, создайте его с помощью текстового редактора
  3. Добавьте следующие строки для конкретного хоста или для всех хостов:
    Host *
        ServerAliveInterval 60
        ServerAliveCountMax 3
  4. Сохраните файл и закройте редактор
  5. Переподключитесь к серверу SSH: ssh user@hostname
  6. Проверьте, что сессия теперь остаётся активной при длительном отсутствии команд

Пошаговая инструкция (решение на сервере)

  1. Подключитесь к SSH-серверу с правами администратора
  2. Откройте конфигурационный файл сервера: /etc/ssh/sshd_config
  3. Найдите или добавьте строки: ClientAliveInterval 60 и ClientAliveCountMax 3
  4. Сохраните файл (в nano нажмите Ctrl+O, затем Enter, потом Ctrl+X)
  5. Перезагрузите SSH-сервис: sudo systemctl restart ssh (Linux) или sudo service sshd restart (macOS)
  6. Все новые SSH-подключения будут использовать новые параметры keepalive

Часто задаваемые вопросы

Какое оптимальное значение ServerAliveInterval? Установите 60 секунд для большинства случаев; если соединение разрывается чаще, уменьшите до 30 секунд.

Что означает ServerAliveCountMax? Это количество пакетов keepalive, которые отправляются без ответа перед разрывом соединения (значение 3 означает разрыв через 180 секунд при интервале 60 секунд).

Нужно ли менять параметры и на клиенте, и на сервере? Достаточно настроить одну сторону; рекомендуется сделать на клиенте для универсальности, так как вы можете управлять несколькими серверами.

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

Веб сервер Nginx и настроить виртуальные хосты на Ubuntu Server
Изменение стандартного порта SSH 22 в Linux сервере для защиты от брутфорса
DHCP сервер на базе Windows Server 2022