VPS'te dizini htpasswd ile parolayla koruma

2 min
VPS/VDS Hosting

Temel kimlik doğrulama, bir test sitesini, yönetim klasörünü veya özel bir aracı giriş penceresinin arkasına gizlemenin en hızlı yoludur. Bu rehber, htpasswd ile oluşturulan bir parola dosyasıyla VPS Linux Infrawire sunucunuzda hem Apache'yi hem Nginx'i kapsar.

📋 Ön koşullar

  • Root SSH erişimli bir Linux VPS (Ubuntu 24.04 / Debian 12 veya AlmaLinux 9 / Rocky 9). IP adresi ve root parolası müşteri alanınızdadır.
  • Zaten bir site sunan Apache veya Nginx.
  • example.com için geçerli bir HTTPS sertifikası. Temel kimlik doğrulama parolayı Base64 ile kodlanmış gönderir; bu şifreleme değildir: düz HTTP üzerinden asla kullanmayın.

📦 htpasswd aracını kurma

htpasswd komutu, Nginx kullansanız bile küçük bir paketten gelir:

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

🔐 Parola dosyasını oluşturma

Dosyayı kimsenin indirememesi için herhangi bir web kök dizininin dışında tutun:

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

-B bcrypt kullanır. -c dosyayı oluşturur: yalnızca ilk kullanıcı için kullanın, çünkü mevcut dosyada her şeyin üzerine yazar (yıkıcı). Diğer kullanıcıları -c olmadan ekleyin:

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

Web sunucusunun dosyayı okuyabilmesi gerekir:

Bash
# Debian / Ubuntu (Apache ve Nginx www-data olarak çalışır) sudo chown root:www-data /etc/htpasswd/example.com # AlmaLinux / Rocky: apache (Apache) veya nginx (Nginx) grubu sudo chmod 640 /etc/htpasswd/example.com

Bir kullanıcıyı silmek için: sudo htpasswd -D /etc/htpasswd/example.com USER2.

🪶 Seçenek A: .htaccess ile Apache

Korumak istediğiniz klasöre bir .htaccess dosyası koyun, örneğin /var/www/example.com/private/.htaccess:

Apache
AuthType Basic AuthName "Kısıtlı alan" AuthUserFile /etc/htpasswd/example.com Require valid-user

Sanal sunucu izin vermedikçe .htaccess dosyaları yok sayılır. <Directory> bloğunuzda (Debian/Ubuntu'da /etc/apache2/sites-available/, AlmaLinux/Rocky'da /etc/httpd/conf.d/ içindeki dosya):

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

Sonra test edip yeniden yükleyin:

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

.htaccess kullanmak istemezseniz dört kimlik doğrulama satırını doğrudan bir <Directory> veya <Location> bloğuna koyun: daha hızlı ve daha güvenlidir.

🚀 Seçenek B: auth_basic ile Nginx

Nginx .htaccess okumaz. Yönergeleri server bloğuna ekleyin:

Nginx
1server { 2 listen 443 ssl; 3 server_name example.com; 4 # ssl_certificate satırları burada 5 6 location /private/ { 7 auth_basic "Kısıtlı alan"; 8 auth_basic_user_file /etc/htpasswd/example.com; 9 } 10}

Tüm siteyi korumak için bu iki satırı server bloğuna koyun. Korunan sitede bir yolu herkese açık bırakmak için (örneğin bir webhook), kendi location bloğuna auth_basic off; ekleyin. Sonra:

Bash
sudo nginx -t && sudo systemctl reload nginx

✅ Test

Kimlik bilgisi olmadan 401, kimlik bilgisiyle 200 almalısınız:

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

Beklenen ilk yanıt:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Kısıtlı alan"

-u USER tek başına verildiğinde curl parolayı sorar; böylece parola kabuk geçmişinizde kalmaz.

🛠️ Sorun giderme

Apache'de giriş penceresi çıkmıyor. AllowOverride hâlâ None ya da .htaccess yanlış klasörde. <Directory> bloğunu yeniden kontrol edin ve yeniden yükleyin.

Doğru parolayla bile hep 401. Web sunucusu dosyayı okuyamıyor (chown ve chmod değerlerini kontrol edin) ya da AuthUserFile veya auth_basic_user_file yolu yanlış. Hata günlüğü bunu söyler: /var/log/apache2/error.log, /var/log/httpd/error_log veya /var/log/nginx/error.log.

.htaccess ekledikten sonra 500 hatası. Bir yönerge geçersiz ya da gerekli modül eksik. sudo apachectl configtest çalıştırıp mesajı okuyun.

HTTP üzerinden parola istemi. Kimlik bilgileri asla açık gitmesin diye önce HTTP'yi HTTPS'e yönlendirin.


🎉 Özel klasörünüz artık giriş istiyor; özetlenmiş parolalar erişilemez bir yerde saklanıyor ve yalnızca HTTPS üzerinden sunuluyor.

En yeni teklifler, indirimler ve özel promosyonlardan haberdar olun.

Promosyonları gör

Çerez kullanıyoruz

Sitemizdeki deneyiminizi iyileştirmek için analiz çerezleri kullanıyoruz. Hiçbir veri üçüncü taraflara satılmaz. Daha fazlasını şurada öğrenin: gizlilik politikası.