Укрепление SSH: ключи, порт, ограничения
Как настроить sshd: вход только по ключам, ограничение пользователей и адресов, смена порта, и как не потерять доступ при этом.
Обновлено 23 августа 2026 г.
SSH — единственная дверь на машину, которой вы пользуетесь ежедневно, и главная цель автоматического перебора. Настраивается он один раз и дальше не требует внимания.
Все правки делайте в отдельном файле /etc/ssh/sshd_config.d/99-hardening.conf — так обновление пакета не затрёт вашу работу и не оставит вас без доступа.
Ключи вместо паролей
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
PermitEmptyPasswords no
Перед применением убедитесь, что ключ действительно работает: войдите с ним в отдельном окне. Ключи, добавленные во вкладке «Доступ» панели /hosting/vds/m/<id>, попадают пользователю root; остальным пользователям их нужно положить в ~/.ssh/authorized_keys руками.
Генерация ключа на своей стороне:
ssh-keygen -t ed25519 -C "рабочий ноутбук"
ed25519 короче и быстрее RSA. Если инструмент его не поддерживает, используйте rsa длиной не меньше 4096 бит.
Кто может заходить
PermitRootLogin prohibit-password
AllowUsers artem deploy
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers — самое действенное правило после отключения паролей: перебор чужих имён обрывается сразу. Про root подробнее — отключить вход root по паролю.
Ограничение по адресу, если работаете с постоянного места:
Match Address 203.0.113.5
PermitRootLogin yes
Смена порта
Перенос SSH с 22 на нестандартный порт не защищает от целевой атаки, но убирает почти весь шум автоматических сканеров из журналов.
Port 2222
Порядок действий строго такой:
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
ssh -p 2222 artem@<адрес>
ufw delete allow 22/tcp
Правило брандмауэра — до перезапуска, удаление старого — только после успешного входа на новом порту. См. также порты.
Применение и проверка
sshd -t
sshd -T | grep -Ei "passwordauth|permitroot|allowusers|port"
systemctl restart ssh
sshd -t проверяет синтаксис, sshd -T показывает итоговую действующую конфигурацию — именно её, а не то, что вы написали в файле.
Пока идёт настройка, держите открытым текущий сеанс. Он переживёт перезапуск sshd, и через него можно откатить неудачную правку. Если всё-таки заперлись — вкладка «Консоль» в панели работает независимо от SSH.
Частые ошибки
| Ошибка | Последствие | Решение |
|---|---|---|
| Отключили пароли, не проверив ключ | Полная потеря доступа по сети | Войти через консоль панели и вернуть настройку |
Правка в основном файле поверх строки из sshd_config.d | Настройка не действует | Проверять через sshd -T |
| Сменили порт без правила ufw | Обрыв доступа | Сначала правило, потом порт |
Права на ~/.ssh шире 700 | Ключ игнорируется молча | chmod 700 ~/.ssh, chmod 600 authorized_keys |
AllowUsers без вашего имени | Заперлись сами | Консоль панели, правка файла |
В
sshd_configдействует первое встреченное значение параметра, а файлы изsshd_config.dподключаются в начале. Поэтому проверяйте результат командойsshd -T, а не чтением файла.
Оставшийся шум перебора уберёт fail2ban.