Wolkra

गाइड

SSH कीज़ कैसे बनाएं और इस्तेमाल करें

Linux, macOS और Windows पर SSH कीज़ कैसे बनाएं, उन्हें VPS में कैसे जोड़ें, ssh-agent और कॉन्फ़िग फ़ाइल कैसे इस्तेमाल करें और कीज़ को सुरक्षित रूप से कैसे बदलें। साफ़ चरण, असली कमांड।

अपडेट: 6 मिनट में पढ़ें

SSH की फ़ाइलों की एक जोड़ी है: एक प्राइवेट की जो आपके कंप्यूटर पर रहती है और एक पब्लिक की जो आप सर्वर पर रखते हैं। ssh-keygen -t ed25519 से एक की बनाएं, पब्लिक की को सर्वर में जोड़ें, और आप बिना पासवर्ड के और कहीं बेहतर सुरक्षा के साथ लॉग इन करते हैं।

यह गाइड Linux, macOS और Windows को कवर करती है, फिर वे बारीकियां जो कीज़ के इस्तेमाल को आसान बनाती हैं।

कीज़ पासवर्ड से बेहतर क्यों हैं

इंटरनेट पर हर सर्वर के पोर्ट 22 पर लगातार पासवर्ड अंदाज़ा लगाने की कोशिशें होती हैं। मज़बूत पासवर्ड उन्हें धीमा करता है; की उन्हें रोक देती है, क्योंकि अंदाज़ा लगाने को कुछ है ही नहीं। कीज़ से ऑटोमेशन भी संभव होता है: स्क्रिप्ट, डिप्लॉय टूल और CI बिना पासवर्ड स्टोर किए लॉग इन कर सकते हैं।

1. की बनाएं

Linux और macOS

टर्मिनल खोलें और चलाएं:

bash
ssh-keygen -t ed25519 -C "laptop-2026"
  • -t ed25519 आधुनिक की टाइप चुनता है।
  • -C एक कमेंट जोड़ता है ताकि आप बाद में की को पहचान सकें। प्राइवेसी चाहिए तो ईमेल एड्रेस नहीं, डिवाइस का नाम इस्तेमाल करें।

डिफ़ॉल्ट पाथ (~/.ssh/id_ed25519) स्वीकार करें और एक पासफ़्रेज़ सेट करें। अब आपके पास ये हैं:

text
~/.ssh/id_ed25519       # private key, never share
~/.ssh/id_ed25519.pub   # public key, safe to share

Windows 10 और 11

Windows में OpenSSH पहले से आता है। PowerShell खोलें और यही कमांड चलाएं:

powershell
ssh-keygen -t ed25519 -C "desktop-2026"

फ़ाइलें C:\Users\<you>\.ssh\ में बनती हैं। अगर आप PuTTY इस्तेमाल करते हैं, तो प्राइवेट की को PuTTYgen में इम्पोर्ट करके .ppk फ़ाइल के रूप में सेव कर सकते हैं।

2. अपनी पब्लिक की देखें

bash
cat ~/.ssh/id_ed25519.pub

यह ssh-ed25519 से शुरू होने वाली एक ही लाइन है। यही हिस्सा आप सर्वरों और कंसोल में कॉपी करते हैं।

3. की को सर्वर पर रखें

विकल्प A: सर्वर बनाते समय

सबसे आसान तरीका। Wolkra कंसोल में SSH keys के अंदर पब्लिक की जोड़ें, फिर सर्वर बनाते समय उसे चुनें। की पहले बूट पर root अकाउंट में लिख दी जाती है और कोई पासवर्ड नहीं भेजा जाता। देखें SSH से कनेक्ट करें।

विकल्प B: ssh-copy-id से

अगर सर्वर पहले से है और आप पासवर्ड से लॉग इन कर सकते हैं:

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]   # उदाहरण एड्रेस

विकल्प C: हाथ से

Windows पर, या जब ssh-copy-id उपलब्ध न हो, की को सर्वर की authorized_keys फ़ाइल में पेस्ट करें:

bash
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo 'ssh-ed25519 AAAA... laptop-2026' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

परमिशन मायने रखती हैं। अगर ~/.ssh या authorized_keys दूसरों के लिए लिखने योग्य है, तो OpenSSH उस फ़ाइल को नज़रअंदाज़ कर देता है।

4. लॉग इन करें

अगर आपके पास कई कीज़ हैं, तो बताएं कि कौन-सी इस्तेमाल करनी है:

