Skip to main content
Spis treści poradnika
Początkujący14 min

Konfiguracja VPS Hetzner

Od pustego serwera do bezpiecznej maszyny gotowej na produkcję. Wybierz sposób konfiguracji swojego serwera.

Opublikowano:
DLA AGENTA AIChatGPTClaude
Repozytorium GitHub

Automatyczna konfiguracja przez AI

Przekaż swojemu asystentowi AI dostęp do tego repozytorium. Wykona on automatycznie wszystkie sprawdzenia, skonfiguruje zabezpieczenia i wygeneruje na Twoim komputerze plik z kompletem danych uwierzytelniających (credentials guide).

Otwórz Repozytorium GitHub

1. Tworzenie klucza SSH (Lokalnie)

Wykonywane na Twoim komputerze (Mac lub Linux) PRZED połączeniem się z serwerem.

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

Skopiuj wynik drugiego polecenia (zaczyna się od ssh-ed25519 ...). To jest Twój klucz publiczny.

2. Logowanie jako Root

Połącz się z serwerem za pomocą hasła wysłanego przez Hetzner na e-mail.

Ostrzeżenie

Hetzner może wymagać zmiany hasła. Wpisz obecne hasło, a następnie dwukrotnie nowe tymczasowe hasło. Jeśli połączenie zostanie zerwane po tej operacji – po prostu nawiąż je ponownie, używając nowego hasła.

bash
ssh root@{SERVER_IP}

3. Aktualizacja systemu

Aktualizacja wszystkich pakietów w trybie nieinteraktywnym (bez okien dialogowych grub).

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

4. Tworzenie użytkownika z sudo

Praca pod kontem root jest niebezpieczna. Tworzymy zwykłego użytkownika i nadajemy mu uprawnienia administratora.

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

5. Rozmieszczenie klucza SSH

Zapisujemy klucz publiczny skopiowany w Kroku 1 na serwerze.

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. Weryfikacja logowania

Ważne

OBOWIĄZKOWY CHECKPOINT Nie zamykaj sesji root! Otwórz nowe okno terminala na swoim PC i spróbuj zalogować się za pomocą klucza. Dopiero po pomyślnym logowaniu możesz kontynuować.

Sprawdź, czy działa sudo (system powinien poprosić o hasło ustawione w Kroku 4 i wypisać "root"):

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

7. Firewall (UFW)

Wszystkie kolejne polecenia wykonuj jako nowy użytkownik (z użyciem sudo). Konfigurujemy politykę „zablokuj wszystko przychodzące, poza SSH, HTTP oraz 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. Zabezpieczenie jądra (sysctl)

Stosujemy parametry chroniące przed atakami sieciowymi.

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. Podstawowe pakiety i czas

Dokładny czas jest krytyczny dla logów, certyfikatów SSL oraz fail2ban.

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

10. Lokalna konfiguracja SSH

Konfiguracja skrótu na Twoim lokalnym PC, aby w przyszłości łączyć się krótkim poleceniem 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. Kontrola bezpieczeństwa

Sprawdź, czy skrótowa komenda działa z lokalnego PC oraz czy podstawowe zabezpieczenia są aktywne.

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

12. Finalne blokady

Instalujemy ochronę przed brute-force (fail2ban) i trwale zakazujemy logowania przez hasło.

Ten poradnik jest całkowicie darmowy. Jeśli oszczędził Ci wieczór, możesz wesprzeć rozwój projektu.
Wesprzyj autora