जबकि हमने लिनक्स के साथ इस गाइड को दिमाग में लिखा है, यह सिगविन के माध्यम से मैक ओएस एक्स और विंडोज 7 में ओपनएसएसएच पर भी लागू हो सकता है।
यह सुरक्षित क्यों है
हमने कई बार उल्लेख किया है कि एसएसएच एक बिंदु से दूसरे डेटा को सुरक्षित रूप से कनेक्ट और सुरंग करने का एक शानदार तरीका है। आइए चीजों को कैसे काम करते हैं, इस बारे में एक बहुत ही संक्षिप्त रूप से देखें कि आपको कभी-कभी अजीब क्यों चल सकता है इसका बेहतर विचार मिलता है।
अगर हम मेल के रूप में हमारी कनेक्टिंग प्रक्रिया के बारे में सोचते हैं, तो एफ़टीपी और टेलनेट का उपयोग करना और पसंद मानक मेलिंग लिफाफे का उपयोग करना पसंद नहीं है। यह पोस्टकार्ड का उपयोग करने की तरह है। यदि कोई मध्य में कदम उठता है, तो वे दोनों सूचनाओं और उपयोगकर्ता नाम और पासवर्ड दोनों के पते सहित सभी जानकारी देख सकते हैं। फिर वे संदेश को बदल सकते हैं, जानकारी को वही रखते हैं, और एक संवाददाता या दूसरे का प्रतिरूपण कर सकते हैं। इसे "मैन-इन-द-बीच" हमले के रूप में जाना जाता है, और न केवल यह आपके खाते से समझौता करता है, बल्कि यह प्रत्येक संदेश भेजा गया और प्राप्त फ़ाइल पर सवाल उठाता है। आप यह सुनिश्चित नहीं कर सकते कि क्या आप प्रेषक से बात कर रहे हैं या नहीं, और यहां तक कि यदि आप भी हैं, तो आप सुनिश्चित नहीं हो सकते कि कोई भी बीच में से कुछ भी नहीं देख रहा है।
अब, एसएसएल एन्क्रिप्शन को देखें, जिस तरह से HTTP अधिक सुरक्षित बनाता है। यहां, हमारे पास एक डाकघर है जो पत्राचार को संभालता है, जो यह देखने के लिए जांच करता है कि क्या आपका प्राप्तकर्ता वह है या नहीं, और आपके मेल को देखने से रोकने वाले कानून हैं। यह अधिक सुरक्षित है, और केंद्रीय प्राधिकरण - हमारे HTTPS उदाहरण के लिए Verisign एक है - यह सुनिश्चित करता है कि जिस व्यक्ति को आप चेक भेजने के लिए मेल भेज रहे हैं। वे पोस्टकार्ड (अनएन्क्रिप्टेड प्रमाण-पत्र) की अनुमति नहीं देकर ऐसा करते हैं; इसके बजाय वे असली लिफाफे जरूरी हैं।
जब तक यह स्पष्टीकरण के साथ, हम सोचते हैं कि हम इसे वहां काट लेंगे। यदि आपके पास कुछ और अंतर्दृष्टि है, तो निश्चित रूप से टिप्पणियों में चैट करने में संकोच न करें। अभी के लिए, आइए, एसएसएच, मेजबान प्रमाणीकरण की सबसे प्रासंगिक विशेषता देखें।
मेजबान कुंजी
मेजबान प्रमाणीकरण अनिवार्य रूप से वह हिस्सा है जहां आप भरोसा करते हैं वह लिफाफा लेता है (जादू गणित के साथ मुहरबंद) और आपके प्राप्तकर्ता का पता पुष्टि करता है। यह पते का एक विस्तृत विस्तृत विवरण है, और यह कुछ जटिल गणित पर आधारित है कि हम अभी ठीक से छोड़ देंगे। इससे कुछ दूर करने के लिए कुछ महत्वपूर्ण चीजें हैं, हालांकि:
- चूंकि कोई केंद्रीय प्राधिकरण नहीं है, वास्तविक सुरक्षा मेजबान कुंजी, सार्वजनिक कुंजी और निजी कुंजी में निहित है। (जब आप सिस्टम तक पहुंच प्रदान करते हैं तो ये बाद वाली दो कुंजी कॉन्फ़िगर की जाती हैं।)
- आमतौर पर, जब आप किसी अन्य कंप्यूटर से एसएसएच के माध्यम से कनेक्ट होते हैं, तो मेजबान कुंजी संग्रहित होती है। इससे भविष्य की कार्रवाइयां तेज हो जाती हैं (या कम वर्बोज़)।
- यदि मेजबान कुंजी बदलती है, तो आपको अधिकतर सतर्क किया जाएगा और आपको सावधान रहना चाहिए!
चूंकि होस्ट कुंजी को एसएसएच सर्वर की पहचान स्थापित करने के लिए प्रमाणीकरण से पहले उपयोग किया जाता है, इसलिए आपको कनेक्ट करने से पहले कुंजी जांचना सुनिश्चित करना चाहिए। आपको नीचे एक पुष्टिकरण संवाद दिखाई देगा।
अपने सिस्टम की होस्ट कुंजी की जांच कर रहा है
कुंजी बनाने के लिए 4 प्रकार के एन्क्रिप्शन एल्गोरिदम उपयोग किए जाते हैं, लेकिन इस साल के शुरू में ओपनएसएसएच के लिए डिफ़ॉल्ट ईसीडीएसए (कुछ अच्छे कारणों से) है। हम उस पर ध्यान केंद्रित करेंगे।यहां वह आदेश है जिसे आप उस एसएसएच सर्वर पर चला सकते हैं जिस पर आपके पास पहुंच है:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
आपके आउटपुट को इस तरह कुछ वापस करना चाहिए:
256 ca:62:ea:7c:e4:9e:2e:a6:94:20:11:db:9c:78:c3:4c /etc/ssh/ssh_host_ecdsa_key.pub
पहला नंबर कुंजी की बिट-लम्बाई है, फिर कुंजी ही है, और आखिर में आपके पास उस फ़ाइल को संग्रहीत किया गया है। उस मध्य भाग की तुलना करें जब आप दूरस्थ रूप से लॉग इन करने के लिए कहा जाए तो उस चीज़ को तुलना करें। यह मेल खाना चाहिए, और आप सब तैयार हैं। यदि ऐसा नहीं होता है, तो कुछ और हो रहा है।
आप अपने ज्ञात_होस्ट फ़ाइल को देखकर एसएसएच के माध्यम से जुड़े सभी होस्ट देख सकते हैं। यह आमतौर पर स्थित है:
~/.ssh/known_hosts
आप इसे किसी भी टेक्स्ट एडिटर में खोल सकते हैं। यदि आप देखते हैं, तो ध्यान रखें कि कुंजी कैसे संग्रहीत की जाती है। वे मेजबान कंप्यूटर के नाम (या वेब पता) और उसके आईपी पते के साथ संग्रहीत हैं।
मेजबान कुंजी और समस्याएं बदलना
मेजबान कुंजी बदलने के कुछ कारण हैं या वे आपकी ज्ञात_होस्ट फ़ाइल में जो लॉग इन हैं उससे मेल नहीं खाते हैं।
- सिस्टम को पुनः स्थापित / पुनः कॉन्फ़िगर किया गया था।
- सुरक्षा प्रोटोकॉल के कारण मेजबान कुंजी मैन्युअल रूप से बदल दी गई थी।
- OpenSSH सर्वर अद्यतन और सुरक्षा समस्याओं के कारण विभिन्न मानकों का उपयोग कर रहा है।
- आईपी या डीएनएस पट्टा बदल गया। इसका अक्सर मतलब है कि आप एक अलग कंप्यूटर तक पहुंचने का प्रयास कर रहे हैं।
- इस प्रणाली को किसी तरह से समझौता किया गया था जैसे मेजबान कुंजी बदल गई।
सबसे अधिक संभावना है कि यह मुद्दा पहले तीन में से एक है, और आप परिवर्तन को अनदेखा कर सकते हैं। यदि आईपी / डीएनएस पट्टा बदल गया है, तो सर्वर के साथ कोई समस्या हो सकती है और आपको एक अलग मशीन पर भेजा जा सकता है। यदि आप सुनिश्चित नहीं हैं कि परिवर्तन का कारण क्या है तो आपको शायद यह सूची में अंतिम व्यक्ति मानना चाहिए।
ओपनएसएसएच अज्ञात होस्ट कैसे संभालता है
आपकी कॉन्फ़िगरेशन के आधार पर, अज्ञात होस्ट्स के साथ एसएसएच कनेक्शन (जिनकी कुंजी पहले से ही आपकी ज्ञात_होस्ट फ़ाइल में नहीं हैं) तीन तरीकों से जा सकती हैं।
- StrictHostKey चेकिंग को सेट किया गया है; मेजबान कुंजी स्थिति के बावजूद ओपनएसएसएच किसी भी एसएसएच सर्वर से स्वचालित रूप से कनेक्ट हो जाएगा। यह असुरक्षित है और अनुशंसित नहीं है, सिवाय इसके कि यदि आप अपने ओएस की पुनर्स्थापित करने के बाद मेजबानों का एक समूह जोड़ रहे हैं, जिसके बाद आप इसे वापस बदल देंगे।
- StrictHostKey चेकिंग पूछने के लिए सेट है; ओपनएसएसएच आपको नई मेजबान कुंजी दिखाएगा और उन्हें जोड़ने से पहले पुष्टि के लिए पूछेगा। यह कनेक्शन को मेजबान कुंजियों में बदलने से रोक देगा। यह डिफ़ॉल्ट है।
- StrictHostKey चेकिंग हाँ पर सेट है; "नहीं," के विपरीत यह आपको किसी ऐसे होस्ट से कनेक्ट करने से रोक देगा जो आपकी ज्ञात_होस्ट फ़ाइल में पहले से मौजूद नहीं है।
आप निम्न प्रतिमान का उपयोग कर कमांड लाइन पर आसानी से इस चर को बदल सकते हैं:
ssh -o 'StrictHostKeyChecking [option]' user@host
[विकल्प] को "नहीं," "पूछें," या "हां" के साथ बदलें। ध्यान रखें कि इस चर के आस-पास एक ही सीधे उद्धरण और इसकी सेटिंग है। उपयोगकर्ता द्वारा होस्ट किए जा रहे सर्वर के उपयोगकर्ता नाम और होस्ट नाम के साथ उपयोगकर्ता @ होस्ट को भी प्रतिस्थापित करें। उदाहरण के लिए:
ssh -o 'StrictHostKeyChecking ask' [email protected]
बदली हुई कुंजी के कारण अवरुद्ध मेजबान
यदि आपके पास कोई सर्वर है, तो आप उस तक पहुंचने का प्रयास कर रहे हैं जिसकी कुंजी पहले से ही बदली गई है, डिफ़ॉल्ट OpenSSH कॉन्फ़िगरेशन आपको इसे एक्सेस करने से रोक देगा। आप उस होस्ट के लिए StrictHostKey चेकिंग मान बदल सकते हैं, लेकिन यह पूरी तरह से पूरी तरह से, पूरी तरह से सुरक्षित नहीं होगा, है ना? इसके बजाए, हम केवल हमारी ज्ञात_होस्ट फ़ाइल से अपमानजनक मूल्य को हटा सकते हैं।
अब हमें इसके बजाय एक अच्छा संकेत मिलता है, जिसके लिए हम बस "हां" के साथ जवाब दे सकते हैं।
नई होस्ट कुंजी बनाना
रिकॉर्ड के लिए, वास्तव में आपके मेजबान कुंजी को बदलने के लिए बहुत अधिक कारण नहीं है, लेकिन यदि आपको कभी भी आवश्यकता मिलती है, तो आप आसानी से कर सकते हैं।
सबसे पहले, उपयुक्त सिस्टम निर्देशिका में बदलें:
cd /etc/ssh/
यह आमतौर पर है जहां वैश्विक होस्ट कुंजी हैं, हालांकि कुछ distros उन्हें कहीं और रखा है। संदेह में जब आपके दस्तावेज की जांच करें!
इसके बाद, हम सभी पुरानी चाबियाँ हटा देंगे।
sudo rm /etc/ssh/ssh_host_*
वैकल्पिक रूप से, आप उन्हें एक सुरक्षित बैकअप निर्देशिका में ले जाना चाहते हैं। सिर्फ एक विचार!
फिर, हम OpenSSH सर्वर को स्वयं को पुन: कॉन्फ़िगर करने के लिए बता सकते हैं:
sudo dpkg-reconfigure openssh-server
जब आपका कंप्यूटर अपनी नई कुंजी बनाता है तो आपको एक प्रॉम्प्ट दिखाई देगा। टा-दा!
अब जब आप जानते हैं कि एसएसएच थोड़ा बेहतर कैसे काम करता है, तो आपको खुद को कठिन धब्बे से बाहर निकालने में सक्षम होना चाहिए। "दूरस्थ होस्ट पहचान बदल गई है" चेतावनी / त्रुटि ऐसी चीज है जो बहुत से उपयोगकर्ताओं को फेंकता है, यहां तक कि जो कमांड लाइन से परिचित हैं।
बोनस प्वाइंट्स के लिए, आप अपने पासवर्ड दर्ज किए बिना एसएसएच पर फ़ाइलों को दूरस्थ रूप से कॉपी करने के तरीके की जांच कर सकते हैं। वहां, आप अन्य प्रकार के एन्क्रिप्शन एल्गोरिदम और अतिरिक्त सुरक्षा के लिए प्रमुख फ़ाइलों का उपयोग करने के बारे में कुछ और सीखेंगे।