Вопрос или проблема
У меня есть две системы в моей домашней сети. Я успешно использовал ssh между ними в течение нескольких месяцев.
Недавно я установил zerotier на “birch” и еще один узел.
В последние несколько дней, при ssh на birch с других систем (все работают на Ubuntu 24.04), я начал получать ошибку “SSH “kex_exchange_identification: read: Connection reset by peer”. Я исправил ее однажды после того, как нашел отсутствующий скрипт уведомления motd, установив пакет ‘update-notifier-common’.
Но сегодня ошибка вернулась. Брандмауэр выключен. hosts.deny пуст. И, что странно, если я ssh на мой маршрутизатор Asus, то могу ssh на ‘birch’. У меня есть две системы Ubuntu 24.4, на которых я получаю эту ошибку при ssh на ‘birch’.
Также, я использую порт Ethernet. Если я отключаю его и включаю WiFi, то могу ssh на IP WiFi, но не на IP Ethernet-адаптера. Если я оставляю проводное соединение включенным, то получаю ошибку на IP WiFi.
Наконец, я вижу это сообщение (оно повторяется каждые 5 секунд) в syslog, которого нет на других системах:
2025-03-02T00:02:29.341013-06:00 birch su[85606]: Bad remote forwarding specification '{portbase}+1:localhost:22'
Я не могу найти ничего по этому поводу и предполагаю, что это связано с проблемой.
Я вижу, что соединение устанавливается (в auth.log, но не в syslog), когда я включаю отладку в sshd_config до DEBUG3:
untu13.8
2025-03-08T12:13:11.907895-06:00 birch sshd[10284]: debug1: compat_banner: match: OpenSSH_9.6p1 Ubuntu-3ubuntu13.8 pat OpenSSH* compat 0x
04000000
2025-03-08T12:13:11.907927-06:00 birch sshd[10284]: debug1: permanently_set_uid: 124/65534 [preauth]
2025-03-08T12:13:11.907961-06:00 birch sshd[10284]: debug1: list_hostkey_types: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
[preauth]
2025-03-08T12:13:11.908179-06:00 birch sshd[10284]: debug1: SSH2_MSG_KEXINIT sent [preauth]
2025-03-08T12:13:11.908236-06:00 birch sshd[10284]: Connection reset by 192.168.1.146 port 59104 [preauth]
192.168.1.146 это ‘birch’
Я вижу аналогичный вывод с “ssh -T -vvv birch”
Я удалил zerotier, перезагрузил, но я в тупике.
Ответ или решение
Для решения вашей проблемы с SSH-соединением, которое не работает с сообщением об ошибке "kex_exchange_identification: read: Connection reset by peer", необходимо провести глубокий анализ. Давайте рассмотрим теоретическую часть, примеры и способы применения решения.
Теоретическая часть
Ошибка "kex_exchange_identification: read: Connection reset by peer" возникает, когда клиентская машина пытается установить SSH-соединение с сервером, но связь разрывается до завершения обмена ключами (kex – key exchange). Это может происходить по разным причинам, включая конфигурационные ошибки, сетевые проблемы или ошибки безопасного ПО.
SSH основывается на алгоритмах обмена ключами для обеспечения безопасности передачи данных. Иногда сбои в этом процессе могут быть вызваны неправильными настройками SSH или сетевыми ограничениями, например, ошибками в файлах конфигурации SSH, ограничениями на уровне устройства или проблемами маршрутизации внутри сети.
Пример из практической ситуации
Из предоставленной информации можно выделить несколько ключевых моментов, которые могут указать на причину проблемы:
-
Недостаточность мотд (Message of the Day) скриптов. После установки пакета
update-notifier-common
проблема временно исчезла. -
Подключение к роутеру ASUS как посреднику позволяет успешно подключаться через SSH к ‘birch’. Это может указывать на особенности маршрутизации или фильтрации трафика внутри вашей сети.
-
Различия при использовании Ethernet и WiFi. Если Ethernet-соединение активно, ошибка возникает даже при попытке использования IP-адреса WiFi адаптера.
-
Ошибочное удаленное переадресация. Сообщение в syslog указывает на ошибку в конфигурации удаленного переадресации портов: "Bad remote forwarding specification ‘{portbase}+1:localhost:22’".
-
Лог-файлы (auth.log и syslog) указывают на сброс соединения до завершения процесса обмена ключами.
Применение решения
Для устранения проблемы и быстрого восстановления работоспособности SSH-соединения, выполните следующие шаги:
-
Проверка конфигурации SSH:
- Откройте файл конфигурации
/etc/ssh/sshd_config
и убедитесь, что все параметры выставлены корректно, особенно касающиеся KexAlgorithms, Ciphers и других ключевых настроек. Неправильные значения могут мешать корректному обмену ключами.
- Откройте файл конфигурации
-
Отладка сетевого соединения:
- Проверьте настройки сети на наличие ограничений или правил, которые могут прерывать соединение. Параллельно, отключите любые VPN-сервисы и повторно проверьте работу SSH.
-
Анализ конфигурации ZeroTier:
- Убедитесь, что после удаления ZeroTier его конфигурации не остались в системе и не конфигурируют сеть в неверном режиме, особенно что касается маршрутизации и таблиц IP.
-
Подключение через разные интерфейсы:
- Проверьте, что каждый сетевой интерфейс (Ethernet или WiFi) имеет отдельные и корректно настроенные IP, и что маршруты до ‘birch’ не конфликтуют.
-
Диагностика соединения с помощью
netstat
иiptables
:- Используйте команды
netstat -tuln
иiptables -L
для обеспечения отсутствия сетевых фильтров или конфликтующих правил, мешающих SSH-соединению.
- Используйте команды
-
Обновление системы:
- Убедитесь, что все связанные пакеты и компоненты операционной системы актуальны:
apt update && apt upgrade
. Обновления могут содержать исправления известных ошибок.
- Убедитесь, что все связанные пакеты и компоненты операционной системы актуальны:
-
Тщательный аудит логов:
- Продолжайте анализировать логи после выполнения решений на возможность выявления дополнительных сообщений об ошибках.
-
Обратитесь к документации SSH и актуальным форумам:
- Освежите знания из официальной документации SSH, а также тематических форумов, где обсуждаются подобные конфликты и их решения.
Заключение
Используя такой многогранный подход, вы должны выявить истинную причину сбоя и восстановить стабильность SSH-соединений в вашей сети. Выделите время на последовательное выполнение каждого шага, чтобы устранить все возможные источники проблемы.