हिन्दी (Hindi)

VPS पर htpasswd से डायरेक्टरी को पासवर्ड से सुरक्षित करें

2 min
VPS/VDS होस्टिंग

बेसिक ऑथेंटिकेशन किसी स्टेजिंग साइट, एडमिन फ़ोल्डर या निजी टूल को लॉगिन प्रॉम्प्ट के पीछे छिपाने का सबसे तेज़ तरीका है। यह गाइड आपके VPS Linux Infrawire पर Apache और Nginx दोनों को कवर करती है, htpasswd से बनी पासवर्ड फ़ाइल के साथ।

📋 पूर्वापेक्षाएँ

  • root SSH एक्सेस वाला Linux VPS (Ubuntu 24.04 / Debian 12 या AlmaLinux 9 / Rocky 9)। IP और root पासवर्ड कस्टमर एरिया में हैं।
  • Apache या Nginx जो पहले से कोई साइट चला रहा हो।
  • example.com के लिए मान्य HTTPS सर्टिफ़िकेट। बेसिक ऑथेंटिकेशन पासवर्ड को Base64 में एन्कोड करके भेजता है, जो एन्क्रिप्शन नहीं है: इसे कभी सादे HTTP पर इस्तेमाल न करें।

📦 htpasswd टूल इंस्टॉल करें

Nginx इस्तेमाल करने पर भी htpasswd कमांड एक छोटे पैकेज से आता है:

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

🔐 पासवर्ड फ़ाइल बनाएँ

फ़ाइल को किसी भी वेब रूट से बाहर रखें, ताकि कोई उसे डाउनलोड न कर सके:

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

-B bcrypt इस्तेमाल करता है। -c फ़ाइल बनाता है: इसे केवल पहले उपयोगकर्ता के लिए इस्तेमाल करें, क्योंकि मौजूदा फ़ाइल पर यह सब कुछ मिटाकर दोबारा लिख देता है (विनाशकारी)। अन्य उपयोगकर्ता -c के बिना जोड़ें:

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

वेब सर्वर को फ़ाइल पढ़ने में सक्षम होना चाहिए:

Bash
# Debian / Ubuntu (Apache और Nginx www-data के रूप में चलते हैं) sudo chown root:www-data /etc/htpasswd/example.com # AlmaLinux / Rocky: ग्रुप apache (Apache) या nginx (Nginx) sudo chmod 640 /etc/htpasswd/example.com

किसी उपयोगकर्ता को हटाने के लिए: sudo htpasswd -D /etc/htpasswd/example.com USER2।

🪶 विकल्प A: .htaccess के साथ Apache

सुरक्षित करने वाले फ़ोल्डर में .htaccess फ़ाइल रखें, जैसे /var/www/example.com/private/.htaccess:

Apache
AuthType Basic AuthName "प्रतिबंधित क्षेत्र" AuthUserFile /etc/htpasswd/example.com Require valid-user

जब तक वर्चुअल होस्ट अनुमति न दे, .htaccess फ़ाइलें अनदेखी की जाती हैं। अपने <Directory> ब्लॉक में (Debian/Ubuntu पर /etc/apache2/sites-available/ में, AlmaLinux/Rocky पर /etc/httpd/conf.d/ में फ़ाइल):

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

फिर जांचें और रीलोड करें:

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

अगर आप .htaccess से बचना चाहते हैं, तो ऑथेंटिकेशन की चारों पंक्तियाँ सीधे <Directory> या <Location> ब्लॉक में रखें: यह तेज़ और ज़्यादा सुरक्षित है।

🚀 विकल्प B: auth_basic के साथ Nginx

Nginx .htaccess नहीं पढ़ता। निर्देश server ब्लॉक में जोड़ें:

Nginx
1server { 2 listen 443 ssl; 3 server_name example.com; 4 # ssl_certificate की पंक्तियाँ यहाँ 5 6 location /private/ { 7 auth_basic "प्रतिबंधित क्षेत्र"; 8 auth_basic_user_file /etc/htpasswd/example.com; 9 } 10}

पूरी साइट सुरक्षित करने के लिए ये दो पंक्तियाँ server ब्लॉक में रखें। सुरक्षित साइट के भीतर कोई पाथ सार्वजनिक रखना हो (जैसे webhook), तो उसके अपने location में auth_basic off; जोड़ें। फिर:

Bash
sudo nginx -t && sudo systemctl reload nginx

✅ जांच

बिना क्रेडेंशियल के 401 और क्रेडेंशियल के साथ 200 मिलना चाहिए:

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

पहला अपेक्षित जवाब:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="प्रतिबंधित क्षेत्र"

केवल -u USER देने पर curl पासवर्ड पूछता है, जिससे वह आपकी शेल हिस्ट्री में नहीं रहता।

🛠️ समस्या निवारण

Apache में लॉगिन प्रॉम्प्ट नहीं आता। AllowOverride अब भी None है, या .htaccess गलत फ़ोल्डर में है। <Directory> ब्लॉक दोबारा जांचें और रीलोड करें।

सही पासवर्ड पर भी हमेशा 401। वेब सर्वर फ़ाइल नहीं पढ़ पा रहा (chown और chmod जांचें), या AuthUserFile / auth_basic_user_file का पाथ गलत है। एरर लॉग बताता है: /var/log/apache2/error.log, /var/log/httpd/error_log या /var/log/nginx/error.log।

.htaccess जोड़ने के बाद 500 एरर। कोई निर्देश अमान्य है या ज़रूरी मॉड्यूल गायब है। sudo apachectl configtest चलाएँ और संदेश पढ़ें।

HTTP पर पासवर्ड प्रॉम्प्ट। पहले HTTP को HTTPS पर रीडायरेक्ट करें, ताकि क्रेडेंशियल कभी सादे रूप में न गुज़रें।


🎉 आपका निजी फ़ोल्डर अब लॉगिन माँगता है, हैश किए गए पासवर्ड पहुँच से बाहर रखे गए हैं और केवल HTTPS पर परोसे जाते हैं।

नवीनतम ऑफ़र, छूट और विशेष प्रोमोशन से अपडेट रहें।

प्रोमोशन देखें

हम cookies का उपयोग करते हैं

हम अपनी साइट पर आपके अनुभव को बेहतर बनाने के लिए एनालिटिक्स cookies का उपयोग करते हैं। कोई भी डेटा तीसरे पक्ष को नहीं बेचा जाता है। हमारे बारे में और जानें गोपनीयता नीति.