Start typing to search across invoices, services, domains, tickets, and more...
Порт 22 ежедневно атакуют автоматические боты подбора паролей, поэтому перенос SSH на нестандартный порт и надёжный пароль root — первые шаги защиты нового сервера. В статье описано, как сменить порт SSH и пароль root в Linux: правка sshd_config, разрешение нового порта в файрволе и SELinux, безопасный перезапуск sshd и смена пароля через passwd. Подходит для Debian/Ubuntu и CentOS/Rocky/AlmaLinux.
Сохраните копию /etc/ssh/sshd_config и посмотрите текущее значение Port. В новых системах могут быть дополнительные файлы в /etc/ssh/sshd_config.d/ — проверьте и их, чтобы ваша настройка не была переопределена.
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
grep -nE '^#?Port' /etc/ssh/sshd_config
grep -rn '^Port' /etc/ssh/sshd_config.d/ 2>/dev/null
Откройте sshd_config в vi или nano, раскомментируйте Port и добавьте строку с новым портом. Выберите свободный порт в диапазоне 1024–65535; в примерах используется 2222. На время перехода слушайте и 22, и новый порт.
# /etc/ssh/sshd_config - keep 22 temporarily and add the new port
Port 22
Port 2222
В CentOS, Rocky и AlmaLinux по умолчанию работает firewalld, в Ubuntu обычно используется ufw. Если файрвол включён, а новый порт не разрешён, после перезапуска sshd подключиться не получится. Если файрвол не используется, шаг можно пропустить.
# CentOS / Rocky / AlmaLinux with firewalld
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload
# Debian / Ubuntu with ufw
ufw allow 2222/tcp
ufw status
В дистрибутивах семейства RHEL с SELinux в режиме Enforcing sshd может слушать только разрешённые порты. Зарегистрируйте новый порт как ssh_port_t через semanage, иначе sshd не запустится. В Debian и Ubuntu SELinux по умолчанию не включён.
# Only on systems with SELinux enforcing (CentOS / Rocky / AlmaLinux)
getenforce
dnf install -y policycoreutils-python-utils
semanage port -a -t ssh_port_t -p tcp 2222
semanage port -l | grep ssh_port_t
Проверьте синтаксис командой sshd -t (пустой вывод — всё в порядке) и перезапустите службу. В Ubuntu служба называется ssh, а начиная с 22.10 используется активация через сокет, поэтому нужно также перечитать конфигурацию systemd и перезапустить ssh.socket. Затем убедитесь через ss, что новый порт слушается.
# Check syntax first - no output means OK
sshd -t
# CentOS / Rocky / AlmaLinux / Debian
systemctl restart sshd
# Ubuntu (service is named "ssh"); on Ubuntu 22.10+ with socket activation also run:
systemctl restart ssh
systemctl daemon-reload && systemctl restart ssh.socket
ss -tlnp | grep -E ':22 |:2222 '
Откройте новое окно терминала на своём компьютере и войдите через новый порт. Если всё работает, удалите строку Port 22 из sshd_config, перезапустите sshd и удалите правило для порта 22 в файрволе.
# From your own computer, in a NEW window
ssh -p 2222 [email protected]
# After it works: remove "Port 22" from sshd_config, restart sshd, then close 22
firewall-cmd --permanent --remove-service=ssh && firewall-cmd --reload # firewalld
ufw delete allow 22/tcp # ufw (if a rule exists)
Выполните passwd и дважды введите новый пароль (символы не отображаются). Используйте случайный пароль длиной от 12 символов с буквами разного регистра, цифрами и знаками и храните его в менеджере паролей. В скриптах удобно использовать chpasswd.
# Change the root password interactively
passwd root
# Or non-interactively (avoid leaving it in shell history on shared systems)
echo 'root:N3w-Str0ng-P@ssw0rd' | chpasswd
Чаще всего порт блокирует файрвол или SELinux. Войдите через VNC-консоль, выполните ss -tlnp | grep sshd, чтобы убедиться, что sshd слушает новый порт, затем проверьте вывод firewall-cmd --list-all или ufw status.
Нет. Пароль, изменённый внутри ОС, не синхронизируется с кабинетом — сохраните его сами. Если забыли, сбросьте его в однопользовательском режиме через VNC-консоль или создайте тикет.
Это заметно снижает количество сканирований, но лучше также перейти на вход по SSH-ключам, отключить вход по паролю и установить fail2ban.
Если проблема не решилась, создайте тикет — техническая поддержка IMIDC работает круглосуточно 24/7. Укажите IP-адрес сервера, операционную систему, выполненные команды и приложите скриншот ошибки: так инженер разберётся быстрее.