SSH Linux, OpenSSH client/server

Как определить блокировку SSH брандмауэром или маршрутизатором

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

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

В этой статье
  1. Как распознать проблему и где применимы действия
  2. Возможные причины и диагностические признаки
  3. Пошаговая диагностика и исправление
  4. Как проверить, что проблема действительно устранена
  5. Если результат не получен

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

Соединение по SSH не проходит из отдельной сети. Нужно отличить блокировку локального брандмауэра сервера, маршрутизатора, облачной группы безопасности и ошибку адреса. Перед выполнением определите название программы, редакцию Linux и управляющий сервис. Значения примеров в командах не являются готовой конфигурацией вашего устройства.

#Возможные причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Нет слушающего sshdНа сервере ss не показывает порт SSHДиагностировать службу и реальный Port
Фильтр на сервереПакеты приходят к серверу, но политика nftables/firewalld запрещает входПроверить правила безопасно, не отключая весь фильтр
Блокировка по путиИз локальной сети доступ есть, извне нетПроверить NAT, внешний IP, группы безопасности и сеть провайдера

#Пошаговая диагностика и исправление

  1. Шаг 1. Зафиксируйте ошибку со стороны клиентаОткройте терминал на устройстве с проблемой. Refused значит отказ TCP, timeout — отсутствие своевременного ответа. Замените user и адрес; перед тестом убедитесь, что это ваш сервер.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh -v -o ConnectTimeout=7 -p 22 пользователь@server.example.org
  1. Шаг 2. Проверьте порт на самом сервереЧерез рабочий сеанс или консоль хостинга выполните ss. Если порт 22 не указан, проверьте реальный Port у sshd; брандмауэр здесь ещё не главная гипотеза. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    sudo ss -ltnp | grep -E '(:22[[:space:]]|sshd)'
  1. Шаг 3. Проверьте активность демонаНазвание службы различается: ssh.service в Debian-подобных или sshd.service в RHEL-подобных. Если обе команды показывают Unit not found, установите фактическое имя службы через list-unit-files.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    systemctl status ssh.service sshd.service --no-pager
  1. Шаг 4. Узнайте правила nftables без измененийНа сервере прочитайте правила и найдите цепочки input, dport 22, drop/reject. Вывод может содержать адреса внутренних сетей: не публикуйте его без очистки. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    sudo nft list ruleset | grep -En 'hook input|dport 22|drop|reject'
  1. Шаг 5. Проверьте маршрут к клиентуКоманда на сервере использует реальный публичный IP клиента (не демонстрационную строку); она показывает используемые интерфейс и исходящий адрес. Если маршрут некорректен, исправляйте сеть, а не разрешайте всё подряд.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ip route get 198.51.100.25
  1. Шаг 6. Сопоставьте с внешним периметромЕсли слушатель есть, локальный фильтр допускает соединение, а из другой сети по-прежнему timeout, проверьте в кабинете хостинга разрешение входящего TCP 22 и NAT-перенаправление маршрутизатора. Изменения проверяйте с запасным сеансом. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    sudo journalctl -b -u ssh.service -u sshd.service -n 70 --no-pager

#Как проверить, что проблема действительно устранена

После адресного разрешающего правила повторите соединение из исходной клиентской сети. Не отключайте ufw, firewalld или nftables целиком; при отсутствии доступа используйте консоль управления сервером.

#Если результат не получен

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

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.