कुंजी जोड़ी पासवर्ड से कहीं अधिक सुरक्षित है: निजी कुंजी कभी आपके PC से बाहर नहीं जाती और पोर्ट 22 को स्कैन करने वाले बॉट उसका अनुमान नहीं लगा सकते। Windows 10 और 11 में OpenSSH पहले से मौजूद है, इसलिए आप कुंजी बनाएँगे, उसे अपने VPS Linux Infrawire पर स्थापित करेंगे, Windows की ssh-agent सेवा में लोड रखेंगे और अंत में पासवर्ड लॉगिन बंद कर देंगे।
📋 पूर्वापेक्षाएँ
- OpenSSH क्लाइंट वाला Windows 10 या 11 (PowerShell में
ssh -Vसे जाँचें)। - एक Linux VPS (Ubuntu 24.04, Debian 12, AlmaLinux 9 या Rocky 9), जिसमें आप अभी पासवर्ड से लॉगिन कर सकते हैं: अपने ग्राहक क्षेत्र से आप VPS का IP और root पासवर्ड पा सकते हैं।
- लगभग दस मिनट, और सुरक्षा के लिए दूसरा SSH सत्र या VPS कंसोल।
PowerShellssh -V
🔐 ed25519 कुंजी बनाएँ
PowerShell खोलें (सामान्य, एडमिनिस्ट्रेटर नहीं) और चलाएँ:
PowerShellssh-keygen -t ed25519 -C 'USER@my-pc'
डिफ़ॉल्ट पथ C:\Users\USER\.ssh\id_ed25519 स्वीकार करें और पासफ़्रेज़ डालें। यह डिस्क पर निजी कुंजी को एन्क्रिप्ट करता है, इसलिए चोरी हुई फ़ाइल बेकार रहती है। दो फ़ाइलें बनती हैं: id_ed25519 (निजी, इसे कभी साझा न करें) और id_ed25519.pub (सार्वजनिक)।
📤 सार्वजनिक कुंजी VPS पर कॉपी करें
Windows में ssh-copy-id नहीं है, इसलिए कुंजी हाथ से स्थापित करें। पहले सार्वजनिक कुंजी दिखाएँ और पूरी पंक्ति कॉपी करें:
PowerShellGet-Content $env:USERPROFILE\.ssh\id_ed25519.pub
पासवर्ड से लॉगिन करें और सर्वर पर वह पंक्ति जोड़ें (एकल उद्धरण चिह्नों के बीच का उदाहरण पाठ अपनी असली कुंजी से बदलें):
Bashssh root@VPS_IP mkdir -p ~/.ssh && chmod 700 ~/.ssh echo 'ssh-ed25519 AAAA...your-key... USER@my-pc' >> ~/.ssh/authorized_keys sed -i 's/\r$//' ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
sed वाली पंक्ति Windows की लाइन-एंडिंग हटाती है, जो कुंजी को अपठनीय बना सकती है। इस काम के लिए ssh में PowerShell पाइप का उपयोग न करें: Windows PowerShell 5.1 डेटा में कैरिज रिटर्न जोड़ सकता है।
🧰 Windows पर ssh-agent चालू करें
एजेंट के बिना हर लॉगिन पर पासफ़्रेज़ लिखना पड़ता है। ssh-agent सेवा इंस्टॉल रहती है, पर डिफ़ॉल्ट रूप से बंद या मैन्युअल स्टार्ट पर होती है। एडमिनिस्ट्रेटर PowerShell में:
PowerShellGet-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent
फिर सामान्य PowerShell में अपनी कुंजी एक बार लोड करें और लोड की गई कुंजियाँ सूचीबद्ध करें:
PowerShellssh-add $env:USERPROFILE\.ssh\id_ed25519 ssh-add -l
एजेंट रीस्टार्ट के बाद भी कुंजी रखता है, इसलिए दोबारा नहीं पूछा जाएगा।
✅ कुंजी लॉगिन का परीक्षण करें
फिर से कनेक्ट करें। आपको बिना root पासवर्ड पूछे शेल मिलनी चाहिए:
PowerShellssh root@VPS_IP
कौन-सी विधि इस्तेमाल हो रही है यह ठीक से देखने के लिए -v जोड़ें और Server accepts key तथा Authenticated to ... using publickey खोजें:
PowerShellssh -v root@VPS_IP
जब तक यह काम न करे, आगे न बढ़ें, और यह सत्र खुला रखें।
🚫 सर्वर पर पासवर्ड प्रमाणीकरण बंद करें
Ubuntu और Debian पर /etc/ssh/sshd_config.d/ में पहले से कोई फ़ाइल (जैसे 50-cloud-init.conf) हो सकती है जो पासवर्ड चालू करती है। SSH पहला पढ़ा गया मान इस्तेमाल करता है, इसलिए ऐसी फ़ाइल बनाएँ जो क्रम में पहले आए। VPS पर root के रूप में चलाएँ:
Bashgrep -ri 'PasswordAuthentication' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ cat > /etc/ssh/sshd_config.d/10-keys-only.conf <<'EOF' PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes PermitRootLogin prohibit-password EOF sshd -t && systemctl reload ssh
AlmaLinux/Rocky पर सेवा का नाम sshd है: systemctl reload sshd इस्तेमाल करें। पक्का करें कि मुख्य sshd_config में ऊपर की ओर Include /etc/ssh/sshd_config.d/*.conf पंक्ति है (डिफ़ॉल्ट रूप से होती है)। सिंटैक्स सही होने पर sshd -t कुछ नहीं छापता।
नई विंडो से जाँचें कि अब पासवर्ड अस्वीकार हो रहे हैं जबकि आपकी कुंजी अब भी काम करती है:
PowerShellssh -o PubkeyAuthentication=no root@VPS_IP
अपेक्षित उत्तर Permission denied (publickey) है।
🛠️ समस्या निवारण
Permission denied (publickey). कुंजी सही खाते की authorized_keys में नहीं है, कई पंक्तियों में चिपक गई है या अनुमतियाँ गलत हैं। सर्वर पर chmod 700 ~/.ssh और chmod 600 ~/.ssh/authorized_keys चलाएँ और जाँचें कि पंक्ति ssh-ed25519 से शुरू होती है।
WARNING: UNPROTECTED PRIVATE KEY FILE. अन्य Windows खाते आपकी निजी कुंजी पढ़ सकते हैं। उसे केवल अपने उपयोगकर्ता तक सीमित करें:
PowerShellicacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "${env:USERNAME}:F"
Error connecting to agent: No such file or directory. ssh-agent सेवा नहीं चल रही; ऊपर बताए अनुसार उसे शुरू करें।
बदलाव के बाद पहुँच बंद हो गई। अपने ग्राहक क्षेत्र से VPS कंसोल इस्तेमाल करें, /etc/ssh/sshd_config.d/10-keys-only.conf हटाएँ, sshd -t चलाएँ और SSH सेवा रीलोड करें।
🚀 आपका Windows PC अब ed25519 कुंजी से VPS में लॉगिन करता है और पासवर्ड बंद हैं। अपनी निजी कुंजी का बैकअप सुरक्षित जगह रखें।