Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Безпека Віртуальні сервери

Підключення та налаштування SSH на VPS: Повний посібник безпеки

Secure shell (SSH) access — це основа професійного управління сервером. Незалежно від того, чи ви розгортаєте сайт WordPress, надсилаєте код через Git або адмініструєте користувацькі додатки, SSH надає вам зашифрований, автентифікований туннель прямо на ваш сервер. Цей комплексний посібник проведе вас через кожен крок — від вашого першого підключення до посилення вашої установки проти реальних атак — щоб ви могли керувати своїм середовищем VPS Hosting з впевненістю.

Чому SSH безпека має значення

Кожен публічно доступний сервер постійно піддається автоматизованим атакам перебору. За кілька хвилин після запуску VPS боти починають сканувати порт 22 і пробувати поширені комбінації імені користувача та пароля. Погано захищена конфігурація SSH є однією з найпоширеніших точок входу для зловмисників.

Хороша новина: кілька навмисних змін конфігурації значно зменшують вашу поверхню атаки. У поєднанні з надійною інфраструктурою — такою як сховище на основі NVMe та вбудований захист від DDoS — правильно посилена конфігурація SSH забезпечує вам швидкий, стійкий та справді безпечний канал управління.

Якщо ви ще не вибрали хостинг-середовище, розгляньте можливість дослідження планів VPS Hosting, які включають повний доступ root, виділені ресурси та гнучкість для впровадження кожного заходу безпеки, розглянутого в цьому посібнику.

Передумови

Перед тим як почати, переконайтеся, що у вас є наступне:

ВимогаДеталі
Запущений VPSБудь-яка дистрибуція Linux (Ubuntu, Debian, CentOS, AlmaLinux тощо) з встановленою ОС
SSH клієнтLinux/macOS: вбудована команда ssh. Windows: PuTTY, Windows Terminal або WSL
IP адреса сервераНадається у вашій панелі керування хостингом після підготовки
Облікові дані для входуІм’я користувача за замовчуванням (root або користувач з правами sudo) та початковий пароль
Базова знайомість з терміналомЗдатність запускати команди та редагувати файли за допомогою nano або vim

> Порада: Якщо ви керуєте кількома серверами або вам потрібен графічний інтерфейс разом з SSH, перегляньте Панелі керування VPS для таких варіантів як cPanel, Plesk та DirectAdmin, які доповнюють доступ через командний рядок.

Підключення до вашого VPS через SSH

На Linux або macOS

Відкрийте ваш термінал і запустіть:

ssh username@your_server_ip

Замініть username на ваше фактичне ім’я користувача (зазвичай root для нового VPS) та your_server_ip на публічну IP-адресу вашого сервера.

Приклад:

ssh root@203.0.113.45

Запит при першому підключенні:

The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Введіть yes і натисніть Enter. Це додасть ключ хоста сервера до вашого файлу ~/.ssh/known_hosts. При наступних підключеннях SSH автоматично перевіритиме цей відбиток — якщо він коли-небудь змінитися несподівано, розглядайте це як потенційний інцидент безпеки.

Введіть ваш пароль, коли буде запропоновано.

На Windows з використанням PuTTY

  1. Завантажте та відкрийте PuTTY з putty.org.
  2. У полі Host Name (or IP address) введіть IP-адресу вашого сервера.
  3. Переконайтеся, що Port встановлено на 22 і Connection type — це SSH.
  4. Натисніть Open.
  5. Прийміть відбиток ключа хоста, коли буде запропоновано.
  6. Введіть ваше ім’я користувача та пароль.

> Альтернатива для Windows 10/11: Windows Terminal і PowerShell обидва включають вбудований клієнт OpenSSH. Ви можете використовувати точно такий же синтаксис ssh username@your_server_ip як на Linux/macOS — жодні сторонні інструменти не потрібні.

Посилення безпеки SSH: Покрокова конфігурація

Вся поведінка SSH контролюється одним файлом конфігурації:

/etc/ssh/sshd_config

Відкрийте його з підвищеними привілеями:

sudo nano /etc/ssh/sshd_config

Пройдіть через кожен крок посилення безпеки нижче. Після внесення всіх змін ви перезавантажите сервіс один раз — це розглядається в наступному розділі.

Крок 1: Змініть порт SSH за замовчуванням

Порт 22 — це перший порт, який сканують боти. Переміщення SSH на нестандартний порт усуває переважну більшість автоматизованого шуму у ваших журналах.

Знайдіть цей рядок:

#Port 22

