Ошибка "Время сессии SSH истекло" решается включением параметра ServerAliveInterval на клиенте или ClientAliveInterval на сервере, которые отправляют периодические пакеты для поддержания активного соединения и предотвращения разрыва сессии по таймауту.
Причины проблемы
- Сетевой маршрутизатор или межсетевой экран разрывают неактивные соединения через определённый интервал времени (обычно 5-15 минут)
- SSH-сервер имеет установленный таймаут отключения неактивных клиентов
- Клиент SSH не отправляет сигналы keepalive для поддержания соединения
- Неправильные настройки конфигурации SSH на стороне сервера или клиента
- Проблемы с сетевой стабильностью или качеством интернет-соединения
Пошаговая инструкция (решение на клиенте)
- Откройте конфигурационный файл SSH на вашем компьютере:
~/.ssh/config(Linux/macOS) илиC:\Users\YourUsername\.ssh\config(Windows с Git Bash) - Если файл не существует, создайте его с помощью текстового редактора
- Добавьте следующие строки для конкретного хоста или для всех хостов:
Host * ServerAliveInterval 60 ServerAliveCountMax 3 - Сохраните файл и закройте редактор
- Переподключитесь к серверу SSH:
ssh user@hostname - Проверьте, что сессия теперь остаётся активной при длительном отсутствии команд
Пошаговая инструкция (решение на сервере)
- Подключитесь к SSH-серверу с правами администратора
- Откройте конфигурационный файл сервера:
/etc/ssh/sshd_config - Найдите или добавьте строки:
ClientAliveInterval 60иClientAliveCountMax 3 - Сохраните файл (в nano нажмите
Ctrl+O, затемEnter, потомCtrl+X) - Перезагрузите SSH-сервис:
sudo systemctl restart ssh(Linux) илиsudo service sshd restart(macOS) - Все новые SSH-подключения будут использовать новые параметры keepalive
Часто задаваемые вопросы
Какое оптимальное значение ServerAliveInterval? Установите 60 секунд для большинства случаев; если соединение разрывается чаще, уменьшите до 30 секунд.
Что означает ServerAliveCountMax? Это количество пакетов keepalive, которые отправляются без ответа перед разрывом соединения (значение 3 означает разрыв через 180 секунд при интервале 60 секунд).
Нужно ли менять параметры и на клиенте, и на сервере? Достаточно настроить одну сторону; рекомендуется сделать на клиенте для универсальности, так как вы можете управлять несколькими серверами.