bash
ssh -i ~/.ssh/id_ed25519 [email protected]

5. ssh-agent इस्तेमाल करें ताकि पासफ़्रेज़ एक ही बार टाइप करना पड़े

macOS

bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

फिर ~/.ssh/config में जोड़ें:

text
Host *
  AddKeysToAgent yes
  UseKeychain yes

Linux

ज़्यादातर डेस्कटॉप अपने-आप एक एजेंट शुरू कर देते हैं। वरना:

bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Windows

powershell
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

6. SSH कॉन्फ़िग फ़ाइल लिखें

कॉन्फ़िग फ़ाइल लंबे कमांड को छोटे नामों में बदल देती है। ~/.ssh/config बनाएं:

text
Host web
  HostName 203.0.113.10
  User deploy
  IdentityFile ~/.ssh/id_ed25519

Host db
  HostName 10.0.0.5
  User deploy
  ProxyJump web

अब ssh web पहले सर्वर से कनेक्ट करता है, और ssh db web के ज़रिए जंप करके प्राइवेट नेटवर्क पर मौजूद सर्वर तक पहुंचता है। इसी तरह आप उन सर्वरों को मैनेज करते हैं जिनका कोई पब्लिक IP नहीं है, जैसे किसी प्राइवेट नेटवर्क पर। (एड्रेस उदाहरण हैं।)

7. उसी की से फ़ाइलें कॉपी करें

scp और rsync वही कीज़ और कॉन्फ़िग इस्तेमाल करते हैं:

bash
scp backup.tar.gz web:/home/deploy/
rsync -avz ./site/ web:/var/www/site/

8. सर्वर पर पासवर्ड लॉगिन बंद करें

जब की से लॉगिन काम करने लगे, तो पासवर्ड बंद कर दें ताकि सर्वर सिर्फ़ कीज़ स्वीकार करे:

bash
sudo tee /etc/ssh/sshd_config.d/10-keys-only.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
EOF
sudo sshd -t && sudo systemctl reload ssh

नया सेशन टेस्ट करते समय एक मौजूदा सेशन खुला रखें। prohibit-password root को सिर्फ़ की से लॉग इन करने देता है; जब आप sudo यूज़र से काम करने लगें, तो इसे no कर दें। और जानकारी Ubuntu सर्वर को सुरक्षित करना में।

9. कीज़ बदलें और रद्द करें

अच्छी आदतें:

  • हर डिवाइस के लिए एक की। अगर लैपटॉप खो जाए, तो सिर्फ़ वही की हटाएं।
  • मतलब वाले कमेंट। laptop-2026 को ढूंढना user@host से आसान है।
  • authorized_keys की समीक्षा समय-समय पर करें और वे कीज़ हटाएं जिन्हें कोई इस्तेमाल नहीं करता।

किसी की को रद्द करने के लिए हर सर्वर पर ~/.ssh/authorized_keys से उसकी लाइन डिलीट करें। बदलने के लिए पहले नई की जोड़ें, टेस्ट करें, फिर पुरानी हटाएं।

10. वैकल्पिक: हार्डवेयर कीज़

OpenSSH FIDO2 सिक्योरिटी कीज़ सपोर्ट करता है। कम्पैटिबल की लगाकर:

bash
ssh-keygen -t ed25519-sk -C "yubikey"

प्राइवेट की डिवाइस से कॉपी नहीं की जा सकती, और हर लॉगिन के लिए उसे छूना पड़ता है। एडमिन अकाउंट के लिए यह सबसे मज़बूत विकल्प है।

11. डिप्लॉय और CI के लिए SSH कीज़

ऑटोमेटेड सिस्टम को आपकी निजी की इस्तेमाल नहीं करनी चाहिए। हर सिस्टम के लिए बिना पासफ़्रेज़ की एक अलग की बनाएं, और सर्वर पर सीमित करें कि वह क्या कर सकती है:

bash
ssh-keygen -t ed25519 -f ~/.ssh/deploy_ci -N "" -C "ci-deploy"

सर्वर पर authorized_keys में की से पहले ऐसे विकल्प लगाएं जो उसे सीमित करें:

