कोर्स
हर बार रिमोट सर्वर या GitHub रिपॉजिटरी से कनेक्ट करते समय पासवर्ड टाइप करते-करते थक गए हैं?
SSH कुंजियाँ आपकी ज़रूरत पूरी करती हैं। ये रिमोट सिस्टम्स तक पहुंचने के लिए पासवर्ड-आधारित प्रमाणीकरण का सुरक्षित और सुविधाजनक विकल्प देती हैं। SSH कुंजियाँ पासवर्ड से अधिक सुरक्षित होती हैं, क्योंकि ब्रूट फोर्स हमलों से इन्हें व्यावहारिक रूप से तोड़ा नहीं जा सकता।
वर्षों में, ये प्रोफेशनल वातावरण में सुरक्षित रिमोट कनेक्शन का मानक बन चुकी हैं। रिमोट सर्वर, क्लाउड सेवाओं, या Git जैसे वर्ज़न कंट्रोल सिस्टम्स के साथ काम करने वालों के लिए ये आवश्यक हैं।
इस लेख में, आप SSH कुंजियाँ जनरेट करना, उन्हें रिमोट सिस्टम्स में जोड़ना, और उन्हें सुरक्षित रूप से प्रबंधित करने के सर्वोत्तम अभ्यास सीखेंगे।
SSH कुंजियाँ क्या हैं?
SSH कुंजियाँ क्रिप्टोग्राफ़िक क्रेडेंशियल्स हैं जो आपको पासवर्ड टाइप किए बिना सुरक्षित रूप से रिमोट सिस्टम्स तक पहुंचने देती हैं। यानी जटिल पासवर्ड याद रखने के बजाय, आप कुंजियों की एक जोड़ी बनाते हैं – एक पब्लिक और एक प्राइवेट।
अपनी पब्लिक कुंजी को ऐसे ताले की तरह समझें जिसे आप किसी भी सर्वर को निसंकोच दे सकते हैं जहाँ आपको पहुंच चाहिए। आपकी प्राइवेट कुंजी उन तालों को खोलने वाली विशिष्ट चाबी की तरह काम करती है। जब आप रिमोट सिस्टम से जुड़ते हैं, तो वह देखता है कि आपकी प्राइवेट कुंजी उसकी संग्रहीत पब्लिक कुंजी से मेल खाती है या नहीं। अगर मेल खाती है, तो बिना पासवर्ड डाले आपको तुरंत एक्सेस मिल जाता है।
पब्लिक कुंजी से आपकी प्राइवेट कुंजी का पता नहीं लगाया जा सकता, जो इस सिस्टम को बेहद सुरक्षित बनाता है। आपकी प्राइवेट कुंजी गोपनीय रहनी चाहिए और आपके कंप्यूटर पर ही रहनी चाहिए, इसलिए इसे कभी किसी से साझा न करें।
> सुरक्षित कनेक्शन्स साइबरसुरक्षा के व्यापक परिदृश्य में कैसे फिट होते हैं, इसे और समझने के लिए Introduction to Data Security कोर्स देखें।
पारंपरिक पासवर्ड प्रमाणीकरण की तुलना में इनके लाभों की बात करें, तो ये मुख्य बिंदु जानना चाहिए:
- उन्नत सुरक्षा – पासवर्ड के विपरीत, SSH कुंजियाँ उनकी लंबाई और जटिलता (आम तौर पर 2048 बिट या अधिक) के कारण न तो अनुमानित की जा सकती हैं और न ही ब्रूट-फोर्स की जा सकती हैं।
- बेहतर सुविधा – एक बार सेटअप होने पर, आप हर बार पासवर्ड टाइप किए बिना सर्वर से कनेक्ट कर सकते हैं।
- ऑटोमेशन-फ्रेंडली – स्क्रिप्ट्स और स्वचालित प्रक्रियाओं के लिए उपयुक्त जिन्हें सुरक्षित प्रमाणीकरण चाहिए।
- केंद्रीकृत एक्सेस प्रबंधन – केवल सर्वरों पर पब्लिक कुंजियों को प्रबंधित करके एक्सेस जोड़ें या रद्द करें।
- पासवर्ड थकान से मुक्ति – आपको जटिल पासवर्ड बनाना, याद रखना, या समय-समय पर बदलना नहीं पड़ेगा।
SSH कुंजियाँ लगभग हर उस सिस्टम के साथ काम करती हैं जो SSH को सपोर्ट करता है, जैसे Linux सर्वर्स, क्लाउड प्लेटफॉर्म्स, और GitHub व GitLab जैसी कोड रिपॉजिटरीज़। ये प्रोफेशनल वातावरण में सुरक्षित रिमोट एक्सेस का मानक बन चुकी हैं।
> क्लाउड प्रोफेशनल्स के लिए, सुरक्षा और लागत-प्रभावशीलता दोनों में महारत ज़रूरी है—AWS Security and Cost Management कोर्स में और जानें।
अब आप जानते हैं कि SSH कुंजियाँ क्या हैं, तो अगला कदम है इन्हें जनरेट करना सीखना।
SSH कुंजियाँ कैसे जनरेट करें
आपका ऑपरेटिंग सिस्टम कोई भी हो, SSH कुंजियाँ बनाना कुछ ही मिनटों का काम है.
इस प्रक्रिया से दो फाइलें बनती हैं: आपकी प्राइवेट कुंजी (जो आपके कंप्यूटर पर सुरक्षित रहनी चाहिए) और आपकी पब्लिक कुंजी (जिसे आप रिमोट सर्वर्स पर जोड़ेंगे)।
Linux/MacOS पर SSH कुंजियाँ जनरेट करना
Linux या MacOS पर SSH कुंजियाँ बनाने के लिए आप बिल्ट-इन ssh-keygen कमांड का उपयोग करेंगे। शुरू करने के लिए टर्मिनल खोलें और टाइप करें:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
यह कमांड सिस्टम को 4096-बिट एन्क्रिप्शन (बहुत सुरक्षित) के साथ नई RSA कुंजी बनाने और पहचान के लिए आपकी ईमेल एक टिप्पणी के रूप में जोड़ने को कहती है।
सिस्टम आपसे पूछेगा कि कुंजी कहाँ सेव करनी है और क्या पासफ़्रेज़ जोड़ना है। अधिकतर उपयोगकर्ताओं के लिए डिफ़ॉल्ट लोकेशन उपयुक्त है, लेकिन पासफ़्रेज़ पर अवश्य विचार करें.
एक अच्छा पासफ़्रेज़ अतिरिक्त सुरक्षा परत जोड़ता है - भले ही कोई आपकी प्राइवेट कुंजी की फाइल हासिल कर ले, इस वाक्यांश को जाने बिना वह इसका उपयोग नहीं कर पाएगा।

