8.2.12 Установка та налаштування OpenSSH
OpenSSH дозволяє безпечно підключатися до сервера за протоколом SSH, виконувати команди, передавати файли та керувати сервером. Правильне налаштування OpenSSH — важливий крок для забезпечення безпеки вашого сервера.
Системні вимоги
- Віртуальний або Виділений сервер
- Мінімальні ресурси: 1 CPU, 512 MB RAM, 10 GB SSD
- Ubuntu 24.04 LTS
- Root-доступ або доступ з правами sudo
Важливо: якщо ви налаштовуєте OpenSSH на публічному сервері, то налаштуйте його для безпечної роботи – https://thehost.ua/ua/wiki/root/install-openssh#dopolnitelnye-nastroyki-open-ssh
Установка OpenSSH Server
За замовчуванням OpenSSH Server в Ubuntu 24.04 доступний у репозиторіях.
Оновлюємо індекс пакетів і встановлюємо OpenSSH Server:
sudo apt update
sudo apt install -y openssh-server
Перевіряємо статус служби SSH:
sudo systemctl status ssh
Очікуваний результат:
● ssh.service - OpenBSD Secure Shell server
Active: active (running)
Якщо служба не запущена — запустіть вручну:
sudo systemctl start ssh --now
Перевірка підключення, на локальній машині виконайте:
ssh user@IP_СЕРВЕРА
Детальніше з способами підключення можете ознайомитись у нашій інструкції.
Зверніть увагу: що потрібно замінити user
і IP_СЕРВЕРА
на ваш логін і IP-адресу.
Якщо використовуєте ключі — підключайтеся з прапором -i
:
ssh -i ~/.ssh/id_rsa user@IP_СЕРВЕРА
Налаштування логування
Налаштуємо докладне логування. Відкриваємо конфігураційний файл:
sudo nano /etc/ssh/sshd_config
Додаємо або змінюємо такі параметри:
LogLevel VERBOSE
Зберігаємо і перезапускаємо службу:
sudo systemctl restart ssh
Для перегляду логів використовуйте:
sudo journalctl -u ssh
Або для системних логів:
sudo tail -f /var/log/auth.log
Додаткові налаштування OpenSSH
Для підвищення безпеки сервера рекомендується змінити стандартні параметри.
Вимкнення автентифікації за паролем
Автентифікація за паролем — поширена ціль брутфорс-атак. Вимкнувши її, ви суттєво знизите ймовірність злому. Після внесення змін підключення буде можливим лише за SSH-ключами.
PermitRootLogin without-password
PasswordAuthentication no
Дозволити вхід лише за ключами
Щоб додатково посилити безпеку, увімкніть вхід тільки за ключами. Це повністю виключить можливість підключення за паролем.
PubkeyAuthentication yes
Зміна стандартного порту (за замовчуванням 22)
Стандартний порт SSH (22) часто сканують зловмисники. Перенос SSH-сервісу на нестандартний порт допоможе зменшити кількість автоматичних атак.
Port 2222
Зверніть увагу: зміна порту допомагає знизити кількість автоматизованих атак.
Обмеження за IP
Для обмеження доступу за IP можна використовувати iptables
або ufw
UFW:
sudo ufw allow from <ВАШ_IP> to any port 2222 proto tcp
sudo ufw enable
iptables:
# Дозволити нові підключення до порту 2222 лише з вашого IP
sudo iptables -I INPUT -p tcp -s <ВАШ_IP> --dport 2222 -m conntrack --ctstate NEW -j ACCEPT
# Блокувати всі інші підключення до порту 2222
sudo iptables -A INPUT -p tcp --dport 2222 -j DROP
Зверніть увагу: що потрібно замінити <ВАШ_IP>
на вашу реальну адресу (наприклад, 203.0.113.45).
Правило з -I
(insert) ставить дозвільне правило на початок, щоб оброблялося першим.
Важливо: перш ніж перевіряти — залиште активне SSH-з’єднання або консоль через VNC, щоб не заблокувати себе.
Перевіряємо підключення:
ssh -p 2222 user@IP_СЕРВЕРА
Після внесення змін обов’язково перезапустіть SSH:
sudo systemctl restart ssh
Перевірка роботи
Перевірити роботу служби можна командою:
sudo systemctl status ssh
Перевірити лог підключення:
sudo grep sshd /var/log/auth.log
Очікуваний результат:
Accepted publickey for user from IP port ...
Поширені помилки
Помилка/Симптом | Причина/Рішення |
---|---|
Connection refused | SSH-сервер не запущений або firewall |
Permission denied (publickey) | Доступ заборонено (publickey) |
Port 22 not open | Використовується нестандартний порт — вкажіть ключ підключення -p або вкажіть його у Вашому SSH клієнті |
Cannot restart ssh: failed | Помилка перезапуску SSH — перевірте конфігурацію /etc/ssh/sshd_config |
Команди діагностики
Перевірити статус firewall можна наступним чином.
Якщо використовуєте UFW:
sudo ufw status verbose
Для iptables:
iptables -L -v -n
Перегляд останніх спроб входу:
sudo last -a | grep ssh
Також корисною буде команда, яка показує коли та з яких ip були підключення:
w
Офіційна документація