Змініть його на порт на ваш вибір (використовуйте число від 1024 до 65535, яке не використовується іншим сервісом):

Port 2222

Видаліть #, щоб розкоментувати рядок. Збережіть за допомогою CTRL+X, потім Y, потім Enter.

> Важливо: Перед перезавантаженням SSH переконайтеся, що ваш брандмауер дозволяє новий порт. Див. примітку про брандмауер нижче.

Оновіть ваш брандмауер (приклад UFW):

sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reload

Оновіть ваш брандмауер (приклад firewalld):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Крок 2: Вимкніть вхід root

Дозвіл прямого входу root через SSH — це значна ризик безпеки. Замість цього увійдіть як звичайний користувач і підвищте привілеї за допомогою sudo за потреби.

У sshd_config знайдіть:

PermitRootLogin yes

Змініть це на:

PermitRootLogin no

Перед вимиканням входу root переконайтеся, що у вас є звичайний користувач з привілеями sudo:

# Create a new user
adduser adminuser

# Grant sudo privileges
usermod -aG sudo adminuser

Перевірте, що цей користувач може увійти та запустити команди sudo *перед* вимиканням входу root та перезавантаженням SSH.

Крок 3: Вимкніть аутентифікацію за паролем (після налаштування ключів)

Після налаштування аутентифікації SSH ключем (наступний розділ) повністю вимкніть вхід на основі пароля, щоб усунути ризик перебору:

PasswordAuthentication no

Також переконайтеся, що ці пов’язані директиви встановлені:

ChallengeResponseAuthentication no
UsePAM no

Крок 4: Додаткові рекомендовані директиви

Додайте або перевірте ці параметри у sshd_config для комплексної базової лінії посилення безпеки:

# Limit authentication attempts per connection
MaxAuthTries 3

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable empty passwords
PermitEmptyPasswords no

# Restrict SSH to specific users (replace 'adminuser' with your username)
AllowUsers adminuser

# Use only strong protocol version
Protocol 2

# Disable X11 forwarding if not needed
X11Forwarding no

Налаштування автентифікації SSH Key

Автентифікація SSH key замінює паролі криптографічною парою ключів: приватним ключем, який залишається на вашій локальній машині, та публічним ключем, який знаходиться на сервері. Навіть якщо зловмисник знає ваше ім’я користувача, він не зможе автентифікуватися без вашого приватного ключа.

Крок 1: Генерування пари SSH ключів (на вашій локальній машині)

ssh-keygen -t ed25519 -C "your_email@example.com"

> Чому Ed25519? Він швидший та безпечніший за старіший алгоритм RSA. Якщо ваша система вимагає RSA для сумісності, використовуйте ssh-keygen -t rsa -b 4096 замість цього.

Вам буде запропоновано вибрати місце збереження (за замовчуванням ~/.ssh/id_ed25519 підходить) та встановити парольну фразу. Завжди встановлюйте парольну фразу — вона шифрує ваш приватний ключ, щоб фізичний доступ до вашої машини не компрометував ваші сервери.

Результат:

Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com

Крок 2: Копіювання публічного ключа на ваш VPS

Найпростіший метод використовує ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

Ця команда:

  1. Підключається до вашого сервера за допомогою автентифікації паролем.
  2. Створює ~/.ssh/authorized_keys на сервері, якщо він не існує.
  3. Додає ваш публічний ключ до цього файлу.
  4. Автоматично встановлює правильні дозволи.

Ручний метод (якщо ssh-copy-id недоступний):

# On your local machine, display your public key
cat ~/.ssh/id_ed25519.pub

# On your server, add it manually
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "paste-your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Крок 3: Перевірка входу на основі ключа перед відключенням паролів

Не відключайте автентифікацію паролем, поки ви не підтвердите, що вхід на основі ключа працює. Відкрийте нове вікно терміналу та протестуйте:

ssh -i ~/.ssh/id_ed25519 username@your_server_ip -p 2222

Якщо ви успішно підключитеся без запиту пароля (тільки ваша парольна фраза ключа, якщо встановлена), перейдіть до відключення PasswordAuthentication у sshd_config.

Перезавантаження та перевірка служби SSH

Після збереження всіх змін до sshd_config, перевірте синтаксис конфігурації перед перезавантаженням:

sudo sshd -t

Якщо помилок не повернено, перезавантажте демон SSH:

sudo systemctl restart sshd

Перевірте, що служба запустилася успішно:

sudo systemctl status sshd

У виводі ви повинні побачити Active: active (running).