छवि 1 - Linux/macOS पर SSH की-पेयर बनाना
चुनावों की पुष्टि करने के बाद, आपका सिस्टम दोनों कुंजियाँ आपके होम फोल्डर की .ssh निर्देशिका में बनाता है:
- आपकी प्राइवेट कुंजी: बिना एक्सटेंशन वाली फाइल (जैसे
id_rsa). - आपकी पब्लिक कुंजी:
.pubएक्सटेंशन वाली फाइल (जैसेid_rsa.pub).

छवि 2 - बनी हुई कुंजी फाइलें
Windows पर SSH कुंजियाँ जनरेट करना
Windows उपयोगकर्ताओं के पास SSH कुंजियाँ बनाने के लिए दो अच्छे विकल्प हैं - Git Bash और WSL।
Git Bash Linux/MacOS जैसी कमांड-लाइन अनुभूति देता है। यदि आपने Git for Windows इंस्टॉल किया है, तो यह टूल आपके पास पहले से है। Git Bash खोलें और ऊपर दिखाए गए वही ssh-keygen कमांड का उपयोग करें।
Windows Subsystem for Linux (WSL) भी अच्छा विकल्प है यदि आप Windows मशीन पर Linux वातावरण में काम करना पसंद करते हैं। कमांड्स बिल्कुल नेटिव Linux सिस्टम की तरह ही काम करते हैं।
जो लोग ग्राफिकल इंटरफेस पसंद करते हैं, PuTTYgen अधिक दृश्यात्मक तरीका प्रदान करता है।

छवि 3 - Windows पर PuTTYgen से कुंजी जनरेशन
अपनी की-पेयर बनाने के लिए आपको ये चरण अपनाने चाहिए:
- स्टार्ट मेनू से PuTTYgen लॉन्च करें।
- कुंजी प्रकार के रूप में RSA चुनें।
- "Generate" पर क्लिक करें और खाली क्षेत्र में माउस घुमाएँ।
- अतिरिक्त सुरक्षा के लिए पासफ़्रेज़ जोड़ें।
- समर्पित बटनों का उपयोग करके अपनी पब्लिक और प्राइवेट दोनों कुंजियाँ सेव करें।

छवि 4 - बनी हुई कुंजी फाइलें (2)
कुंजी फाइलों को समझना
SSH कुंजी जनरेशन प्रक्रिया दो फाइलें बनाती है जो एक जोड़ी के रूप में काम करती हैं।
आपकी प्राइवेट कुंजी गोपनीय और आपके कंप्यूटर पर सुरक्षित रहनी चाहिए। इसे आपकी पहचान सिद्ध करने वाली मास्टर की समझें। प्राइवेट कुंजियों के नाम आमतौर पर इस तरह होते हैं:
id_ed25519(Ed25519 कुंजियों के लिए)।id_rsa(RSA कुंजियों के लिए)।
आपकी पब्लिक कुंजी किसी भी सिस्टम के साथ खुले तौर पर साझा की जा सकती है जहाँ आप पहुंच चाहते हैं। यह ऐसे ताले की तरह काम करती है जिसे केवल आपकी प्राइवेट कुंजी खोल सकती है। पब्लिक कुंजियों का नाम हमेशा उनकी संबंधित प्राइवेट कुंजी के समान होता है, बस अंत में .pub जोड़ा होता है।
इस सिस्टम की सुरक्षा पूरी तरह आपकी प्राइवेट कुंजी को सुरक्षित रखने पर निर्भर करती है।
इसे कभी साझा न करें, ईमेल न करें, या अविश्वसनीय डिवाइस पर स्टोर न करें। यदि आपको लगता है कि आपकी प्राइवेट कुंजी से छेड़छाड़ हुई है, तो तुरंत नई जोड़ी जनरेट करें और उन सभी सर्वरों को अपडेट करें जिन पर आपकी पुरानी पब्लिक कुंजी थी।
आप अपनी पब्लिक कुंजी की सामग्री इस कमांड से देख सकते हैं:
cat ~/.ssh/id_rsa.pub

