Любой сервер с открытым SSH через несколько минут после запуска начинают перебирать боты. С паролями это реальный риск, с ключами — только шум в журналах. Настройка занимает десять минут.
Куда писать настройки
В Ubuntu 22.04/24.04 и Debian 12 основной файл /etc/ssh/sshd_config в самом начале подключает файлы из /etc/ssh/sshd_config.d/. Для каждого параметра действует первое найденное значение, поэтому файл с именем 00-… перекрывает остальные — в том числе 50-cloud-init.conf, который в облачных образах иногда включает вход по паролю.
$ nano /etc/ssh/sshd_config.d/00-hardening.conf# Только ключиPasswordAuthentication noKbdInteractiveAuthentication no# root — только по ключуPermitRootLogin prohibit-password# Меньше попыток на одно соединениеMaxAuthTries 3LoginGraceTime 30Если вы работаете под отдельным пользователем с sudo, root можно запретить совсем: PermitRootLogin no. Дополнительно можно разрешить вход только нужным пользователям: AllowUsers deploy.
Проверка и применение
$ sshd -t$ systemctl restart sshsshd -t ничего не выводит, если ошибок нет. Итоговые значения, с учётом всех файлов, покажет команда:
$ sshd -T | grep -Ei "^(passwordauthentication|permitrootlogin|maxauthtries|port) "Смена порта
Нестандартный порт не защищает от целенаправленной атаки, но убирает большую часть автоматического перебора из журналов. Порядок важен: сначала открыть новый порт в фаерволе, потом переносить SSH.
$ ufw allow 2222/tcpДобавьте в 00-hardening.conf строку Port 2222. Дальше шаги зависят от системы.
Ubuntu 24.04 (socket-активация)
Начиная с Ubuntu 22.10 порт слушает не сам sshd, а systemd через ssh.socket. Настройки порта из sshd_config переносятся в сокет при daemon-reload, поэтому перезапускать нужно сокет:
$ sshd -t$ systemctl daemon-reload$ systemctl restart ssh.socketUbuntu 22.04 и Debian 12
$ sshd -t$ systemctl restart sshПроверьте, что сервер слушает новый порт, и подключитесь в новом окне:
$ ss -tlnp | grep 2222$ ssh -p 2222 root@203.0.113.10Только после успешного входа закройте старый порт: ufw delete allow OpenSSH.
Частые ошибки
- На Ubuntu 24.04 изменили Port и перезапустили только ssh.service — сервер продолжает слушать 22-й порт. Нужен daemon-reload и перезапуск ssh.socket.
- Сменили порт, но не открыли его в фаерволе — доступ пропадает. Исправляется через VNC-консоль.
- Правка в конце sshd_config не действует. Её перекрывает файл из sshd_config.d — смотрите итог через sshd -T.