हिन्दी (Hindi)

Windows पर SSH कुंजियाँ: बिल्ट-इन OpenSSH से ed25519

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

कुंजी जोड़ी पासवर्ड से कहीं अधिक सुरक्षित है: निजी कुंजी कभी आपके 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 कंसोल।
PowerShell
ssh -V

🔐 ed25519 कुंजी बनाएँ

PowerShell खोलें (सामान्य, एडमिनिस्ट्रेटर नहीं) और चलाएँ:

PowerShell
ssh-keygen -t ed25519 -C 'USER@my-pc'

डिफ़ॉल्ट पथ C:\Users\USER\.ssh\id_ed25519 स्वीकार करें और पासफ़्रेज़ डालें। यह डिस्क पर निजी कुंजी को एन्क्रिप्ट करता है, इसलिए चोरी हुई फ़ाइल बेकार रहती है। दो फ़ाइलें बनती हैं: id_ed25519 (निजी, इसे कभी साझा न करें) और id_ed25519.pub (सार्वजनिक)।

📤 सार्वजनिक कुंजी VPS पर कॉपी करें

Windows में ssh-copy-id नहीं है, इसलिए कुंजी हाथ से स्थापित करें। पहले सार्वजनिक कुंजी दिखाएँ और पूरी पंक्ति कॉपी करें:

PowerShell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

पासवर्ड से लॉगिन करें और सर्वर पर वह पंक्ति जोड़ें (एकल उद्धरण चिह्नों के बीच का उदाहरण पाठ अपनी असली कुंजी से बदलें):

Bash
ssh 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 में:

PowerShell
Get-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent

फिर सामान्य PowerShell में अपनी कुंजी एक बार लोड करें और लोड की गई कुंजियाँ सूचीबद्ध करें:

PowerShell
ssh-add $env:USERPROFILE\.ssh\id_ed25519 ssh-add -l

एजेंट रीस्टार्ट के बाद भी कुंजी रखता है, इसलिए दोबारा नहीं पूछा जाएगा।

✅ कुंजी लॉगिन का परीक्षण करें

फिर से कनेक्ट करें। आपको बिना root पासवर्ड पूछे शेल मिलनी चाहिए:

PowerShell
ssh root@VPS_IP

कौन-सी विधि इस्तेमाल हो रही है यह ठीक से देखने के लिए -v जोड़ें और Server accepts key तथा Authenticated to ... using publickey खोजें:

PowerShell
ssh -v root@VPS_IP

जब तक यह काम न करे, आगे न बढ़ें, और यह सत्र खुला रखें।

🚫 सर्वर पर पासवर्ड प्रमाणीकरण बंद करें

Ubuntu और Debian पर /etc/ssh/sshd_config.d/ में पहले से कोई फ़ाइल (जैसे 50-cloud-init.conf) हो सकती है जो पासवर्ड चालू करती है। SSH पहला पढ़ा गया मान इस्तेमाल करता है, इसलिए ऐसी फ़ाइल बनाएँ जो क्रम में पहले आए। VPS पर root के रूप में चलाएँ:

Bash
grep -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 कुछ नहीं छापता।

नई विंडो से जाँचें कि अब पासवर्ड अस्वीकार हो रहे हैं जबकि आपकी कुंजी अब भी काम करती है:

PowerShell
ssh -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 खाते आपकी निजी कुंजी पढ़ सकते हैं। उसे केवल अपने उपयोगकर्ता तक सीमित करें:

PowerShell
icacls $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 में लॉगिन करता है और पासवर्ड बंद हैं। अपनी निजी कुंजी का बैकअप सुरक्षित जगह रखें।

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

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

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

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