> Критична порада безпеки: Тримайте вашу поточну сесію SSH відкритою під час тестування нової конфігурації в окремому вікні. Якщо щось піде не так, ваша існуюча сесія залишиться активною, і ви зможете відновити зміни.

Тестування вашої безпечної конфігурації

Тест 1: Підключення на новому порту з вашим ключем

З вашої локальної машини:

ssh username@your_server_ip -p 2222

Очікуваний результат: ви увійшли, використовуючи ваш SSH ключ (запит на парольну фразу вашого ключа, якщо ви її встановили, але не пароль сервера).

Тест 2: Підтвердження, що вхід root заблокований

ssh root@your_server_ip -p 2222

Очікуваний результат:

Permission denied (publickey).

або

root@your_server_ip: Permission denied

Тест 3: Підтвердження, що автентифікація за паролем вимкнена

ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=no

Очікуваний результат:

Permission denied (publickey).

Якби автентифікація за паролем була ще ввімкнена, вам було б запропоновано ввести пароль.

Додаткове посилення: Fail2Ban

Fail2Ban моніторить файли журналів і автоматично блокує IP-адреси, які показують ознаки шкідливої діяльності — такі як повторні невдалі спроби входу SSH. Це важливе доповнення до кроків посилення SSH вище.

Встановлення Fail2Ban

Ubuntu/Debian:

sudo apt update && sudo apt install fail2ban -y

CentOS/AlmaLinux/RHEL:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Налаштування Fail2Ban для SSH

Створіть локальний файл перевизначення (ніколи не редагуйте стандартний jail.conf безпосередньо):

sudo nano /etc/fail2ban/jail.local

Додайте наступне:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = 2222
logpath  = %(sshd_log)s
backend  = %(sshd_backend)s

Відрегулюйте port відповідно до вашого користувацького порту SSH. Збережіть, потім увімкніть і запустіть Fail2Ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Перевірте активні блокування та статус в’язниці:

sudo fail2ban-client status sshd

Резервне копіювання ваших SSH ключів та конфігурації

Заблокований сервер — це серйозна проблема. Дотримуйтесь цих практик, щоб її уникнути:

  • Зробіть резервну копію вашого приватного ключа в зашифрований менеджер паролів або офлайн-сховище.
  • Збережіть копію sshd_config перед внесенням змін: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • Використовуйте консоль вашого хостинг-провайдера поза смугою (доступ VNC/KVM через панель керування) як резервний варіант, якщо ви втратите доступ SSH.
  • Документуйте ваш користувацький порт — легко забути 2222 коли ви переходите між серверами.

Поєднання SSH з правильною інфраструктурою хостингу

Безпечна конфігурація SSH настільки ж надійна, наскільки надійна інфраструктура під нею. Розглянте ці додаткові послуги:

  • Виділені сервери — Для робочих навантажень, які вимагають максимальної продуктивності та повної ізоляції обладнання, виділені сервери дають вам повний контроль над фізичним та програмним шарами, включаючи конфігурацію SSH.
  • SSL сертифікати — Захистіть веб-частину ваших додатків надійними SSL/TLS сертифікатами, доповнюючи безпеку SSH для серверної частини вашого сервера.
  • Реєстрація доменів — Зареєструйте та керуйте своїм доменом разом із хостингом, що полегшує налаштування елементів управління доступом на основі DNS та імен хостів сервера.

Висновок

Правильно налаштована SSH є одним з найбільш впливових поліпшень безпеки, які ви можете внести на будь-який Linux сервер. Підсумовуючи те, що ви впровадили:

Захід безпекиПереваги
Користувацький SSH портУсуває автоматизоване сканування порту 22
Вимкнений вхід rootВидаляє найбільш цільовий обліковий запис з віддаленого доступу
SSH аутентифікація ключамиЗамінює вгадувані паролі криптографічним доказом
Вимкнена аутентифікація паролемПовністю закриває вектор атаки перебору
Fail2BanАвтоматично блокує наполегливих зловмисників
MaxAuthTries і тайм-аутиОбмежує вплив повільних або розподілених атак

Ці заходи працюють разом, створюючи багатошарову оборону — кожен з них значущий сам по собі, і значно сильніший у комбінації.

Незалежно від того, чи ви запускаєте один сайт WordPress чи керуєте флотом серверів додатків, початок з посиленої конфігурації SSH дає вам контроль. Поєднайте це з надійною інфраструктурою VPS Hosting, збережіть резервну копію своїх ключів, і у вас буде безпечне, професійне серверне середовище, розраховане на довгострокову роботу.

Linux Адміністрація
Linux
Безпека Виділені сервери