Skip to main content
Зміст гайду
Початківець14 хв

Hetzner VPS Setup

Від порожнього сервера до захищеної production-ready машини. Оберіть, як ви бажаєте налаштувати свій сервер.

Опубліковано:

Автоматичне налаштування через AI

Надайте вашому AI-асистенту доступ до цього репозиторію. Він автоматично виконає всі перевірки, налаштує безпеку та згенерує файл з усіма доступами (credentials guide) на вашому комп'ютері.

Відкрити GitHub Репозиторій

1. Створення SSH-ключа (Локально)

Виконується на вашому комп'ютері (Mac або Linux) ДО того, як ви підключитесь до сервера.

bash
ssh-keygen -t ed25519 -C "{username}@{nickname}" -f ~/.ssh/{nickname}_key -N "" cat ~/.ssh/{nickname}_key.pub

Скопіюйте вивід другої команди (він починається на ssh-ed25519 ...). Це ваш публічний ключ.

2. Вхід як Root

Підключіться до сервера за допомогою пароля, який Hetzner надіслав на пошту.

Увага

Hetzner може попросити змінити пароль. Введіть поточний пароль, потім двічі новий тимчасовий. Якщо після цього з'єднання розірветься — просто підключіться знову за допомогою нового пароля.

bash
ssh root@{SERVER_IP}

3. Оновлення системи

Оновлення всіх пакетів у неінтерактивному режимі (без спливаючих вікон grub).

bash
apt update && DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt upgrade -y

4. Створення користувача з sudo

Працювати з-під root небезпечно. Створюємо звичайного користувача та даємо йому права адміністратора.

bash
useradd -m -s /bin/bash {username} echo "{username}:YOUR_SECURE_PASSWORD" | chpasswd usermod -aG sudo {username}

5. Розгортання SSH-ключа

Запишемо ваш публічний ключ, який ви скопіювали в Кроці 1, на сервер.

bash
mkdir -p /home/{username}/.ssh echo "{PUBLIC_KEY_CONTENT}" > /home/{username}/.ssh/authorized_keys chmod 700 /home/{username}/.ssh chmod 600 /home/{username}/.ssh/authorized_keys chown -R {username}:{username} /home/{username}/.ssh

6. Перевірка входу

Важливо

ОБОВ'ЯЗКОВИЙ ЧЕКПОІНТ Не закривайте сесію root! Відкрийте нове вікно терміналу на своєму ПК та спробуйте зайти по ключу. Тільки після успішного входу можна продовжувати.

Перевірте, чи працює sudo (система має попросити пароль, який ви задали в Кроці 4, і вивести "root"):

bash
ssh -i ~/.ssh/{nickname}_key {username}@{SERVER_IP} sudo whoami

7. Firewall (UFW)

Всі наступні команди виконуйте від імені вашого нового користувача (з sudo). Налаштовуємо політику "заборонити все вхідне, крім SSH, HTTP та HTTPS".

bash
sudo apt install -y ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw --force enable sudo ufw status

8. Захист ядра (sysctl)

Застосовуємо параметри для захисту від мережевих атак.

bash
sudo tee /etc/sysctl.d/99-security.conf << 'EOF' net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 EOF sudo sysctl -p /etc/sysctl.d/99-security.conf

9. Базові пакети та час

Точний час критичний для логів, SSL-сертифікатів та fail2ban.

bash
sudo apt install -y chrony curl wget git unzip net-tools sudo systemctl enable chrony

10. Локальний SSH-конфіг

Налаштування шорткату на вашому локальному ПК, щоб надалі підключатися короткою командою ssh {nickname}.

bash
mkdir -p ~/.ssh && touch ~/.ssh/config && chmod 600 ~/.ssh/config cat >> ~/.ssh/config << 'EOF' Host {nickname} HostName {SERVER_IP} User {username} IdentityFile ~/.ssh/{nickname}_key IdentitiesOnly yes EOF

11. Перевірка безпеки

Перевірте, чи працює коротка команда з локального ПК і чи увімкнені базові захисти.

bash
ssh {nickname} sudo ufw status sysctl net.ipv4.tcp_syncookies

12. Фінальне блокування

Встановлюємо захист від брутфорсу (fail2ban) та назавжди забороняємо вхід по паролю і вхід для root.

bash
sudo apt install -y fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo systemctl enable fail2ban sudo systemctl start fail2ban sudo tee /etc/ssh/sshd_config.d/99-hardening.conf << 'EOF' PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AuthenticationMethods publickey EOF sudo sshd -t && sudo systemctl restart ssh
Порада

Готово! Сервер повністю налаштовано та захищено.

Цей гайд повністю безкоштовний. Якщо він зекономив вам вечір — ви можете підтримати розвиток проєкту.
Підтримати автора