छवि 5 - पब्लिक कुंजी की सामग्री
आउटपुट वह पूरी स्ट्रिंग दिखाता है जिसकी ज़रूरत रिमोट सर्वर्स कॉन्फ़िगर करते समय होगी, जिसे हम अगले सेक्शन में देखेंगे।
SSH कुंजियाँ रिमोट सिस्टम्स में कैसे जोड़ें
अब जब आपने अपनी SSH की-पेयर बना ली है, तो जिस-जिस रिमोट सिस्टम तक आपको पहुंच चाहिए, वहाँ अपनी पब्लिक कुंजी जोड़नी होगी। साधारण शब्दों में, यह प्रक्रिया रिमोट सर्वर को बताती है कि आपकी प्राइवेट कुंजी प्रमाणीकरण का वैध साधन है।
रिमोट सर्वर पर पब्लिक कुंजियाँ जोड़ना
यह प्रक्रिया बहुत सरल है; आपको बस अपनी पब्लिक कुंजी रिमोट सर्वर पर एक विशेष फाइल में जोड़नी है। इस फाइल का नाम authorized_keys है, जिसमें उन पब्लिक कुंजियों की सूची होती है जिन्हें कनेक्ट होने की अनुमति है।
सबसे आसान तरीका ssh-copy-id कमांड से जोड़ना है:
ssh-copy-id username@remote_host
यह कमांड रिमोट सर्वर से कनेक्ट होता है, ज़रूरत हो तो आवश्यक निर्देशिकाएँ बनाता है, और आपकी पब्लिक कुंजी को authorized_keys फाइल में जोड़ देता है। इस प्रक्रिया के दौरान आपको अंतिम बार पासवर्ड दर्ज करना होगा।

छवि 6 - authorized_keys फाइल की सामग्री
यदि आपके सिस्टम में ssh-copy-id कमांड नहीं है, तो आप यही कार्य मैन्युअली कर सकते हैं, बस इसमें दो-तीन चरण होंगे।
इन निर्देशों का पालन करें, और कमांड्स एक-एक करके चलाएँ:
# अपनी पब्लिक कुंजी दिखाएँ और कॉपी करें
cat ~/.ssh/id_rsa.pub
# पासवर्ड प्रमाणीकरण के साथ अपने रिमोट सर्वर से कनेक्ट करें
ssh username@remote_host
# यदि .ssh निर्देशिका मौजूद नहीं है तो उसे बनाएं
mkdir -p ~/.ssh
# authorized_keys फाइल खोलें/बनाएँ और अपनी पब्लिक कुंजी पेस्ट करें
echo "your_copied_public_key" >> ~/.ssh/authorized_keys
और बस!
जिन सर्वरों पर आपको अपनी कुंजी सिस्टम एडमिनिस्ट्रेटर को देनी होती है, वहाँ बस अपनी पब्लिक कुंजी फाइल की सामग्री भेज दें। वे इसे सर्वर पर जोड़ देंगे।
कुंजी प्रमाणीकरण के लिए SSH कॉन्फ़िगर करना
पब्लिक कुंजी जोड़ने के बाद, आप सुरक्षा को और बढ़ाने के लिए SSH सर्वर कॉन्फ़िगर करना चाहें तो कर सकते हैं। इन चरणों के लिए प्रशासनिक (sudo) विशेषाधिकार चाहिए।
SSH सर्वर कॉन्फ़िगरेशन एडिट करने के लिए मुख्य कॉन्फ़िग फाइल खोलें:
sudo nano /etc/ssh/sshd_config

