Почему стандартный OpenSSH не подключается к серверу, а PuTTY подключается: причины и решения

Проблема подключения к Raspberry Pi по SSH: таймаут без ошибок

Многие пользователи Raspberry Pi предпочитают подключаться к устройству удалённо через SSH. Я сам долгое время успешно использовал OpenSSH для подключения к своему Raspberry Pi без каких-либо проблем. Однако недавно, после переустановки операционной системы на Raspberry Pi, я столкнулся с проблемой: при попытке подключения по SSH соединение просто зависало, а потом происходил таймаут без вывода каких-либо ошибок.

Диагностика проблемы и альтернативные решения

Для диагностики проблемы я установил PuTTY и попробовал подключиться к Raspberry Pi с его помощью. К моему удивлению, PuTTY подключился без каких-либо проблем — система работала корректно. Однако я хотел продолжить использовать стандартный OpenSSH.

Запуск ssh с максимальным уровнем отладки -vvv показал, что попытка соединения уходит в таймаут:

plaintext
debug1: Connecting to 192.168.1.90 [192.168.1.90] port 22.
<несколько минут ожидания>
debug1: connect to address 192.168.1.90 port 22: Connection timed out
ssh: connect to host 192.168.1.90 port 22: Connection timed out

Также были использованы дополнительные параметры конфигурации, однако проблема сохранилась.

Разбор конфигурации и гипотезы

Версия OpenSSH на Raspberry Pi — 9.2. Периодически в интернете встречаются рекомендации, что причинами подобных проблем могут быть несовместимости в криптографических алгоритмах. Я попытался подключиться с дополнительными параметрами, разрешая устаревшие алгоритмы:

bash
ssh -oHostKeyAlgorithms=+ssh-rsa -oKexAlgorithms=+diffie-hellman-group1-sha1 -oCiphers=+aes128-cbc user@192.168.1.90

Это, однако, не решило проблему.

При использовании plink (аналога PuTTY для командной строки) подключение проходило успешно, что дополнительно подтверждало, что сервер доступен и корректно реагирует.

Выявленная причина: роль IP QoS (DSCP) в проблеме таймаута

Основной разгадкой стала рекомендация запускать ssh с параметром:

bash
ssh -o IPQoS=0 user@192.168.1.90

Это решило проблему. По сути, OpenSSH по умолчанию использует специальную маркировку IP пакетов — DSCP (Differentiated Services Code Point), чтобы сигнализировать сети о приоритетах трафика. Однако некоторые сетевые устройства, такие как маршрутизаторы, коммутаторы или же настройки IP Tables на Raspberry Pi, могут некорректно обрабатывать пакеты с установленными DSCP параметрами.

В результате блокируются или теряются пакеты, что приводит к таймауту соединения. Использование параметра IPQoS=0 отключает установку таких меток, позволяя установить соединение без проблем.

Почему проблема не связана с криптоалгоритмами

Важно понимать, что ошибка Connection timed out — это сетевой таймаут, когда клиент не может даже установить базовое TCP подключение к порту 22. Это означает, что проблемы с алгоритмами криптографии здесь не при чём, так как до начала переговоров о шифровании соединение попросту не доходит.

Таким образом, предположение, что сервер “непонимает” современные алгоритмы, не объясняет проблему таймаута.

Как временно и постоянно исправить проблему

Временное решение

Добавлять при каждом подключении параметр:

bash
ssh -o IPQoS=0 user@192.168.1.90

Постоянное решение

Чтобы не вводить параметр вручную, его можно добавить в файл конфигурации SSH клиента:

bash
echo -e "Host 192.168.1.90\n IPQoS 0" >> ~/.ssh/config

Это позволит применять настройку автоматически для данного хоста.

Поиск и устранение корня проблемы

Данная проблема сигнализирует о некорректной работе сетевого оборудования с IP DSCP-пакетами. Рекомендуется проверить:

  • Маршрутизатор и коммутаторы на пути следования пакетов — возможно, в их настройках нужно изменить обработку QoS или обновить прошивки.
  • Правила файрвола (iptables) и другие сетевые фильтры на Raspberry Pi и в локальной сети.
  • Обновление сетевого ПО и драйверов.

Решение проблемы в оборудовании позволит использовать все преимущества DSCP без сбоев.

Заключение

Если при подключении по SSH к Raspberry Pi вы получаете ошибку таймаута без ошибок и при этом альтернативные клиенты (PuTTY, plink) работают корректно, стоит обратить внимание на параметр IPQoS. Добавление -o IPQoS=0 в команду подключения или настройка в конфиге SSH клиента поможет временно решить проблему.

Однако рекомендуется искать и устранять корень проблемы в вашей сети, так как некорректная обработка DSCP-пакетов может влиять и на другие аспекты работы сети.


Ключевые слова: Raspberry Pi, SSH, OpenSSH, таймаут подключения, IPQoS, DSCP, проблема подключения, сеть, PuTTY, настройка SSH.

Источник

Ответить

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