Skip to content
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 "work laptop"

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@<address>
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 прибере решту брутфорс-шуму.