Содержание статьи
По умолчанию SSH использует порт 22, но на современных серверах администраторы часто изменяют его для повышения безопасности. Чтобы точно определить, какой порт используется, необходимо получить доступ к конфигурации сервиса или провести сетевое сканирование с учетом правил фаервола.
Первый и наиболее надежный способ – это проверка файла конфигурации /etc/ssh/sshd_config. В нем параметр Port указывает номер порта, который слушает SSH. Если в файле указано несколько значений, сервис принимает подключения на всех перечисленных портах. После изменения файла требуется перезапустить службу командой systemctl restart sshd или service sshd restart.
Если прямой доступ к серверу отсутствует, можно использовать внешние методы сканирования. Инструменты вроде nmap позволяют определить открытые порты и определить, на каком из них работает SSH. Например, команда nmap -p 1-65535 -sV <адрес_сервера> проверяет все порты и идентифицирует сервисы по отклику. Такой подход полезен при аудитах безопасности и удаленной диагностике.
Важно учитывать ограничения сетевой инфраструктуры. Фаервол может скрывать нестандартный порт, и ICMP или TCP ping могут быть заблокированы. В таких случаях помогает проверка логов фаервола или использование сервисов мониторинга, которые фиксируют попытки подключения к SSH на всех портах.
Знание точного порта SSH критично для корректного подключения, настройки автоматизации и предотвращения несанкционированного доступа. Четкая идентификация порта позволяет настроить безопасные правила доступа, ограничить brute-force атаки и интегрировать сервер в централизованные системы управления.
Проверка стандартного порта SSH через команду netstat
Команда netstat -tulnp добавляет отображение PID и имени процесса. Это позволяет точно идентифицировать, какой процесс отвечает за открытие порта 22, что особенно полезно при подозрении на нестандартные службы, занимающие этот порт.
При проверке нескольких серверов можно использовать фильтр grep: netstat -tuln | grep :22. Это ускоряет анализ и сразу показывает только строки, относящиеся к порту SSH, исключая лишние сетевые соединения.
Использование команды ss для поиска активного SSH-порта
Утилита ss входит в пакет iproute2 и предназначена для анализа сетевых сокетов в Linux. В отличие от устаревшего netstat, она работает быстрее за счёт прямого обращения к данным ядра через netlink. Для определения активного SSH-порта необходимо просмотреть прослушиваемые TCP-сокеты, так как служба SSH (sshd) работает поверх TCP.
Если процесс sshd не отображается, следует проверить, запущена ли служба: systemctl status sshd или systemctl status ssh (в зависимости от дистрибутива). При активном сервисе, но отсутствии строки в ss, возможна привязка только к конкретному IP-адресу, например 192.168.1.10:2222. В этом случае команда ss -tlnp | grep 192.168 поможет выявить порт.
Для автоматизации проверки можно использовать фильтрацию по состоянию LISTEN: ss -tlnp state listening | grep sshd. Такой подход исключает активные клиентские соединения и показывает только сокеты в режиме ожидания подключений. Это позволяет однозначно определить порт, на котором служба SSH принимает входящие соединения.
Просмотр конфигурации SSH в файле sshd_config
Файл /etc/ssh/sshd_config управляет настройками SSH-сервера, включая номер порта. Для его просмотра используйте команды cat, less или grep. Например, команда grep ^Port /etc/ssh/sshd_config сразу покажет строку с указанием порта, который слушает SSH.
Если параметр Port закомментирован символом #, сервер использует стандартный порт 22. В конфигурации можно встретить несколько директив Port, что позволяет одновременно принимать подключения на разных портах. Проверяйте все активные строки, чтобы точно определить текущий порт.
При редактировании sshd_config рекомендуется использовать sudo nano /etc/ssh/sshd_config или vim, а после изменений применять команду sudo systemctl restart sshd для перезапуска сервиса. Это гарантирует, что сервер начнет слушать на новых портах без сбоев.
Дополнительно стоит обратить внимание на директивы ListenAddress и AddressFamily, которые ограничивают интерфейсы и протоколы. Это важно, если сервер имеет несколько сетевых интерфейсов или работает в IPv6-среде. Анализ этих параметров помогает безопасно настроить SSH и избежать случайного открытия нежеланных портов.
Определение порта SSH с помощью nmap
Утилита nmap позволяет точно определить, на каком TCP-порту запущен SSH-сервис, даже если он перенесён с 22 на нестандартное значение. Базовая проверка выполняется через сканирование диапазона портов с указанием протокола TCP. Для ускорения анализа рекомендуется ограничить диапазон портов (например, 1–65535 при полном аудите или 1–20000 при предположительно смещённом сервисе) и использовать параметр определения версии сервиса (-sV), чтобы отличить SSH от других демонов.
Для повышения точности рекомендуется сочетать определение версии (-sV) с агрессивным режимом (-A), который дополнительно включает определение ОС и скриптовое сканирование NSE. Это позволяет получить информацию о версии протокола (SSH-1 или SSH-2), поддерживаемых алгоритмах шифрования и ключах хоста. В случае фильтрации пакетов целесообразно увеличить таймауты и использовать параметр -Pn, если сервер не отвечает на ICMP-запросы.
| PORT | Номер TCP-порта, на котором обнаружен сервис |
| STATE | Состояние порта (open – доступен, filtered – фильтруется, closed – закрыт) |
| SERVICE | Определённый тип сервиса (ssh при успешной идентификации) |
| VERSION | Версия SSH-сервера (например, OpenSSH 8.4) |
Если порт отображается как filtered, это означает фильтрацию межсетевым экраном. В такой ситуации применяется сканирование с флагом -sT (полное TCP-соединение), которое может обойти ограничения некоторых firewall. Также возможно использование фрагментации пакетов (-f) для анализа поведения фильтрации. Отсутствие результата при полном диапазоне портов обычно указывает на ограничение доступа по IP.
При работе через VPN или из внутреннего сегмента сети результаты могут отличаться от внешнего сканирования. Это связано с политиками NAT и ACL. Рекомендуется выполнять проверку из того же сетевого сегмента, из которого планируется администрирование. В корпоративных средах целесообразно согласовать сканирование с политикой безопасности, так как активное исследование портов фиксируется системами мониторинга.
После определения точного порта необходимо проверить доступность подключения через SSH-клиент с явным указанием найденного значения. Если версия сервера устарела, следует обновить программное обеспечение и ограничить доступ через настройки firewall, разрешив подключение только с доверенных IP-адресов. Сканирование nmap рекомендуется использовать исключительно для администрирования собственных серверов или при наличии официального разрешения владельца инфраструктуры.
Проверка открытых портов через ufw и iptables
Для проверки открытых портов на сервере через ufw сначала убедитесь, что служба активна командой sudo ufw status verbose. Эта команда выведет список правил с указанием разрешённых и заблокированных портов, включая протоколы TCP и UDP. SSH-порт по умолчанию 22 должен отображаться как “ALLOW” при корректной настройке.
Если ufw показывает только общие правила, а точный порт SSH не указан, проверьте конфигурацию файла /etc/ssh/sshd_config на строку Port. После изменения настроек ufw необходимо выполнить sudo ufw reload, чтобы новые правила вступили в силу и порт SSH стал доступен по указанному значению.
Для более детальной диагностики используйте iptables: sudo iptables -L -n -v отображает все активные цепочки и правила с количеством пакетов и байт. В столбцах target и dpt легко найти, разрешён ли нужный порт SSH и какой интерфейс используется для подключения.
Чтобы исключить конфликт правил между ufw и iptables, проверяйте, что ufw включен в режиме управления iptables, иначе одно из правил может блокировать доступ. Для поиска конкретного порта SSH в iptables применяют фильтр: sudo iptables -L -n | grep dpt:22 или заменяют 22 на ваш нестандартный порт.
Регулярная проверка открытых портов через ufw и iptables позволяет своевременно выявлять незапланированные изменения и блокировки. Настройка логирования ufw с sudo ufw logging on и просмотр журналов /var/log/ufw.log дополняет мониторинг, фиксируя попытки подключения к SSH и упрощая аудит безопасности.
Использование логов сервера для обнаружения SSH-порта
Системные журналы фиксируют все входящие подключения к службе SSH с указанием локального порта, к которому было выполнено обращение. В большинстве дистрибутивов Linux записи находятся в файлах /var/log/auth.log или /var/log/secure. При работе с systemd применяется журнал
Для точного определения порта важно анализировать именно события запуска демона
Дополнительно стоит фильтровать журнал по ключевым словам «Listening» и «sshd». Это позволяет исключить клиентские подключения и сосредоточиться на серверной стороне. При централизованном логировании через
При нестандартной конфигурации или контейнеризации (например, запуск в Docker с пробросом портов) в логах будет отражён внутренний порт службы, а не внешний. В такой ситуации следует сопоставлять записи sshd с данными о сетевых подключениях системы, чтобы убедиться, что внутренний порт (например, 22) действительно перенаправлен на внешний (например, 2222). Логи помогают подтвердить, что сам демон слушает конкретный порт, даже если внешний доступ осуществляется через NAT или reverse proxy.
Регулярный анализ журналов позволяет выявить изменения порта после обновлений или перезапуска службы. Если администратор меняет параметр Port в конфигурации и перезапускает sshd, новая запись о прослушивании появляется сразу после времени рестарта. Сравнение временных меток запуска службы и записей о прослушиваемом порте даёт точное понимание, какой порт активен в текущий момент.
Вопрос-ответ:
Как узнать, какой порт используется для SSH на сервере Linux?
Самый простой способ — проверить конфигурационный файл SSH. Обычно это файл /etc/ssh/sshd_config, в котором есть строка с параметром Port. Там указано число, которое сервер использует для подключения по SSH. Если эта строка закомментирована, значит используется стандартный порт 22.
Можно ли определить порт SSH без доступа к настройкам сервера?
Да, это возможно с помощью сетевых сканеров, например, команды nmap. Сканер проверяет открытые порты на сервере и может показать, на каком порте работает служба SSH. Однако такие методы следует использовать только на своих серверах или с разрешения владельца, чтобы не нарушать закон.
Почему SSH может работать не на стандартном порте 22?
Администраторы часто меняют порт для повышения безопасности и уменьшения количества автоматических атак. Нестандартный порт делает сервер менее заметным для сканеров и ботов, которые ищут открытые порты 22. В этом случае нужно уточнять порт у администратора или использовать методы сканирования для его определения.
Как проверить, слушает ли сервер определённый порт для SSH?
На сервере можно использовать команды вроде netstat или ss, чтобы увидеть список всех прослушиваемых портов и процессов, которые их используют. Например, команда ss -tln покажет TCP-порты в режиме прослушивания, и среди них будет порт SSH с указанием процесса sshd.
Можно ли настроить проверку порта SSH автоматически?
Да, можно использовать скрипты или системные инструменты мониторинга, которые периодически проверяют доступность SSH на заданном порте. Это позволяет быстро обнаружить, если порт изменился или служба перестала работать. Часто это делается с помощью cron и утилит вроде nc или telnet.
Как узнать, какой порт SSH используется на сервере без доступа к файлу конфигурации?
Если у вас нет прямого доступа к файлу конфигурации, определить порт можно с помощью сетевого сканирования. Например, утилиты типа nmap позволяют просканировать сервер и выявить, на каком порту слушает служба SSH. Нужно указать диапазон портов, чтобы программа проверила стандартный 22-й и другие возможные номера. Такой способ безопасен, если вы проводите сканирование своего собственного сервера или имеете разрешение на тестирование.
Можно ли изменить порт SSH на сервере и как это повлияет на подключение?
Да, изменить порт SSH можно через конфигурационный файл сервиса. После изменения порта необходимо перезапустить службу. Это приведет к тому, что стандартные клиенты будут пытаться подключаться на старый порт и не смогут установить соединение, пока не будет указан новый номер порта. Следует уведомить всех пользователей о смене порта и обновить настройки клиентов, чтобы избежать проблем с доступом.