छवि 7 - sshd_config फाइल की सामग्री
इस फाइल में, आप कुछ सुरक्षा सुधार कर सकते हैं:
PasswordAuthentication noसेट करें ताकि पासवर्ड लॉगिन पूरी तरह डिसेबल हो जाए।- सुनिश्चित करें कि
PubkeyAuthentication yesसेट है (आमतौर पर डिफ़ॉल्ट रूप से सक्षम रहता है)। PermitRootLogin prohibit-passwordसेट करने पर विचार करें ताकि पासवर्ड से रूट लॉगिन रोका जा सके।
परिवर्तन सेव करने के बाद, उन्हें लागू करने के लिए SSH सेवा रीस्टार्ट करना याद रखें:
sudo systemctl restart sshd
यह भी ध्यान देने योग्य है कि सही फाइल अनुमतियाँ SSH कुंजी प्रमाणीकरण के लिए बेहद महत्वपूर्ण हैं। SSH सर्वर सुरक्षा के प्रति बहुत सख्त होता है और यदि अनुमतियाँ बहुत खुली हैं तो कनेक्शन अस्वीकार कर देगा। सुनिश्चित करें कि आपकी फाइलों पर ये अनुमतियाँ हों:
- आपकी होम निर्देशिका:
chmod 755 ~। .sshनिर्देशिका:chmod 700 ~/.ssh।authorized_keysफाइल:chmod 600 ~/.ssh/authorized_keys।
आपकी पब्लिक कुंजी जोड़ दी गई हो और सर्वर ठीक से कॉन्फ़िगर हो, तो अब आप बिना पासवर्ड डाले रिमोट सर्वर्स से कनेक्ट कर सकते हैं.
अगले सेक्शन में, मैं दिखाऊँगा कि SSH कुंजियों से प्रमाणीकरण कैसे करें।
प्रमाणीकरण के लिए SSH कुंजियों का उपयोग कैसे करें
अब आप पासवर्ड-रहित प्रमाणीकरण की सुविधा और सुरक्षा का आनंद लेने के लिए तैयार हैं। आइए देखें कि SSH कुंजियों से सर्वर्स और कोड रिपॉजिटरीज़ से कैसे कनेक्ट करें।
SSH कुंजी प्रमाणीकरण के साथ रिमोट सर्वर से कनेक्ट करना
SSH कुंजियों से सर्वर से कनेक्ट करना सामान्य SSH एक्सेस जैसा ही है, बस पासवर्ड प्रॉम्प्ट नहीं आता। टर्मिनल खोलें और मानक SSH कमांड का उपयोग करें:
ssh username@hostname
यदि आपने अपनी कुंजी डिफ़ॉल्ट लोकेशन (~/.ssh/id_rsa) में रखी है, तो SSH इसे स्वतः ढूँढकर उपयोग कर लेता है। यदि आपने कुंजी बनाते समय पासफ़्रेज़ सेट किया था, तो आपको इसे दर्ज करना होगा, पर सत्र में केवल एक बार।
अगर कुंजियाँ किसी गैर-मानक स्थान पर हैं, तो -i फ्लैग के साथ पथ निर्दिष्ट करें:
ssh -i ~/path/to/your/private_key username@hostname

छवि 8 - SSH के माध्यम से रिमोट सर्वर से कनेक्ट करना
हर बार कनेक्ट करते समय पासफ़्रेज़ टाइप करना उबाऊ हो सकता है। यहीं SSH एजेंट काम आता है। यह बैकग्राउंड में चलता है और आपकी डिक्रिप्टेड प्राइवेट कुंजियों को सुरक्षित रूप से मेमोरी में रखता है, जिससे आपको पासफ़्रेज़ केवल एक बार दर्ज करनी पड़ती है।
SSH एजेंट शुरू करने और अपनी कुंजी जोड़ने के लिए:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

छवि 9 - SSH एजेंट
आप पासफ़्रेज़ एक बार दर्ज करेंगे, और एजेंट आपके सत्र के दौरान आगे के सभी कनेक्शन्स के लिए प्रमाणीकरण संभाल लेगा। जब आपको कई बार सर्वर से कनेक्ट होना हो या ऐसे एप्लिकेशन्स हों जो कई SSH कनेक्शन स्थापित करते हैं, तब यह उपयोगी है।
macOS पर SSH एजेंट स्वतः शुरू होता है, और आप पहली कनेक्शन के दौरान "remember passphrase in keychain" सक्षम कर सकते हैं ताकि आगे के सत्रों में दोबारा न भरना पड़े। दुर्भाग्य से, यह फीचर केवल macOS-विशिष्ट है।
GitHub/GitLab प्रमाणीकरण के लिए SSH कुंजियों का उपयोग
GitHub और GitLab जैसी सेवाएँ भी SSH कुंजी प्रमाणीकरण सपोर्ट करती हैं, और वे इसे पासवर्ड-आधारित प्रमाणीकरण पर प्राथमिकता देती हैं।
अपनी SSH कुंजी GitHub में जोड़ने के लिए, पहले GitHub खोलें और अपने खाते में साइन-इन करें। फिर, दाएँ ऊपर अपनी प्रोफ़ाइल तस्वीर पर क्लिक करें और "Settings" चुनें। साइडबार में, "SSH and GPG keys" पर क्लिक करें:

छवि 10 - GitHub प्रमाणीकरण सेटअप (1)
"New SSH key" पर क्लिक करें, अपनी कुंजी को कोई वर्णनात्मक शीर्षक दें, "Key" फील्ड में अपनी पब्लिक कुंजी पेस्ट करें, और अंत में "Add SSH key" पर क्लिक करें:

छवि 11 - GitHub प्रमाणीकरण सेटअप (2)
सब कुछ हो जाने के बाद, आपको सफलता संदेश दिखेगा जो बताएगा कि कुंजी आपके खाते में जोड़ दी गई है:

