Перейти к содержимому
VDS · Безопасность

Укрепление 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.