text
from="198.51.100.0/24",no-port-forwarding,no-agent-forwarding,no-pty ssh-ed25519 AAAA... ci-deploy
  • from= की को सिर्फ़ दी गई रेंज से स्वीकार करता है (यहां एक उदाहरण)।
  • no-pty और फ़ॉरवर्डिंग वाले विकल्प इंटरैक्टिव इस्तेमाल रोकते हैं।
  • command="..." किसी एक खास कमांड को ज़बरदस्ती चला सकता है, जैसे डिप्लॉय स्क्रिप्ट।

प्राइवेट की को अपने CI सिस्टम के सीक्रेट स्टोर में रखें, कभी भी रिपॉज़िटरी में नहीं। अगर कभी CI सिस्टम हैक हो जाए, तो authorized_keys से एक लाइन हटाकर उसकी पहुंच काटी जा सकती है।

12. सर्वर की होस्ट की जांचें

पहले कनेक्शन पर फ़िंगरप्रिंट वाला सवाल आपको गलत मशीन से कनेक्ट होने से बचाता है। ज़रूरी सर्वरों के लिए इसकी तुलना असली फ़िंगरप्रिंट से करें। सर्वर के ब्राउज़र कंसोल में चलाएं:

bash
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

अगर यह वही है जो आपके SSH क्लाइंट ने दिखाया, तो yes जवाब दें। फ़िंगरप्रिंट फिर ~/.ssh/known_hosts में सेव हो जाता है और आगे के हर कनेक्शन पर जांचा जाता है।

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

मैसेज आम कारण
Permission denied (publickey) गलत यूज़र, गलत की, या ~/.ssh पर गलत परमिशन
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED सर्वर दोबारा बनाया गया या IP फिर से इस्तेमाल हुआ; पुरानी एंट्री ssh-keygen -R 203.0.113.10 से हटाएं
फिर भी पासवर्ड मांगा जाता है की ऑफ़र नहीं हुई; कौन-सी कीज़ आज़माई जा रही हैं, यह देखने के लिए ssh -v चलाएं

क्लाइंट क्या-क्या आज़माता है, इसका विस्तृत लॉग देखने के लिए ssh -v user@host चलाएं। अगर आप किसी Wolkra सर्वर से पूरी तरह लॉक हो गए हैं, तो सर्वर व्यू से ब्राउज़र कंसोल खोलें या रेस्क्यू मोड में बूट करें।

आगे: नए VPS पर पहले कदम पूरे करें।

अक्सर पूछे जाने वाले सवाल

मुझे कौन-सी SSH की टाइप इस्तेमाल करनी चाहिए?

Ed25519 इस्तेमाल करें। यह छोटी, तेज़ और सुरक्षित है, और हर मौजूदा OpenSSH वर्ज़न इसे सपोर्ट करता है। 4096 बिट वाली RSA सिर्फ़ बहुत पुराने सिस्टम के लिए इस्तेमाल करें।

क्या मेरी SSH की पर पासफ़्रेज़ होना चाहिए?

हां। पासफ़्रेज़ डिस्क पर रखी प्राइवेट की को एन्क्रिप्ट करता है, इसलिए चोरी हुआ लैपटॉप या बैकअप आपके सर्वरों तक पहुंच नहीं देता। ssh-agent की मदद से आपको इसे हर सेशन में सिर्फ़ एक बार टाइप करना पड़ता है।

क्या मैं कई सर्वरों के लिए एक ही की इस्तेमाल कर सकता हूं?

हां। आपकी पब्लिक की कई सर्वरों पर हो सकती है। बहुत से लोग हर सर्वर के बजाय हर डिवाइस के लिए एक की रखते हैं, ताकि डिवाइस खोने पर उसे एक ही जगह से रद्द किया जा सके।

अगर मेरी प्राइवेट की खो जाए तो?

किसी दूसरे तरीके से लॉग इन करें, जैसे ब्राउज़र कंसोल से, और ~/.ssh/authorized_keys से पुरानी पब्लिक की हटा दें। फिर नई की जोड़ें।

Wolkra पर की कहां जोड़ूं?

कंसोल में SSH keys के अंदर। सेव की गई कीज़ सर्वर बनाते समय चुनी जा सकती हैं और पहले बूट पर root अकाउंट में लिख दी जाती हैं।

फ़्रैंकफ़र्ट में सर्वर शुरू करें

अकाउंट बनाएं, टॉप-अप करें, और €3.49 प्रति माह से सर्वर चलाएं, सिर्फ़ इस्तेमाल किए गए घंटों का भुगतान करके। हर प्लान पर अनमीटर्ड बैंडविड्थ।