Polski

Ochrona katalogu hasłem (htpasswd) na VPS Linux

2 min
Hosting VPS/VDS

Uwierzytelnianie podstawowe to najszybszy sposób, by ukryć stronę testową, katalog administracyjny lub prywatne narzędzie za oknem logowania. Ten poradnik obejmuje Apache i Nginx na Twoim VPS Linux Infrawire, z plikiem haseł utworzonym przez htpasswd.

📋 Wymagania wstępne

  • VPS z Linuxem (Ubuntu 24.04 / Debian 12 lub AlmaLinux 9 / Rocky 9) z dostępem SSH jako root. Adres IP i hasło roota są w panelu klienta.
  • Apache lub Nginx obsługujący już stronę.
  • Ważny certyfikat HTTPS dla example.com. Uwierzytelnianie podstawowe wysyła hasło zakodowane w Base64, co nie jest szyfrowaniem: nigdy nie używaj go przez zwykły HTTP.

📦 Instalacja narzędzia htpasswd

Polecenie htpasswd pochodzi z małego pakietu, nawet jeśli używasz Nginx:

Bash
# Debian / Ubuntu sudo apt install -y apache2-utils # AlmaLinux / Rocky sudo dnf install -y httpd-tools

🔐 Tworzenie pliku z hasłami

Trzymaj plik poza katalogiem głównym serwisu, aby nikt nie mógł go pobrać:

Bash
sudo mkdir -p /etc/htpasswd sudo htpasswd -c -B /etc/htpasswd/example.com USER

-B używa bcrypt. -c tworzy plik: stosuj go tylko dla pierwszego użytkownika, bo przy istniejącym pliku nadpisuje całą zawartość (operacja destrukcyjna). Kolejnych użytkowników dodawaj bez -c:

Bash
sudo htpasswd -B /etc/htpasswd/example.com USER2

Serwer WWW musi móc odczytać plik:

Bash
# Debian / Ubuntu (Apache i Nginx działają jako www-data) sudo chown root:www-data /etc/htpasswd/example.com # AlmaLinux / Rocky: grupa apache (Apache) lub nginx (Nginx) sudo chmod 640 /etc/htpasswd/example.com

Aby usunąć użytkownika: sudo htpasswd -D /etc/htpasswd/example.com USER2.

🪶 Opcja A: Apache z .htaccess

Umieść plik .htaccess w chronionym katalogu, np. /var/www/example.com/private/.htaccess:

Apache
AuthType Basic AuthName "Strefa zastrzeżona" AuthUserFile /etc/htpasswd/example.com Require valid-user

Pliki .htaccess są ignorowane, dopóki wirtualny host ich nie dopuszcza. W bloku <Directory> (plik w /etc/apache2/sites-available/ w Debianie/Ubuntu, /etc/httpd/conf.d/ w AlmaLinux/Rocky):

Apache
<Directory /var/www/example.com> AllowOverride AuthConfig </Directory>

Następnie przetestuj i przeładuj:

Bash
sudo apachectl configtest sudo systemctl reload apache2 # Debian / Ubuntu sudo systemctl reload httpd # AlmaLinux / Rocky

Jeśli wolisz nie używać .htaccess, wstaw cztery linie uwierzytelniania bezpośrednio do bloku <Directory> lub <Location>: jest szybciej i bezpieczniej.

🚀 Opcja B: Nginx z auth_basic

Nginx nie czyta .htaccess. Dodaj dyrektywy do bloku server:

Nginx
1server { 2 listen 443 ssl; 3 server_name example.com; 4 # linie ssl_certificate tutaj 5 6 location /private/ { 7 auth_basic "Strefa zastrzeżona"; 8 auth_basic_user_file /etc/htpasswd/example.com; 9 } 10}

Aby chronić całą stronę, umieść te dwie linie w bloku server. Aby zostawić publiczną ścieżkę w chronionej witrynie (np. webhook), dodaj auth_basic off; w jej własnym location. Następnie:

Bash
sudo nginx -t && sudo systemctl reload nginx

✅ Test

Bez danych logowania powinieneś dostać 401, z danymi 200:

Bash
curl -I https://example.com/private/ curl -I -u USER https://example.com/private/

Oczekiwana pierwsza odpowiedź:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Strefa zastrzeżona"

curl pyta o hasło, gdy podasz samo -u USER, dzięki czemu nie trafia ono do historii powłoki.

🛠️ Rozwiązywanie problemów

Apache nie wyświetla okna logowania. AllowOverride nadal ma wartość None albo .htaccess leży w złym katalogu. Sprawdź ponownie blok <Directory> i przeładuj.

Zawsze 401 mimo poprawnego hasła. Serwer WWW nie może odczytać pliku (sprawdź chown i chmod) albo ścieżka w AuthUserFile lub auth_basic_user_file jest błędna. Wskaże to log błędów: /var/log/apache2/error.log, /var/log/httpd/error_log lub /var/log/nginx/error.log.

Błąd 500 po dodaniu .htaccess. Dyrektywa jest nieprawidłowa lub brakuje modułu. Uruchom sudo apachectl configtest i przeczytaj komunikat.

Pytanie o hasło przez HTTP. Najpierw przekieruj HTTP na HTTPS, aby dane logowania nigdy nie podróżowały jawnie.


🎉 Twój prywatny katalog wymaga teraz logowania, a zahaszowane hasła leżą poza zasięgiem i są obsługiwane wyłącznie przez HTTPS.

Bądź na bieżąco z najnowszymi ofertami, zniżkami i promocjami specjalnymi.

Zobacz promocje

Używamy plików cookie

Używamy plików cookie analitycznych, aby ulepszać nasz serwis. Nie sprzedajemy danych stronom trzecim. Więcej w polityce prywatności.