Инструменты пользователя

Инструменты сайта


linux:ssh:client_loop_send_disconnect_broken_pipe

Это старая версия документа!


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

Сайты / От Бидюков Денис / 27.12.2020 07.02.2022

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

Вас тоже бесит постоянно отваливающееся соединение 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 присутствует

Include /etc/ssh/sshd_config.d/*.conf

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

sudo nano /etc/ssh/sshd_config.d/alive.conf

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

ClientAliveInterval 30
ClientAliveCountMax 30
TCPKeepAlive no

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

Share on facebook

Share on twitter

Share on vk

Share on telegram

Share on whatsapp

На сайте отсутствует реклама

Автор не получает прямой выгоды. Если считаете что материал полезен, поддержите проект

Номер карты

5599 0020 1625 4585

Заранее спасибо!

dampi.ru_wp-content_uploads_2019_05_ujnsvb65-1024x1024.jpeg

Бидюков Денис

Эксперт по сайтам

Занимаюсь продвижением личного бренда с помощью сайта и SEO. Если Вы хотите из обычного сантехника, электрика, врача или фотографа стать востребованным и высокооплачиваемым  специалистом, то я с легкостью Вам помогу.

Похожие записи:

2 комментария к “Ошибка «client_loop: send disconnect: Broken pipe»”

  1. c7461cf4a6afe8fbb5f0ddcd207f14c7?s=50&d=wavatar&r=g c7461cf4a6afe8fbb5f0ddcd207f14c7?s=50&d=wavatar&r=g Alex 07.02.2022 в 08:01 Спасибо, помогло.
    Правда, сначала редактировал на локальном компьютере /etc/ssh/ssh_config
    А нужно было на сервере /etc/ssh/sshd_config Ответить
    1. 48866f63436d726eea1b7671a3c11e81?s=50&d=wavatar&r=g 48866f63436d726eea1b7671a3c11e81?s=50&d=wavatar&r=g Бидюков Денис 07.02.2022 в 13:10 На всякий случай отредактировал статью и акцентировал внимание на то, что редактируем файл на сервере )) Ответить

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Введите комментарий…

Имя*

Email*

Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.

Сайт

Δdocument.getElementById( «ak_js_1» ).setAttribute( «value», ( new Date() ).getTime() );

linux/ssh/client_loop_send_disconnect_broken_pipe.1653237712.txt.gz · Последние изменения: 2023/01/12 12:16 (внешнее изменение)