Рейтинг:0

Почему SSH отключается с сообщением «ssh_dispatch_run_fatal: подключение к порту x.x.x.x 2020: соединение повреждено»?

флаг cn

Я пытаюсь понять, почему я продолжаю отключаться от сеанса SSH. Хост — это сервер CentOS, а клиенты — MacOS.

Ошибка кажется спорадической - иногда раз в час, иногда несколько раз в минуту. Но что интересно, это происходит не только тогда, когда я не использую соединение — я могу буквально печатать, и соединение будет установлено. Ошибка:

ssh_dispatch_run_fatal: подключение к порту x.x.x.x 2020: подключение повреждено

Я также пытался открыть несколько вкладок с открытым ssh-соединением в каждой, и они, кажется, отключаются одновременно.

Включив уровень отладки 3, у меня есть /var/журнал/безопасный вывод здесь во время отключения:

16 февраля 08:06:08 46 sshd[2864]: отладка2: канал 0: запрос [email protected] подтвердить 1
16 февраля 08:06:08 46 sshd[2864]: debug3: отправить пакет: тип 98
16 февраля 08:06:08 46 sshd[2864]: debug3: получить пакет: тип 100
16 фев, 08:06:08 46 sshd[2864]: debug1: Получил 100/121 для поддержки активности
16 фев 08:06:38 46 sshd[2864]: отладка2: канал 0: запрос [email protected] подтвердить 1
16 февраля, 08:06:38 46 sshd[2864]: debug3: отправить пакет: тип 98
16 февраля 08:06:38 46 sshd[2864]: debug3: получить пакет: тип 100
16 фев, 08:06:38 46 sshd[2864]: debug1: Получил 100/122 для поддержки активности
16 февраля, 08:06:51 46 sshd[4517]: соединение закрыто x.x.x.x портом 62073
16 февраля 08:06:51 46 sshd[4517]: отладка1: канал 0: свободен: сеанс сервера, nchannels 1
16 февраля 08:06:51 46 sshd[4517]: debug3: канал 0: статус: Открыты следующие соединения:\r\n #0 server-session (t4 r0 i0/0 o0/0 fd 12/8 cc - 1)\г\п
16 февраля, 08:06:51 46 sshd[4517]: закрыть сеанс: пользователь my_username из x.x.x.x, порт 62073, идентификатор 0
16 февраля 08:06:51 46 sshd[4517]: debug3: mm_request_send ввод: введите 30
16 февраля, 08:06:51 46 sshd[4517]: debug3: session_unused: идентификатор сеанса 0 не используется
16 февраля, 08:06:51 46 sshd[4517]: debug1: do_cleanup
16 февраля 08:06:51 46 sshd[4517]: debug3: PAM: вход sshpam_thread_cleanup
16 февраля 08:06:51 46 sshd[4517]: debug3: mm_request_send ввод: введите 122
16 февраля 08:06:51 46 sshd[4517]: debug3: mm_request_receive_expect ввод: введите 123
16 февраля 08:06:51 46 sshd[4517]: debug3: mm_request_receive ввод
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_request_receive ввод
16 февраля 08:06:51 46 sshd[4514]: debug3: monitor_read: проверка запроса 30
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_answer_pty_cleanup входит
16 февраля, 08:06:51 46 sshd[4514]: debug1: session_by_tty: session 0 tty /dev/pts/1
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_session_close: сеанс 0 pid 4517
16 февраля, 08:06:51 46 sshd[4514]: debug3: mm_session_close: tty /dev/pts/1 ptyfd 4
16 февраля, 08:06:51 46 sshd[4514]: debug1: session_pty_cleanup: выпуск сеанса 0 /dev/pts/1
16 февраля, 08:06:51 46 sshd[4514]: debug3: session_unused: идентификатор сеанса 0 не используется
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_request_receive ввод
16 февраля 08:06:51 46 sshd[4514]: debug3: monitor_read: проверка запроса 122
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_request_send ввод: введите 123
16 февраля 08:06:51 46 sshd[4517]: debug3: mm_request_send ввод: введите 124
16 февраля 08:06:51 46 sshd[4517]: передано: отправлено 1503792, получено 18928 байт
16 февраля, 08:06:51 46 sshd[4517]: Закрытие соединения с x.x.x.x портом 62073
16 фев, 08:06:51 46 sshd[4517]: debug3: вход mm_audit_event
16 февраля 08:06:51 46 sshd[4517]: debug3: mm_request_send ввод: введите 112
16 февраля 08:06:51 46 sshd[4517]: debug3: mm_request_send ввод: введите 50
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_request_receive ввод
16 февраля 08:06:51 46 sshd[4514]: debug3: monitor_read: проверка запроса 124
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_request_receive ввод
16 февраля 08:06:51 46 sshd[4514]: debug3: monitor_read: проверка запроса 112
16 фев, 08:06:51 46 sshd[4514]: debug3: вход mm_answer_audit_event
16 февраля 08:06:51 46 sshd[4514]: debug3: mm_request_receive ввод
16 февраля 08:06:51 46 sshd[4514]: debug3: monitor_read: проверка запроса 50
16 фев 08:06:51 46 sshd[4514]: debug3: mm_answer_term: разрыв сеансов
16 февраля 08:06:51 46 sshd[4514]: debug1: PAM: очистка
16 февраля 08:06:51 46 sshd[4514]: debug1: PAM: закрытие сеанса
16 февраля, 08:06:51 46 sshd[4514]: pam_unix(sshd:session): сеанс закрыт для пользователя my_username
16 февраля, 08:06:51 46 sshd[4514]: debug1: PAM: удаление учетных данных

