For the king ошибка кода сети disconnect by client timeout

Ошибка «client_loop: send disconnect: Broken pipe»

Вас тоже бесит постоянно отваливающееся соединение SSH? Меня это пипец как бесит. Особенно когда пишешь длинную команду, нажимаешь Enter, а тебе вываливается «client_loop: send disconnect: Broken pipe». И снова подключаешься.

Поиск по интернетам ничего не давал кроме того, что тут и там советовали раскомментировать директиву ClientAliveInterval, причем советовали установить значение в 300, причем не объясняя почему именно 300 и что вообще такое ClientAliveInterval.

Само собой я последовал совету и поставил ClientAliveInterval равным 300. Соединение как разрывалось до этого, так и дальше продолжало разрываться. А потом я где-то нашел совет добавить директиву ServerAliveInterval. В итоге сервер перестал отвечать и пришлось восстанавливать бэкап. Тем самым в трубу улетели кучи и кучи настроек, поскольку бэкап был один единственный и там была система в дефолтном состоянии.

За что отвечает директива ClientAliveInterval?

Значение этой директивы определяет через какой промежуток времени начиная с момента простоя клиенту будет отправлен запрос отклика. По умолчанию ClientAliveInterval равен 0, то есть сервер не будет ничего делать.

Простыми словами. У вас открыт терминал, вы подключены к серверу. Выполнили пару команд и ушли читать мануал. Допустим ClientAliveInterval у нас 30, это значи через 30 секунд после последней нашей активности, сервер проверит подключены ли мы к серверу, получив отклик от клиента, сервер не будет разрывать соединение.

Ну вроде как все понятно. Но! Чисто гипотетически мы можем быть подключены не через самое надежное соединение. Например через USB-модем в зоне со слабым сигналом. Предположим в какой-то момент сигнал упал, а сервер нам шлет запрос. Клиент его не получит. Тут на сцену выходит другая директива.

Директива ClientAliveCountMax

По умолчанию значение ClientAliveCountMax равно 3. То есть получается что сервер отправит нам максимум три запроса без подтверждения и уже только тогда закроет соединение.

Если ClientAliveInterval равен 30, а ClientAliveCountMax 3, то сервер закроет соединение через 90 секунд, то есть через полторы минуты, если наш модем за это время не восстановит соединение.

Как видите мы гибко можем манипулировать настройками этих двух директив в зависимости от обстоятельств.

Директива TCPKeepAlive

По умолчанию эта директива имеет значение yes. При активации ClientAliveInterval директиву TCPKeepAlive имеет смысл перевести в no. По сути сама по себе директива ничем особенным не помогает и не мешает, просто по мнению спецов, она может помочь злоумышленникам в атаке на сервер.

Добавляем настройки

У меня в Ubuntu Server 20.04 в файле /etc/ssh/sshd_config присутствует

Поэтому я просто создаю новый файл

И уже туда втыкаем

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

Источники:

https://dampi. ru/oshibka-client_loop-send-disconnect-broken-pipe

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: