Найти в Дзене

Как продлить сессию SSH: избежание тайм-аутов

SSH (Secure Shell) остаётся основным инструментом для безопасного удалённого доступа к серверам под управлением Linux и других Unix-подобных систем. OpenSSH продолжает активно развиваться, но проблема преждевременного разрыва соединения из-за тайм-аута по-прежнему актуальна — особенно при длительной работе в терминале, выполнении долгих команд или нестабильном соединении. В этой статье мы разберём проверенные способы поддержания активности SSH-сессии как можно дольше. Все рекомендации совместимы с современными версиями OpenSSH (включая 9.x и выше). Разрыв соединения обычно происходит по инициативе сервера: демон sshd закрывает неактивное соединение после определённого времени простоя. Это защитный механизм, но он может быть неудобен при выполнении длительных задач. Причины: Решение — настроить отправку «keep-alive» пакетов, чтобы соединение считалось активным. Самый простой и безопасный способ — изменить конфигурацию клиента. Файл находится по пути ~/.ssh/config. Если его нет, создайт
Оглавление

SSH (Secure Shell) остаётся основным инструментом для безопасного удалённого доступа к серверам под управлением Linux и других Unix-подобных систем. OpenSSH продолжает активно развиваться, но проблема преждевременного разрыва соединения из-за тайм-аута по-прежнему актуальна — особенно при длительной работе в терминале, выполнении долгих команд или нестабильном соединении.

В этой статье мы разберём проверенные способы поддержания активности SSH-сессии как можно дольше. Все рекомендации совместимы с современными версиями OpenSSH (включая 9.x и выше).

Принцип работы keep-alive в SSH: клиент и сервер периодически обмениваются пакетами, чтобы избежать тайм-аута.
Принцип работы keep-alive в SSH: клиент и сервер периодически обмениваются пакетами, чтобы избежать тайм-аута.

Почему SSH-сессия разрывается

Разрыв соединения обычно происходит по инициативе сервера: демон sshd закрывает неактивное соединение после определённого времени простоя. Это защитный механизм, но он может быть неудобен при выполнении длительных задач.

Причины:

  • Отсутствие трафика между клиентом и сервером.
  • Настройки тайм-аута на стороне сервера (sshd) или клиента.
  • Проблемы сети (NAT, файрволы, промежуточные роутеры).

Решение — настроить отправку «keep-alive» пакетов, чтобы соединение считалось активным.

Настройка на стороне клиента (рекомендуемый способ)

Самый простой и безопасный способ — изменить конфигурацию клиента. Файл находится по пути ~/.ssh/config. Если его нет, создайте:

touch ~/.ssh/config
chmod 600 ~/.ssh/config

Добавьте следующие строки:

Host *
ServerAliveInterval 120
ServerAliveCountMax 5
  • ServerAliveInterval 120 — клиент будет отправлять keep-alive запрос каждые 120 секунд бездействия.
  • ServerAliveCountMax 5 — если сервер не ответит на 5 запросов подряд, соединение разорвётся.
Пример клиентского конфигурационного файла ~/.ssh/config для предотвращения тайм-аута SSH.
Пример клиентского конфигурационного файла ~/.ssh/config для предотвращения тайм-аута SSH.

Если нужно применить настройки только к конкретному хосту:

Host example.com
ServerAliveInterval 120
ServerAliveCountMax 5

После изменений переподключитесь — настройки применятся автоматически.

Настройка на стороне сервера

Если у вас есть доступ к серверу, отредактируйте файл /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Добавьте или раскомментируйте:

ClientAliveInterval 120
ClientAliveCountMax 5
  • ClientAliveInterval 120 — сервер отправляет keep-alive клиенту каждые 120 секунд.
  • ClientAliveCountMax 5 — разрыв после 5 неотвеченных запросов.

После сохранения перезапустите службу:

sudo systemctl restart sshd
Настройка keep-alive на стороне сервера в файле sshd_config.
Настройка keep-alive на стороне сервера в файле sshd_config.

Дополнительные способы и альтернативы

Временное решение в текущей сессии

Можно передать параметры при подключении:

ssh -o ServerAliveInterval=120 -o ServerAliveCountMax=5 user@host

Использование tmux или screen

Для полной независимости от разрывов соединения рекомендуется использовать терминальные мультиплексоры:

  • tmux — современный и популярный выбор.
  • screen — классика.

Они позволяют «отсоединить» сессию и вернуться к ней позже даже после разрыва SSH.

Пример работы в tmux — сессия сохраняется даже при разрыве SSH-соединения.
Пример работы в tmux — сессия сохраняется даже при разрыве SSH-соединения.

Альтернатива SSH — Mosh

Mosh (Mobile Shell) устойчив к нестабильным соединениям и автоматически восстанавливается после разрыва сети. Устанавливается отдельно и совместим с SSH-ключами.

Заключение

Настройки ServerAliveInterval и ClientAliveCountMax — надёжный способ избежать неожиданных разрывов SSH-сессии. Рекомендуемые значения: 60–300 секунд для интервала и 3–10 для максимального количества попыток — подберите под свою сеть.

Для максимальной надёжности сочетайте keep-alive с tmux/screen.

Если у вас остались вопросы — пишите в комментариях!

Если вам понравился материал, не забудьте поставить палец вверх 👍 и поделиться статьёй с друзьями. Подписывайтесь на мой Telegram-канал, чтобы первыми узнавать о новых статьях и полезных материалах. А также загляните на сайт RoadIT.ru, где я собираю заметки о командах Linux, HowTo-гайды и много другой интересной информации. Спасибо за внимание!