छवि 12 - GitHub प्रमाणीकरण सेटअप (3)
कुंजी जोड़ने के बाद, आप HTTPS URLs के बजाय SSH URLs का उपयोग करके रिपॉजिटरीज़ को क्लोन, पुल, और पुश कर सकते हैं। यह कमांड उपयोग करेंगे:
git clone git@github.com:username/repository.git

छवि 13 - SSH के माध्यम से रिपो क्लोन करना
यही सब है। GitLab के लिए प्रक्रिया लगभग समान है—बस अपने खाते की सेटिंग्स में SSH Keys देखें।
संक्षेप में, Git ऑपरेशन्स के लिए SSH का उपयोग करने का अर्थ है कि आपको हर बार रिमोट रिपॉजिटरी से इंटरेक्ट करते समय अपना उपयोगकर्ता नाम और पासवर्ड दर्ज नहीं करना पड़ेगा। आपकी SSH कुंजी स्वचालित रूप से सुरक्षित प्रमाणीकरण प्रदान करती है।
यदि आप कई सेवाओं (जैसे GitHub और GitLab दोनों) के साथ काम करते हैं, तो आप प्रत्येक सेवा के लिए अलग-अलग कुंजियाँ बनाने पर विचार कर सकते हैं। यदि किसी एक कुंजी से समझौता हो जाए, तो इससे जोखिम सीमित रहता है।
> रिपॉजिटरी प्रबंधन में गहराई से जाने के लिए, Intermediate GitHub Concepts देखें।
SSH कुंजियों का प्रबंधन
जैसे-जैसे आप कई सिस्टम्स और सेवाओं पर SSH कुंजियों का उपयोग करते हैं, sooner or later आपको इन्हें प्रबंधित करने का तरीका चाहिए होगा।
इस सेक्शन में, मैं दिखाऊँगा कि मौजूदा कुंजियों का हिसाब कैसे रखें, पुरानी या समझौता हुई कुंजियों को कैसे हटाएँ, और संभावित समस्याओं का निवारण कैसे करें।
SSH कुंजियाँ देखना और सूचीबद्ध करना
आप अपनी सभी SSH कुंजियाँ होम फोल्डर की .ssh निर्देशिका देखकर देख सकते हैं। इस निर्देशिका में आपकी प्राइवेट कुंजियाँ और उनकी संबंधित पब्लिक कुंजियाँ दोनों होती हैं।
SSH निर्देशिका में सभी फाइलों की सूची देखने के लिए यह कमांड चलाएँ:
ls -la ~/.ssh

छवि 14 - .ssh निर्देशिका में सभी फाइलें
यह कमांड निर्देशिका की सभी फाइलें दिखाता है, जिनमें छिपी हुई भी शामिल हैं। आपको आमतौर पर ऐसी फाइलें दिखेंगी:
id_rsa- आपकी प्राइवेट RSA कुंजी।id_rsa.pub- आपकी पब्लिक RSA कुंजी।known_hosts- उन सर्वरों की सूची जिनसे आप कनेक्ट हुए हैं।authorized_keys- वे पब्लिक कुंजियाँ जो इस मशीन तक पहुंच सकती हैं (यदि यह सर्वर के रूप में सेट है)।config- आपका SSH क्लाइंट कॉन्फ़िगरेशन (यदि आपने बनाया है)।
यदि आपने विभिन्न सेवाओं के लिए कई कुंजियाँ बनाई हैं, तो आपको निर्माण के समय दिए गए नामों के साथ अतिरिक्त की-पेयर दिखेंगे।
किसी विशिष्ट पब्लिक कुंजी की सामग्री जाँचने के लिए यह कमांड चलाएँ:
cat ~/.ssh/id_rsa.pub

छवि 15 - पब्लिक कुंजी की सामग्री
यह पूरी पब्लिक कुंजी दिखाता है, जो ssh-rsa से शुरू होती है और आपकी टिप्पणी (आमतौर पर आपका ईमेल पता) पर समाप्त होती है।
SSH कुंजियाँ हटाना
समय के साथ, आपको विभिन्न कारणों से SSH कुंजियाँ हटाने की ज़रूरत पड़ सकती है - शायद आप मजबूत कुंजी प्रकार पर अपडेट कर रहे हैं, कोई डिवाइस खो गया, या अब कुछ सिस्टम्स तक पहुंच की ज़रूरत नहीं रही।
रिमोट सर्वर से कुंजियाँ हटाने के लिए, आपको authorized_keys फाइल एडिट करनी होगी:
# रिमोट सर्वर से कनेक्ट करें
ssh username@remote_host
# authorized_keys फाइल खोलें:
nano ~/.ssh/authorized_keys
GitHub और GitLab के लिए, कुंजियाँ हटाना और भी सरल है:
- अपने अकाउंट सेटिंग्स पर जाएँ।
- "SSH and GPG keys" सेक्शन में जाएँ।
- जिस कुंजी को हटाना है उसे ढूँढें।
- उस कुंजी के बगल में डिलीट आइकन पर क्लिक करें।

