Як встановити та налаштувати SSH сервер на Debian (Повний посібник)
SSH (Secure Shell) — один із найфундаментальніших протоколів у сучасному адмініструванні серверів. Він забезпечує зашифрований автентифікований канал для віддаленого доступу до Linux-серверів та керування ними — що робить його незамінним інструментом для системних адміністраторів, розробників і всіх, хто керує віддаленою машиною. Незалежно від того, чи керуєте ви середовищем VPS Хостингу або Виділеним Сервером, правильне встановлення та захист SSH-сервера — одне з перших завдань, яке слід виконати.
У цьому вичерпному посібнику ви дізнаєтесь, як встановити OpenSSH на Debian, налаштувати його безпечно, налаштувати автентифікацію на основі ключів і застосувати найкращі практики захисту для захисту вашого сервера від несанкціонованого доступу.
Передумови
Перш ніж почати, переконайтеся, що у вас є:
- Сервер на основі Debian (Debian 10 Buster, 11 Bullseye або 12 Bookworm)
- Користувач без прав root з привілеями
sudo, або прямий доступ root для початкового налаштування - Базове знайомство з командним рядком Linux
- Мережевий доступ до вашого сервера
Крок 1: Оновіть систему та встановіть OpenSSH Server
Перед встановленням будь-якого програмного забезпечення рекомендується оновити індекс пакетів і оновити наявні пакети до останніх версій. Це забезпечує сумісність і зменшує вразливості безпеки.
sudo apt update && sudo apt upgrade -yТепер встановіть пакет OpenSSH server:
sudo apt install openssh-server -yМенеджер пакетів завантажить і встановить OpenSSH разом із необхідними залежностями. Після завершення встановлення служба SSH зазвичай запускається автоматично.
Перевірте, чи запущена служба SSH
Підтвердіть, що служба ssh активна та увімкнена:
sudo systemctl status sshВи повинні побачити виведення, подібне до:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since ...Якщо служба не запущена, запустіть її вручну та увімкніть для запуску під час завантаження:
sudo systemctl start ssh
sudo systemctl enable sshКрок 2: Ознайомтеся з файлом конфігурації SSH
Основний файл конфігурації демона SSH розташований за адресою:
/etc/ssh/sshd_configЦей файл контролює практично кожен аспект роботи вашого SSH-сервера — від того, який порт він прослуховує, до того, які методи автентифікації дозволені. Перш ніж вносити будь-які зміни, створіть резервну копію оригінального файлу:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakТепер відкрийте файл у текстовому редакторі:
sudo nano /etc/ssh/sshd_configРозділи нижче проведуть вас через найважливіші параметри конфігурації.
Крок 3: Захистіть конфігурацію SSH
3.1 Змініть стандартний порт SSH (Рекомендовано)
За замовчуванням SSH прослуховує порт 22. Це широко відомо, і автоматизовані боти постійно сканують інтернет на наявність відкритих з’єднань на порту 22, намагаючись здійснити атаки методом перебору. Зміна порту на нестандартне значення значно зменшує цей шум.
Знайдіть наступний рядок (він може бути закоментований символом #):
#Port 22Розкоментуйте його та змініть значення:
Port 2222> Примітка: Виберіть номер порту між 1024 і 65535, який ще не використовується іншою службою. Поширені альтернативи включають 2222, 2200 або 4422. Не забудьте відповідно оновити правила брандмауера (див. Крок 5).
3.2 Вимкніть вхід від імені root (Настійно рекомендується)
Дозвіл прямого входу root через SSH є значним ризиком безпеки. Якщо зловмисник вгадає або підбере пароль root, він отримає повний контроль над вашим сервером. Вимкніть це, знайшовши та змінивши цю директиву:
PermitRootLogin noЯкщо вам потрібно виконувати адміністративні завдання, увійдіть як звичайний користувач і підвищте привілеї за допомогою sudo.
3.3 Обмежте доступ SSH для конкретних користувачів
Ви можете додати до білого списку конкретні облікові записи користувачів, яким дозволено входити через SSH. Це запобігає використанню несанкціонованих або системних облікових записів як точок входу:
AllowUsers your_username deploy_userКрім того, ви можете обмежити доступ за групою:
AllowGroups sshusers3.4 Вимкніть автентифікацію за паролем (Після налаштування автентифікації за ключем)
Після того, як автентифікація SSH за ключем запрацює (див. Крок 6), повністю вимкніть входи на основі пароля, щоб усунути вектори атак методом перебору:
PasswordAuthentication no3.5 Додаткові директиви захисту
Додайте або змініть наступні рядки для більш надійного рівня безпеки:
# Disable empty passwords
PermitEmptyPasswords no
# Limit authentication attempts per connection
MaxAuthTries 3
# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2
# Disable X11 forwarding if not needed
X11Forwarding no
# Use only SSH Protocol 2
Protocol 2
# Restrict to specific address family (IPv4 only example)
AddressFamily inetВідповідний розділ вашого фінального /etc/ssh/sshd_config повинен виглядати приблизно так:
Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2Крок 4: Перевірте конфігурацію та перезапустіть SSH
Перш ніж перезапускати службу, завжди перевіряйте файл конфігурації на наявність синтаксичних помилок. Неправильно налаштований sshd_config може заблокувати вам доступ до сервера:
sudo sshd -tЯкщо помилок не виявлено, застосуйте зміни, перезапустивши демон SSH:
sudo systemctl restart sshПеревірте, чи служба перезапустилася коректно:
sudo systemctl status ssh> ⚠️ Важливо: Перш ніж закрити поточний сеанс SSH, відкрийте друге вікно термінала та перевірте нову конфігурацію. Таким чином, якщо щось піде не так, у вас все ще є активний сеанс для виправлення проблеми.
Крок 5: Оновіть правила брандмауера
Якщо ви використовуєте UFW (Uncomplicated Firewall) — стандартний інструмент брандмауера в Debian — вам потрібно дозволити трафік на новому порту SSH.
Якщо ви змінили порт на 2222:
sudo ufw allow 2222/tcp
sudo ufw reloadЯкщо ви залишили стандартний порт 22:
sudo ufw allow ssh
sudo ufw reloadПеревірте поточний стан брандмауера:
sudo ufw status verboseЯкщо UFW ще не увімкнено, активуйте його (спочатку переконайтеся, що ваш порт SSH дозволено, щоб уникнути блокування):
sudo ufw enableКрок 6: Налаштуйте автентифікацію SSH на основі ключів
Автентифікація SSH за ключем набагато безпечніша, ніж вхід на основі пароля. Вона використовує асиметричну криптографію — пару ключів, що складається з приватного ключа (зберігається в таємниці на вашій клієнтській машині) та публічного ключа (зберігається на сервері). Навіть якщо зловмисник знає ваше ім’я користувача, він не може увійти без приватного ключа.
6.1 Згенеруйте пару SSH-ключів на вашій клієнтській машині
Виконайте наступну команду на вашій локальній машині (не на сервері):
ssh-keygen -t ed25519 -C "your_email@example.com"> Чому Ed25519? Ed25519 — це сучасний алгоритм на основі еліптичних кривих, який пропонує кращу безпеку та продуктивність порівняно зі старішим алгоритмом RSA. Якщо ваша система не підтримує його, використовуйте RSA з 4096-бітним ключем: ssh-keygen -t rsa -b 4096
Коли з’явиться запит, виберіть місце збереження (за замовчуванням ~/.ssh/id_ed25519) і встановіть надійну парольну фразу для додаткового рівня захисту.
6.2 Скопіюйте публічний ключ на ваш сервер
Використовуйте ssh-copy-id для безпечного передавання вашого публічного ключа на сервер:
ssh-copy-id -p 2222 username@your_server_ipЦя команда додає ваш публічний ключ до ~/.ssh/authorized_keys на сервері з правильними дозволами.
Якщо ssh-copy-id недоступний, ви можете зробити це вручну:
# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub
# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys6.3 Перевірте вхід на основі ключа
З вашої клієнтської машини підключіться до сервера:
ssh -p 2222 username@your_server_ipВам буде запропоновано ввести парольну фразу ключа (не пароль облікового запису). Після підтвердження ви увійдете в систему безпечно.
6.4 Вимкніть автентифікацію за паролем
Тепер, коли автентифікація за ключем працює, поверніться до /etc/ssh/sshd_config і переконайтеся:
PasswordAuthentication noПерезапустіть SSH для застосування:
sudo systemctl restart sshКрок 7: Моніторинг та підтримка безпеки SSH
Встановлення та налаштування SSH — це не одноразове завдання. Постійний моніторинг є необхідним для виявлення спроб вторгнення та підтримки безпечного середовища.
Перевірте невдалі спроби входу
sudo journalctl -u ssh | grep "Failed password"Або використовуйте lastb для перегляду невдалих спроб входу:
sudo lastb | head -20Встановіть Fail2Ban для блокування атак методом перебору
Fail2Ban відстежує файли журналів і автоматично блокує IP-адреси, які демонструють зловмисну поведінку (наприклад, повторні невдалі спроби входу):
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2banСтворіть локальну конфігурацію jail для SSH:
sudo nano /etc/fail2ban/jail.localДодайте наступне:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600Перезапустіть Fail2Ban для застосування:
sudo systemctl restart fail2banПідтримуйте OpenSSH в актуальному стані
Регулярно оновлюйте OpenSSH для виправлення відомих вразливостей:
sudo apt update && sudo apt upgrade openssh-server -yПідключення до вашого SSH-сервера: Короткий довідник
| Сценарій | Команда |
|---|---|
| Стандартний порт (22) | ssh username@your_server_ip |
| Нестандартний порт | ssh -p 2222 username@your_server_ip |
| Конкретний файл ідентифікації | ssh -i ~/.ssh/id_ed25519 username@your_server_ip |
| Детальне виведення (налагодження) | ssh -v username@your_server_ip |
| Копіювання файлів через SSH | scp -P 2222 file.txt username@your_server_ip:/path/ |
Вибір правильного середовища хостингу для SSH
Кроки в цьому посібнику застосовуються до будь-якого сервера на основі Debian, але тип хостингу, який ви використовуєте, впливає на те, як ви отримуєте доступ до свого середовища та керуєте ним:
- VPS Хостинг: VPS з cPanel або іншими Панелями керування VPS надає вам повний root SSH-доступ разом із графічним інтерфейсом керування — ідеально для користувачів, яким потрібні і потужність, і зручність.
- Виділені сервери: З Виділеним сервером ви маєте повний контроль на рівні апаратного забезпечення, що робить конфігурацію SSH ще більш критичною, оскільки ви несете повну відповідальність за безпеку машини.
- Спільний хостинг: Плани Спільного веб-хостингу зазвичай надають обмежений або відсутній SSH-доступ, оскільки середовище є спільним для кількох користувачів. Якщо SSH є обов’язковою вимогою, рекомендованим шляхом є перехід на VPS.
Висновок
Встановлення та налаштування SSH-сервера на Debian є фундаментальною навичкою для будь-якого системного адміністратора або розробника, який працює з віддаленими Linux-серверами. Дотримуючись цього посібника, ви:
- ✅ Встановили OpenSSH Server на Debian
- ✅ Захистили конфігурацію SSH, змінивши стандартний порт, вимкнувши вхід root і обмеживши доступ користувачів
- ✅ Налаштували автентифікацію SSH на основі ключів для безпарольних, безпечних входів
- ✅ Налаштували правила брандмауера для захисту вашого порту SSH
- ✅ Впровадили Fail2Ban для захисту від атак методом перебору
- ✅ Встановили процедуру моніторингу та обслуговування
Належним чином захищений SSH-сервер значно зменшує поверхню атаки та надає вам надійний зашифрований шлюз для віддаленого керування вашою інфраструктурою. Незалежно від того, чи ви тільки починаєте роботу з першим сервером, чи захищаєте виробниче середовище, ці практики є необхідними будівельними блоками безпечної системи Linux.
