Какие порты использует SSH-протокол
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Порт по умолчанию и конфигурация SSH
Протокол SSH (Secure Shell) для своей работы использует порт TCP 22 по умолчанию. Это стандарт, закрепленный в официальных документах IANA (Internet Assigned Numbers Authority). Однако важной особенностью SSH является его высокая гибкость в конфигурации, и порт может быть изменен администратором системы по соображениям безопасности или для запуска нескольких экземпляров демона на одном хосте.
Основные порты и их назначение
- TCP 22 — Основной и стандартный порт для работы демона SSH-сервера (например,
sshd). Именно на этот порт по умолчанию подключаются SSH-клиенты (ssh, PuTTY, WinSCP). - Диапазон портов для перенаправления (forwarding) — SSH не использует фиксированные дополнительные порты для таких функций, как туннелирование (проброс портов,
LocalForward,RemoteForward) или динамическое прокси (-D). Вместо этого при создании туннеля клиент или сервер слушают (bind) на указанном локальном или удаленном порту, который может быть любым доступным портом (например,localhost:8080,*:3306).
Пример проверки и смены порта SSH-сервера
Основной файл конфигурации SSH-сервера в Unix-подобных системах — /etc/ssh/sshd_config. Порт задается директивой Port.
# Проверим текущие настройки порта в конфигурации
sudo grep -E "^Port|^#Port" /etc/ssh/sshd_config
# Стандартный вывод часто выглядит так:
#Port 22
# (Значение по умолчанию, закомментировано. Сервер использует порт 22)
Чтобы сменить порт на 2222, необходимо отредактировать файл:
- Открываем конфигурационный файл в редакторе (требуются права администратора).
- Находим или добавляем директиву
Port. Можно раскомментировать строку#Port 22и изменить значение, либо добавить новую строку. - Крайне важно добавить новый порт в дополнение к старому на этапе тестирования, чтобы не потерять доступ к серверу.
# Пример безопасного изменения конфигурации.
# Добавляем новую директиву Port, оставляя старую.
# После успешной проверки подключения на новом порту старую строку можно удалить.
Port 22
Port 2222
- Сохраняем файл и перезапускаем SSH-сервер.
# Для систем на основе systemd (Ubuntu, CentOS 7+, Debian 8+)
sudo systemctl restart sshd
# Проверяем, что демон слушает оба порта
sudo ss -tlnp | grep sshd
После этого сервер будет принимать подключения и на порту 22, и на порту 2222.
Важные замечания для безопасной работы
- Недостаточность смены порта для безопасности: Изменение порта с 22 на другой (security through obscurity) не является надежной мерой защиты. Это лишь немного усложняет работу автоматических сканеров и ботов, которые часто атакуют только стандартный порт 22. Надежная безопасность SSH обеспечивается:
* Отключением аутентификации по паролю (`PasswordAuthentication no`).
* Использованием **аутентификации по открытому ключу**.
* Настройкой файрвола (например, `ufw`, `firewalld`, `iptables`).
* Использованием Fail2Ban для блокировки подозрительных попыток подключения.
* Регулярным обновлением ПО.
- Проброс портов через SSH (Port Forwarding): При использовании функций
-L(локальный проброс) или-R(удаленный проброс) SSH-клиент создает дополнительный сокет на указанном порту локальной или удаленной машины. Этот порт выбирается пользователем и не регламентирован протоколом. Сам SSH туннель при этом продолжает использовать для управления основное соединение, установленное через порт 22 (или иной заданный).
Вывод
SSH по умолчанию использует TCP-порт 22, но он легко меняется в конфигурации. Ключевая задача QA-инженера при тестировании инфраструктуры или приложений, связанных с SSH, — понимать эту настройку, уметь проверить доступность сервиса на нужном порту (например, с помощью telnet, nc или ssh -p), а также учитывать, что туннелирование создает соединения на других, произвольных портах. При составлении чек-листов и тест-кейсов для безопасности важно проверять не только стандартный порт, но и корректность работы SSH после его смены и надежность применяемых методов аутентификации.