Как предотвратить обрыв SSH-соединения с удалённым сервером

Для того чтобы предотвратить обрыв соединения с удалённым сервером, администраторы могут использовать различные механизмы контроля активности. В OpenSSH это достигается с помощью настроек TCPKeepAlive, ClientAliveInterval и ClientAliveCountMax, которые позволяют поддерживать соединение активным даже при длительных паузах. Рассмотрим каждый параметр детально и приведём примеры настройки.

Чтобы предотвратить разрыв SSH-сессий с удалённым сервером, можно настроить параметры KeepAlive. Эти параметры управляют тем, как часто отправляются сигналы, проверяющие активность соединения, и что происходит в случае длительного бездействия.

Настройка TCPKeepAlive

Параметр TCPKeepAlive управляет стандартным TCP-keepalive механизмом на уровне сети. Если этот параметр включен (по умолчанию), то SSH будет периодически отправлять пакеты через сетевое соединение, чтобы убедиться, что оно активно. Включение или отключение TCPKeepAlive можно настроить в конфигурационном файле SSH:

sudo nano /etc/ssh/sshd_config

В файле sshd_config найдите или добавьте строку:

TCPKeepAlive yes

Для того чтобы изменения вступили в силу, перезапустите службу SSH:

sudo systemctl restart sshd

Этот параметр полезен для выявления зависших соединений, но не всегда является лучшим вариантом для предотвращения разрыва, так как его действие зависит от сетевого уровня.

Настройка ClientAliveInterval и ClientAliveCountMax

ClientAliveInterval и ClientAliveCountMax — это параметры на стороне сервера, которые дают более гибкий контроль над SSH-соединениями.

ClientAliveInterval определяет интервал (в секундах), через который сервер отправляет запрос клиенту, чтобы убедиться, что клиент всё ещё активен. Например, если мы хотим, чтобы сервер отправлял запросы каждые 300 секунд (5 минут), нужно изменить этот параметр:

ClientAliveInterval 300

ClientAliveCountMax задаёт максимальное количество неотвеченных запросов перед тем, как сервер решит завершить соединение. Например, чтобы сервер позволял пропустить три запроса, установите это значение:

ClientAliveCountMax 3

Вместе эти параметры работают следующим образом: если сервер не получает ответа от клиента после трёх попыток (то есть в течение 900 секунд, или 15 минут), то соединение разрывается.

Для настройки этих параметров также редактируем файл sshd_config:

sudo nano /etc/ssh/sshd_config

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

ClientAliveInterval 300
ClientAliveCountMax 3

Перезапустите службу SSH для применения изменений:

sudo systemctl restart sshd

Заключение

Настройка параметров TCPKeepAlive, ClientAliveInterval и ClientAliveCountMax помогает поддерживать стабильные SSH-соединения с удалёнными серверами и предотвращает их разрыв из-за длительного бездействия. Эти параметры особенно полезны для системных администраторов, которые работают с удалёнными серверами в условиях нестабильных сетей.

веб-сервер терминал
Поделиться