Предотвращение истечения времени ожидания соединения SSH / разрыва трубы

Как пользователь Windows а также Mac (за последние 10 лет) я провел много времени в SSH-соединения к веб-серверам, серверам электронной почты, облаку и другим пакетам резервного копирования. Предпочтительным дистрибутивом Linux, несомненно, является CentOS.

Одна из самых неприятных вещей для администраторов серверов - это для прерывания SSH-соединений. Либо внезапно при нажатии кнопки в Putty или Terminal (чаще всего проблема с локальным подключением), либо через некоторое время "холостой ход”- период времени, в течение которого он не взаимодействует с удаленным сервером через сеанс SSH.

Если вы используете Mac и используйте инструмент «Терминал» для удаленного подключения через SSH, после чего после определенного периода бездействия вы обязательно отключитесь с сообщением: «client_loop: отправить разъединение: сломанный канал». Я дал решение в статья здесь, в котором я сказал, что его можно добавить в "/etc/ssh/ssh_config" линия:

Host *
ServerAliveInterval 120

Вышеупомянутое решение действительно для пользователей Mac, и, честно говоря, последние обновления macOS Я не против restart изменения, внесенные в файл "ssh_config", И проблема с отключением неработающей сессии возвращается.

Решение, с помощью которого мы можем предотвратить отключение сеанса SSH на расстоянии, установленном терминал (macOS) или шпатлевка (Windows), как кроме «ServerAliveInterval«С нашего компьютера, чтобы определить удаленный сервер для периодической связи с приложением / клиентом SSH.
Вот почему мы должны поставить директиву "ClientAliveInterval"В"sshd_config«На сервере, к которому мы подключаемся.

Предотвращение истечения времени ожидания / разрыва соединения SSH (советы по ssh_config)

1. Подключаемся к серверу, который хотим активировать, и устанавливаем временной интервал для «ClientAliveInternal». Мы открываем SSH в Putty, Terminal или другой подобной утилите и аутентифицируемся с пользователем. root.

ssh [email protected]

2. Выполните командную строку для поиска файла «sshd_config», если «ClientAliveInterval» активен и какой период времени установлен.

sudo grep "ClientAliveInterval" /etc/ssh/sshd_config

В нашем сценарии ClientAliveInterval отключен, а значение временного интервала равно нулю.

[[email protected] ~]# sudo grep "ClientAliveInterval" /etc/ssh/sshd_config
#ClientAliveInterval 0
[[email protected] ~]# 

Хэштег "#"Ставится перед строкой, отменяет ее. Она неактивна.

3. Открываем редактором "nano"Или"vim"Файл"sshd_config«. Я предпочитаю «нано».

sudo nano /etc/ssh/sshd_config

4. Удалить «#«Перед линией»ClientAliveInterval»И установите количество секунд: 60, 120…

ClientAliveInterval 120
ClientAliveCountMax 10

5. Сохраните изменения и restartУ меня есть услуга "sshd».

sudo systemctl restart sshd

ClientAliveInterval : Это временной интервал в секундах, в течение которого сервер отправляет нулевой пакет данных клиенту / приложению, через которое мы подключаемся к серверу. Эта практика будет поддерживать соединение в рабочем состоянии / в активном состоянии.

ClientAliveCountMax : Не отвечающие клиенты SSH за 10 циклов по 120 секунд (устанавливается «ClientAliveInterval») соединение будет прервано. То есть через 20 минут, в течение которых SSH-клиент не ответил на нулевые пакеты, отправленные сервером.

С этими изменениями соединение SSH станет более стабильным и останется таким же безопасным.

Увлечен технологиями, мне нравится тестировать и писать руководства по операционным системам. macOS, Linux, Windows, о настройке веб-сервера WordPress, WooCommerce и LEMP (Linux, NGINX, MySQL и PHP). Я пишу на StealthSettings.com с 2006 года, а несколько лет спустя я начал писать на iHowTo.Tips обучающие программы и новости об устройствах в экосистеме. Apple: iPhone, iPad, Apple Часы, HomePod, iMac, MacBook, AirPods и аксессуары.

Оставьте комментарий