Части запутаны Икс или же my_username


Обновлять

Я добавил новый набор журналов выше - меньше, чем изначально, но я надеюсь, что применимые. Новая строка:

16 февраля, 08:06:51 46 sshd[4517]: соединение закрыто x.x.x.x портом 62073

меня интересует.Будет ли это означать, что мое устройство отключается и не связано с SSH? Я вижу (я думаю), что успешные пакеты проверки активности отправляются прямо перед отключением.


Я попытался перезапустить демон и использовать версию SSH OpenSSH (через brew) на Mac, и это не имело никакого значения.

Информация о сервере:

▪ sshd.service — демон сервера OpenSSH
   Загружено: загружено (/usr/lib/systemd/system/sshd.service; включено; предустановка поставщика: включена)
   Активно: активно (работает) с пятницы 11 февраля 2022 г., 10:21:40 по Гринвичу; 1ч 52мин назад
     Документы: человек:sshd(8)
           мужчина: sshd_config(5)
 Основной PID: 6271 (sshd)
   Группа CG: /system.slice/sshd.service
           ââ6271 /usr/sbin/sshd -D

Единственные отличия в нашем sshd_config для стандартной CentOS это порт, уровень журнала и:

ClientAliveInterval 30
ClientAliveCountMax 5

Почему меня отключают? Из-за чего может быть повреждено соединение?

asktyagi avatar
флаг in
у вас также есть исключения «Плохая длина пакета» в журналах? если это так, изменение живого интервала и livecountmax может помочь. Пожалуйста, также поделитесь версией ssh.
Zareh Kasparian avatar
флаг us
Также нужно добавить, что ваш лог-файл недоступен, похоже, срок действия файла истек.
флаг cn
Всем спасибо, я снова добавил журналы. @asktyagi Я нигде в журнале не вижу исключений «Плохая длина пакета».
asktyagi avatar
флаг in
Пожалуйста, добавьте журналы, которые показывают ошибку «Соединение повреждено», чтобы мы поняли, что произошло до этой ошибки.
флаг cn
Это журналы с того момента, когда я увидел ошибку «Соединение повреждено» - в журналах об этом не упоминалось, только со стороны клиента (iTerm).
asktyagi avatar
флаг in
Обновил мой ответ на основе ваших журналов, но, если возможно, обновите также журналы на стороне клиента, особенно за 5-10 строк до появления сообщения «Соединение повреждено».
Рейтинг:1
флаг in

Скорее всего, это проблема с отключением, я не уверен, какую версию вы используете, если вы проверите базу кода ssh, в которой говорится:

ssh вернет SSH_ERR_CONN_CORRUPT в основном из-за sshpkt_disconnect.

Теперь вопрос в том, как вы можете сохранить свое соединение, у нас есть несколько способов одностороннего «milenao», которые уже были разделены, но перед изменением настройки, пожалуйста, сначала ознакомьтесь с эффектом. Другим способом является запуск туннеля для отправки любого вида трафика, поэтому служба считает, что соединение активно, например, вы можете отправлять пинг, дату, смотреть, спать после некоторой частоты в соответствии с вашими потребностями.

Обновлять:

С приведенными выше журналами я могу сказать, что ваше соединение не работает, и закрытие соединения было инициировано, это то же самое, что мы прогнозируем.

   /* Соединение разорвано. */
   ssh_packet_get_bytes(ssh, &ibytes, &obytes);
   verbose("Передано: отправлено %llu, получено %llu байт",
   (unsigned long long)obytes, (unsigned long long)ibytes);

   verbose("Закрытие соединения с портом %.500s %d", remote_ip, remote_port);
Рейтинг:0
флаг fr

Отсюда: https://linux-tips.com/t/how-to-solve-ssh-disconnect-packet-corrupt-problems/258

Попробуйте запустить эту команду, чтобы отключить аппаратную контрольную сумму:

sudo ethtool -K eth0 tx off rx off

Похоже, что это может быть проблема с оборудованием. Я также читал в другом месте, что включение/выключение всего сервера или, возможно, выполнение ip link set dev ${INTERFACE} не работает; ip link set dev ${INTERFACE} up тоже может работать.

Рейтинг:0
флаг ga

вы можете попробовать увеличить значения ClientAliveInterval и ClientAliveCountMax:

ClientAliveInterval 60
ClientAliveCountMax 10

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

флаг cn
Эти отключения иногда происходят, когда я на самом деле печатаю в своей оболочке SSH, поэтому я не верю, что это связано с настройками живого интервала.
Рейтинг:0
флаг us

У меня была такая же проблема, поэтому я добавил следующее в свой .ssh/конфигурация файл, и я еще не видел эту ошибку.

Хост i-* mi-*
Серверживеинтервал 300
ServerAliveCountMax 2

Нет гарантий, что это поможет, но до сих пор это позволяло моему соединению оставаться открытым дольше, чем раньше.

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

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