Как изменить стандартный порт SSH
SSH-протокол шифрует трафик для безопасной передачи данных. Его используют, чтобы удалённо подключаться к операционным системам и базам данных, обмениваться файлами, выполнять команды на удалённых машинах и для других задач.
По умолчанию SSH работает на порту 22. Часто в качестве дополнительной меры безопасности рекомендуют изменить этот порт на нестандартный. Эта мера повышает защиту от ботов, которые массово сканируют сеть на наличие открытых портов и подбирают учётные данные (логины и пароли).
Как изменить SSH-порт
Команда для подключения по SSH в терминале Linux:
# ssh username@ip_addressЕсли порт SSH был изменен, явно укажите его вручную. Пример команды для порта 2233:
# ssh -p 2233 username@ip_addressНастройка конфигурационного файла
Убедитесь, что выбранный SSH-порт свободен. Для этого подойдёт утилита ss из пакета iproute2.
Debian-based ОС
# apt install iproute2RedHat-based ОС
# yum install iproute2Также для проверки доступности порта можно использовать утилиту netstat.
Debian-based ОС
# apt install net-toolsRedHat-based ОС
# yum install net-toolsДалее проверьте занят ли порт.
Debian-based ОС
# ss -tlpn | grep ':22'
# netstat -tlpn | grep ':22'RedHat-based ОС
# ss -tlpn | grep ':22'
# netstat -tlpn | grep ':22'Чтобы избежать повтора, дублировать описание команд не будем, поскольку их ключи в Ubuntu и CentOS одинаковы.
Вывод:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=745,fd=7))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=745,fd=8)) Порт 22 занят. Проверьте другой порт, который нужно использовать для замены:
# ss -tlpn | grep ':2233' Поскольку вывод пустой, значит, порт свободен, и можно его занять.
В любом текстовом редакторе измените порт в конфигурационном файле:
# vim /etc/ssh/sshd_configили
# nano /etc/ssh/sshd_configНайдите строку:
Port 22Если строка начинается с #, символ нужно удалить. Укажите новое значение порта, например, 2233. Сохраните изменения.
Рекомендуем использовать подход с отдельными конфигурационными файлами (drop-in) OpenSSH. Это позволяет вносить изменения (например, смену порта) не в основной файл /etc/ssh/sshd_config, а в отдельные файлы внутри каталога /etc/ssh/sshd_config.d/. Такой метод упрощает управление настройками: все правки собраны в одном месте, их легко отслеживать, а для возврата к стандартным настройкам достаточно удалить соответствующий drop-in файл.
Чтобы изменить порт этим способом, создайте и откройте файл конфигурации:
nano /etc/ssh/sshd_config.d/custom-port.confДобавьте в него директиву с другим портом:
Port 2233Настройка файрвола
Если на сервере активен файрвол (например, ufw или firewalld), перед перезапуском SSH-службы необходимо добавить правило для нового порта. Игнорировать этот шаг нельзя: это может привести к блокировке подключения и потере удаленного доступа после перезагрузки службы.
Во время настройки советуем сохранять текущую SSH-сессию открытой. Закройте её только после успешного тестирования подключения к новому порту.
Ниже приведены команды для настройки популярных файрволов.
Debian-based ОС с UFW
Проверьте состояние файрвола и список активных правил:
# ufw status verboseДобавьте правило, разрешающее подключения к новому SSH-порту:
# ufw allow 2233/tcpПроверьте список новых правил:
# ufw status numbered RedHat-based ОС с firewalld
Убедитесь, что служба firewalld работает:
# systemctl is-active firewalldПроверьте текущую конфигурацию и список открытых портов:
# firewall-cmd --list-allНастройте файрвол. Первая команда добавляет правило для нового порта в постоянную конфигурацию, вторая — применяет это изменение:
# firewall-cmd --permanent --add-port=2233/tcp
# firewall-cmd --reloadУбедитесь, что нужный порт добавлен в список разрешённых:
# firewall-cmd --list-portsПроверка синтаксиса конфигурации
Перед выполнением перезапуска службы рекомендуется провести проверку синтаксиса конфигурации SSH-демона. Это позволяет выявить возможные ошибки в настройках и избежать потери доступа к серверу из-за некорректной конфигурации:
# sshd -t Если вывод пуст, значит, синтаксис корректен.
Перезапуск SSH
Важно: некорректная конфигурация может привести к разрыву соединения с сервером. Сначала лучше потренироваться на тестовой машине. Также убедитесь, что у вас есть запасной способ доступа (например, через консоль VNC или KVM).
Перезапустите службу SSH.
Debian-based ОС
# systemctl restart sshRedHat-based ОС
# systemctl restart sshdПримечание для Ubuntu 24.04 и новее. В этих версиях OpenSSH может использовать механизм активации через сокеты systemd (ssh.socket). При изменении параметра Port в конфигурации, systemd автоматически обновляет настройку сокета ListenStream. Чтобы проверить, задействован ли этот режим, выполните:
# systemctl is-enabled ssh.socket
# systemctl is-active ssh.socketЕсли обе предыдущие команды вернули статус enabled и active, то после изменения порта необходимо применить конфигурацию и перезапустить сокет:
# systemctl daemon-reload
# systemctl restart ssh.socketПоскольку текущая SSH-сессия остается открытой, вы можете безопасно проверить подключение по новому порту, открыв новое окно в терминале:
# ssh username@ip_address -p2233Если подключение не удалось, вы можете вернуться к активной сессии для анализа ошибок и корректировки конфигурации, не теряя доступ к серверу.
Проверка настроек
Debian-based ОС
# ss -tlpn | grep sshRedHat-based ОС
# ss -tlpn | grep ssh
В случае успешного изменения порта вывод команды будет содержать примерно такие строки:
LISTEN 0 128 0.0.0.0:2233 0.0.0.0:* users:(("sshd",pid=1065,fd=7))
LISTEN 0 128 [::]:2233 [::]:* users:(("sshd",pid=1065,fd=8))