छवि 16 - GitHub पर कुंजी हटाने की पुष्टि
और अंत में, अपनी लोकल मशीन से कुंजियाँ हटाने के लिए, बस फाइलें डिलीट करें:
rm ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
id_rsa को उस कुंजी के नाम से बदलें जिसे आप हटाना चाहते हैं।
यदि आपको अपने known_hosts फाइल से किसी रिमोट होस्ट को हटाना है (आमतौर पर सर्वर के पुन:कॉन्फ़िगर होने के बाद), यह कमांड चलाएँ:
ssh-keygen -R hostname
यह निर्दिष्ट होस्ट की एंट्री को आपकी known_hosts फाइल से हटा देता है, जो "host key verification failed" त्रुटि आने पर काम आता है।
आम SSH कुंजी समस्याओं का निवारण
SSH कुंजी प्रमाणीकरण कई कारणों से कभी-कभी असफल हो सकता है। इस सेक्शन में, मैं आम समस्याओं के समाधान दिखाऊँगा।
- अनुमति संबंधी समस्याएँ। सुरक्षा कारणों से SSH फाइल अनुमतियों को लेकर सख्त है। यदि आपकी कुंजियों पर गलत अनुमतियाँ हैं, तो प्रमाणीकरण विफल होगा। इसे इन कमांड्स से ठीक करें:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
- पासफ़्रेज़ से जुड़ी समस्याएँ। यदि आप अपना पासफ़्रेज़ भूल गए हैं, दुर्भाग्य से, उसे रिकवर करने का कोई तरीका नहीं है। आपको ये चरण करने होंगे:
- नई की-पेयर जनरेट करें।
- नई पब्लिक कुंजी को अपने रिमोट सिस्टम्स में जोड़ें।
- पुरानी की-पेयर हटाएँ।
- कनेक्शन अस्वीकार। यदि "Connection refused" त्रुटि मिलती है, तो इसके कई संभावित कारण हो सकते हैं। इसे दूर करने के लिए ये कदम उठाएँ:
- सुनिश्चित करें सर्वर चल रहा है और पहुँचे जाने योग्य है।
- जाँचें कि सर्वर पर SSH सेवा चल रही है।
- सुनिश्चित करें आप सही पोर्ट का उपयोग कर रहे हैं (डिफ़ॉल्ट 22)।
- प्रमाणीकरण विफलताएँ। यदि "Permission denied (publickey)" त्रुटि मिलती है, तो इससे निपटने के लिए ये कदम करें:
- सुनिश्चित करें कि आपकी पब्लिक कुंजी सर्वर की
authorized_keysफाइल में ठीक से जोड़ी गई है। - जाँचें कि सर्वर पब्लिक की प्रमाणीकरण की अनुमति देता है।
- सुनिश्चित करें कि आप सही यूज़रनेम और होस्टनेम का उपयोग कर रहे हैं।
- पक्का करें कि आप सही प्राइवेट कुंजी का उपयोग कर रहे हैं।
- एजेंट संबंधी समस्याएँ। ये समस्याएँ तब आ सकती हैं जब SSH एजेंट काम नहीं कर रहा हो। यह करें:
ssh-add -lसे सुनिश्चित करें कि एजेंट चल रहा है।- यदि नहीं चल रहा, तो
eval "$(ssh-agent -s)"से शुरू करें। ssh-add ~/.ssh/id_rsaसे अपनी कुंजी जोड़ें।
अगले चरण में, SSH कुंजी प्रबंधन के कुछ सर्वोत्तम अभ्यास देखें।
SSH कुंजी प्रबंधन के सर्वोत्तम अभ्यास
SSH प्रमाणीकरण अवांछित पहुंच से आपके सिस्टम्स को सुरक्षित रखने के लिए बेहतरीन है, लेकिन सच कहें तो—कभी-कभी थोड़ा झंझट भी लग सकता है। जो सुझाव मैं कवर करने जा रहा हूँ, वे रोजमर्रा की सुविधा और मजबूत सुरक्षा के बीच संतुलन बनाने पर केंद्रित हैं।
SSH कुंजियों के लिए मजबूत पासफ़्रेज़ का उपयोग
यदि कोई आपकी कुंजी फाइल प्राप्त कर ले, तो आपकी प्राइवेट कुंजी का पासफ़्रेज़ अंतिम रक्षा पंक्ति की तरह काम करता है। हमेशा मजबूत और अद्वितीय पासफ़्रेज़ चुनें जो अनुमान लगाना कठिन हो, पर आपके लिए याद रखना आसान हो।
एक अच्छे पासफ़्रेज़ की ये विशेषताएँ होती हैं:
- कम से कम 12-15 वर्ण हों।
- बड़े अक्षर, छोटे अक्षर, संख्याएँ, और विशेष वर्णों का मिश्रण शामिल हो।
- आम पैटर्न या शब्दकोश के शब्दों से बचें।
- अन्य सेवाओं से दोहराया हुआ न हो।
ऐसी कुंजियों के लिए जो महत्त्वपूर्ण सिस्टम्स या प्रोडक्शन वातावरण तक पहुंच देती हैं, मजबूत पासफ़्रेज़ बिल्कुल आवश्यक है। कभी-कभार इसे टाइप करने की मामूली असुविधा सुरक्षा जोखिमों की तुलना में कहीं कम है।
जब आप SSH एजेंट का उपयोग करते हैं, तो आपको सत्र में केवल एक बार पासफ़्रेज़ दर्ज करनी होती है। यह मजबूत पासफ़्रेज़ को रोजमर्रा के उपयोग के लिए व्यवहार्य बनाता है। जटिल पासफ़्रेज़ को सुरक्षित रूप से स्टोर करने के लिए पासवर्ड मैनेजर का उपयोग करने पर विचार करें।
विभिन्न सिस्टम्स के लिए अलग कुंजियों का उपयोग
एक ही कुंजी हर जगह इस्तेमाल करने के बजाय, आपको अलग-अलग सेवाओं या सुरक्षा स्तरों के लिए हमेशा अलग की-पेयर बनानी चाहिए। यह compartmentalization जोखिम को सीमित करता है यदि किसी एक कुंजी से समझौता हो जाए।
उदाहरण के लिए, आप बना सकते हैं:
- कंपनी के सर्वरों के लिए कार्य-सम्बंधी कुंजी।
- अपने घरेलू प्रोजेक्ट्स के लिए व्यक्तिगत कुंजी।
- GitHub या GitLab के लिए समर्पित कुंजी।
- प्रोडक्शन सिस्टम्स के लिए उच्च-सुरक्षा कुंजी।
फिर से कहें, थोड़ी-सी असुविधा है, लेकिन अतिरिक्त प्रयास के काबिल।
कई कुंजियाँ बनाते समय, उनके उद्देश्य को पहचानने वाले वर्णनात्मक फ़ाइलनाम्स का उपयोग करें:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/github_rsa -C "github access"
किसी विशेष कुंजी का उपयोग करके कनेक्ट करने के लिए, आप सुविधाजनक रूप से कॉन्फ़िगरेशन फाइल सेट कर सकते हैं:
# ~/.ssh/config
Host github.com
IdentityFile ~/.ssh/github_rsa
Host companyserver
HostName 255.255.255.255
User ubuntu
IdentityFile ~/.ssh/company_server_rsa
यह तरीका सुनिश्चित करता है कि यदि किसी एक कुंजी से समझौता हो, तो आपको सिर्फ उसी को बदलना पड़े—अपने सभी सिस्टम्स को अपडेट करने की ज़रूरत नहीं।
SSH कुंजियों को नियमित रूप से रोटेट करें
समय-समय पर SSH कुंजियों को बदलना अनदेखे समझौतों के जोखिम को कम करता है और सुरक्षा के सर्वोत्तम अभ्यासों का पालन करता है.
इसे कितनी बार करना चाहिए, यह संवेदनशीलता पर निर्भर करता है:
- व्यक्तिगत प्रोजेक्ट्स: हर 1-2 वर्ष।
- व्यावसायिक सिस्टम्स: हर 6-12 महीने।
- उच्च-सुरक्षा वातावरण: हर 3-6 महीने।
- टीम सदस्यों के जाने या संदिग्ध गतिविधि के तुरंत बाद।
SSH कुंजियों को रोटेट करने की प्रक्रिया में नई की-पेयर बनाना, नई पब्लिक कुंजियों को सर्वर्स में जोड़ना, नई कुंजियों का काम करना सत्यापित करना, सर्वर्स से पुरानी पब्लिक कुंजियाँ हटाना, और लोकल मशीन से पुरानी प्राइवेट कुंजियाँ डिलीट करना शामिल है।
दूसरे शब्दों में, इसमें समय लगता है, इसलिए अपने शेड्यूल में इसकी योजना बनाएँ।
साथ ही, यह अच्छा अभ्यास है कि किस कुंजी को किन सिस्टम्स तक पहुंच है, इसका रिकॉर्ड बनाए रखें। संस्थाओं के लिए, ऐसे स्वचालित की-प्रबंधन टूल्स लागू करने पर विचार करें जो व्यवस्थित रूप से रोटेशन संभालते हैं।
SSH कुंजी प्रमाणीकरण को अनिवार्य करना
सबसे मजबूत सुरक्षा उपाय जो आप लागू कर सकते हैं, वह है अपने सर्वरों पर पासवर्ड प्रमाणीकरण को पूरी तरह निष्क्रिय कर देना और सभी कनेक्शन्स के लिए SSH कुंजियों की आवश्यकता रखना।
कुंजी-आधारित प्रमाणीकरण लागू करने के लिए ये कदम उठाएँ:
# अपने SSH सर्वर कॉन्फ़िगरेशन को एडिट करें
sudo nano /etc/ssh/sshd_config
# ये महत्वपूर्ण सुरक्षा विकल्प सेट करें
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
# SSH सेवा को रीस्टार्ट करें
sudo systemctl restart sshd
यह कॉन्फ़िगरेशन पासवर्ड पर होने वाले ब्रूट फोर्स हमलों को पूरी तरह रोक देती है.
परंतु ये परिवर्तन करने से पहले, सुनिश्चित करें कि आपका SSH कुंजी प्रमाणीकरण ठीक से काम कर रहा है ताकि आप खुद को लॉक-आउट न कर लें। ऐसा हो जाता है।
SSH कुंजियों का सार
निष्कर्षतः, यह कहना सुरक्षित है कि SSH कुंजियाँ रिमोट सिस्टम्स से कनेक्ट करने का आपका तरीका बदल देती हैं। पासवर्ड से की-आधारित प्रमाणीकरण पर स्विच करने से आपके दैनिक कामकाज में सुरक्षा और सुविधा—दोनों—बेहतर होते हैं।
एक और लाभ यह है कि प्रक्रिया जटिल नहीं है। आपको बस कुंजियाँ जनरेट करनी हैं, उन्हें उन सर्वर्स में जोड़ना है जहाँ आप पहुंचते हैं, और बिना पासवर्ड टाइप किए कनेक्ट करना है। बस इतना ही! पारंपरिक पासवर्ड-आधारित प्रमाणीकरण की तुलना में, SSH कुंजियाँ आपके कनेक्शन्स को तेज़ और अधिक विश्वसनीय बनाती हैं, और पासवर्ड अनुमान जैसे आम हमलों को भी रोकती हैं।
याद रखें कि आपकी प्राइवेट कुंजी की सुरक्षा आवश्यक है। एक मजबूत पासफ़्रेज़ का उपयोग करें, अपनी कुंजी को सुरक्षित रखें, और इस लेख में दिए गए सर्वोत्तम अभ्यासों का पालन करें, खासकर SSH कुंजियों को अलग-अलग रखने से संबंधित।
यदि आप SSH कुंजियों और सामान्य रूप से कमांड लाइन के साथ काम करने के बारे में और सीखना चाहते हैं, तो DataCamp के ये कोर्स आपके लिए अगला सर्वोत्तम कदम हैं:
FAQs
पासवर्ड की तुलना में SSH कुंजियों के क्या फायदे हैं?
SSH कुंजियाँ अधिक मजबूत सुरक्षा देती हैं क्योंकि उन्हें पासवर्ड की तरह ब्रूट-फोर्स नहीं किया जा सकता। वे अधिक सुविधा भी देती हैं क्योंकि हर कनेक्शन पर पासवर्ड टाइप करने की ज़रूरत नहीं पड़ती। इसके अतिरिक्त, SSH कुंजियाँ उन स्क्रिप्ट्स और प्रोग्राम्स के लिए सुरक्षित ऑटोमेशन सक्षम करती हैं जिन्हें सुरक्षित कनेक्शन्स स्थापित करने होते हैं।
क्या SSH कुंजियाँ सेट करने के लिए तकनीकी कौशल चाहिए?
बुनियादी कमांड लाइन की जानकारी सहायक है, लेकिन आवश्यक नहीं। सेटअप प्रक्रिया में कुछ सरल कमांड्स चलानी होती हैं जिनसे आप कुंजियाँ जनरेट करते हैं और उन्हें रिमोट सिस्टम्स में जोड़ते हैं। भले ही आप कमांड लाइन में नए हों, इस लेख में दिए चरण-दर-चरण निर्देशों का पालन करके आप सफलतापूर्वक SSH कुंजियाँ लागू कर सकते हैं।
क्या मैं सभी ऑपरेटिंग सिस्टम्स पर SSH कुंजियों का उपयोग कर सकता/सकती हूँ?
हाँ। SSH कुंजियाँ Windows, macOS, Linux, और अन्य Unix-आधारित सिस्टम्स पर काम करती हैं। सभी आधुनिक ऑपरेटिंग सिस्टम्स में या तो SSH टूल्स डिफ़ॉल्ट रूप से शामिल होते हैं या वैकल्पिक पैकेज के रूप में आसानी से उपलब्ध हैं। एक ही की-पेयर अलग-अलग ऑपरेटिंग सिस्टम्स पर उपयोग की जा सकती है।
"Permission denied (publickey)" त्रुटि का निवारण कैसे करें?
यह आम त्रुटि आमतौर पर दर्शाती है कि आपकी कुंजी सर्वर पर ठीक से रजिस्टर नहीं हुई है। सुनिश्चित करें कि आपकी पब्लिक कुंजी रिमोट सिस्टम की authorized_keys फाइल में सही तरह से जोड़ी गई है, फाइल अनुमतियाँ सही हैं (प्राइवेट कुंजी के लिए 600), और कनेक्ट करते समय आप सही यूज़रनेम और होस्टनेम का उपयोग कर रहे हैं।
क्या काम और व्यक्तिगत प्रोजेक्ट्स—दोनों के लिए एक ही SSH कुंजी का उपयोग करना संभव है?
तकनीकी रूप से संभव होने के बावजूद, सुरक्षा कारणों से यह अनुशंसित नहीं है। अलग-अलग वातावरणों के लिए अलग कुंजियों का उपयोग करने से, यदि किसी एक कुंजी से समझौता हो जाए, तो जोखिम सीमित रहता है। बेहतर सुरक्षा सीमाएँ बनाए रखने के लिए काम, व्यक्तिगत प्रोजेक्ट्स, और संवेदनशील सिस्टम्स के लिए अलग-अलग कुंजियाँ बनाएँ।
