Тариф успешно добавлен в корзину
В корзину
url image

Как изменить стандартный порт SSH-сервера

SSH — это сетевой протокол прикладного уровня, который позволяет безопасно передавать данные по сети. Его используют для удаленного подключения к операционной системе или базам данных, передачи файлов (простого копирования или потоковой передачи, например, видео с веб-камеры), удаленного запуска команд и т.д.

Данный протокол шифрует весь трафик, включая пароли, поэтому он считается безопасным. Чтобы злоумышленники не получили доступ к учётным данным пользователей по SSH, нужно обезопасить свой сервер.

По умолчанию SSH слушает порт 22. В целях безопасности часто рекомендуется сменить порт на нестандартный. Эта мера не считается полноценной защитой, но значительно усложняет жизнь ботам, которые сканируют открытые порты, пытаясь подобрать логин и пароль для доступа к серверу по стандартному SSH-порту.

Кроме смены порта можно применить дополнительные базовые меры защиты:

  • Установить лимит попыток подключений к серверу и настроить блокировку IP-адреса при превышении (например, с помощью утилиты fail2ban).
  • Запретить подключение root-пользователя по SSH.
  • Отказаться от простых и угадываемых логинов и паролей (admin, qwerty, zabbix и пр.).
  • Запретить подключение по паролю и включить подключение только по ключу (требуется предварительная настройка и проверка, иначе можно потерять доступ к серверу по SSH).

Изменение порта SSH

Как правило, для подключения по SSH в терминале Linux используется следующая команда:

# ssh username@ip_address

Если порт SSH был изменен, его необходимо явно указать при подключении. Допустим, для порта 2233 команда выглядит так:

# ssh -p 2233 username@ip_address

Для подключения с ОС Windows часто используют специальные программы (PuTTY, MobaXterm), в которых всегда можно явно указать порт подключения по SSH.

Конфигурационный файл

Убедитесь, что новый SSH-порт свободен. Это можно сделать с помощью утилиты ss из пакета iproute2, которая установлена по умолчанию в современных системах.

Debian/Ubuntu:

# apt install iproute2

CentOS/AlmaLinux:

# yum install iproute2

Также для проверки доступности порта можно использовать утилиту netstat. Стоит учесть, что она устарела и, как правило, встречается на серверах со старыми ОС или у провайдеров в качестве привычного легаси. Для работы netstat установим пакет net-tools

Debian/Ubuntu:

# apt install net-tools

CentOS/AlmaLinux:

# yum install net-tools

Проверка портов выполняется следующими командами.

Debian/Ubuntu:

# ss -tlpn | grep ':22'
# netstat -tlpn | grep ':22'

CentOS/AlmaLinux:

# 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 занят. Проверим 2233:

# ss -tlpn | grep ':2233' 

Вывод пуст, значит, можно занимать.

Измените порт в конфигурационном файле SSH-сервера. Для этого можно воспользоваться любым текстовым редактором:

# vim /etc/ssh/sshd_config

или

# nano /etc/ssh/sshd_config

Найдите строку Port 22.

Если строка начинается с символа #, его нужно удалить, и вместо 22 порта указать любой другой, например, 2233 Port 2233.

Сохраните изменения.

Обратите внимание. Хорошая практика — использование OpenSSH раздельных конфигураций (drop-in).  При таком подходе нет необходимости менять файл конфигурации по умолчанию — изменения можно вносить в отдельном каталоге. При редактировании sshd_config вы можете заметить строчку: 

Include /etc/ssh/sshd_config.d/*.conf. 

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

Если вы решили использовать такой подход, то предыдущее действие (удаление символа # и указание порта в /etc/ssh/sshd_config) выполнять не нужно. Создайте и отредактируйте файл:

# nano /etc/ssh/sshd_config.d/custom-port.conf

Затем впишите нужный порт — Port 2233.

Настройка межсетевого экрана

Если на сервере включен и настроен файрвол, при смене порта нужно обязательно добавить новое правило. Иначе после рестарта SSH вы можете потерять доступ к серверу. Это часто случается на серверах с ufw, firewalld.

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

Debian/Ubuntu с UFW

Проверьте статус:

# ufw status verbose

Разрешите новый порт:

# ufw allow 2233/tcp

Проверьте правила: 

# ufw status numbered 

CentOS/AlmaLinux с firewalld

Проверьте, активен ли firewalld:

# systemctl is-active firewalld

Проверьте текущие разрешения:

# firewall-cmd --list-all

Разрешите подключение через новый порт: 

# firewall-cmd --permanent --add-port=2233/tcp
# firewall-cmd --reload

Проверьте правила:

# firewall-cmd --list-ports

Проверка синтаксиса конфигурации

Перед рестартом проверьте конфигурацию sshd — это снижает риск потерять доступ из‑за ошибки в конфиге:

# sshd -t 

Если вывод команды пуст, синтаксис корректен.

Перезапуск SSH

Будьте осторожны: если вы допустили ошибку в конфигурационном файле, то можете потерять связь с сервером. Сначала лучше потренироваться на тестовой машине. Кроме того, проверьте альтернативный доступ к серверу, например, по VNC.

Для перезапуска SSH введите команду:

Debian/Ubuntu:

# systemctl restart ssh

CentOS/AlmaLinux:

# systemctl restart sshd

В Ubuntu 24.04 OpenSSH может работать через активацию systemd на основе сокетов. По умолчанию ssh.socket слушает ListenStream=22. При изменении параметра Port генератор systemd считывает данные конфигурационных файлов и устанавливает соответствующий параметр ListenStream в ssh.socket. 

 Проверьте, используется ли данный режим активации:

 # 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/Ubuntu:

# ss -tlpn | grep ssh

CentOS/AlmaLinux:

# 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)) 

Готово: мы изменили стандартный порт SSH на нестандартный, усилив безопасность сервера.

Этот материал был полезен?

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