मुखपृष्ठ » कैसे » अपने लिनक्स पीसी पर ओपनएसएसएच के इंस और आउट को जानें

    अपने लिनक्स पीसी पर ओपनएसएसएच के इंस और आउट को जानें

    हमने सुरक्षा और दूरस्थ पहुँच दोनों के लिए कई बार SSH के गुणों का बहिष्कार किया है। आइए स्वयं सर्वर पर नज़र डालें, कुछ महत्वपूर्ण "रखरखाव" पहलुओं, और कुछ quirks जो एक अन्यथा चिकनी सवारी में अशांति जोड़ सकते हैं.

    जबकि हमने लिनक्स के साथ इस गाइड को ध्यान में रखते हुए लिखा है, यह मैक ओएस एक्स में ओपनएसएसएच और साइगविन के माध्यम से विंडोज 7 पर भी लागू हो सकता है.

    क्यों यह सुरक्षित है

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

    जब हम किसी अन्य कंप्यूटर से कनेक्शन शुरू करने का निर्णय लेते हैं, तो हम अक्सर ऐसे प्रोटोकॉल का उपयोग करते हैं जिनके साथ काम करना आसान होता है। टेलनेट और एफ़टीपी दोनों दिमाग में आते हैं। हम एक दूरस्थ सर्वर को जानकारी भेजते हैं और फिर हम अपने कनेक्शन के बारे में पुष्टि करते हैं। कुछ प्रकार की सुरक्षा स्थापित करने के लिए, ये प्रोटोकॉल अक्सर उपयोगकर्ता नाम और पासवर्ड संयोजन का उपयोग करते हैं। इसका मतलब है कि वे पूरी तरह से सुरक्षित हैं, है ना? गलत!

    अगर हम अपनी कनेक्टिंग प्रक्रिया को मेल के रूप में समझते हैं, तो एफ़टीपी और टेलनेट का उपयोग करना पसंद है और मानक मेलिंग लिफाफे का उपयोग करना पसंद नहीं है। यह पोस्टकार्ड का उपयोग करना अधिक पसंद है। यदि कोई बीच में कदम रखता है, तो वे सभी सूचनाओं को देख सकते हैं, जिसमें दोनों संवाददाताओं के पते और उपयोगकर्ता नाम और पासवर्ड शामिल हैं। फिर वे सूचना को समान रखते हुए संदेश को बदल सकते हैं, और एक संवाददाता या दूसरे को प्रतिरूपण कर सकते हैं। इसे "मैन-इन-द-मिडिल" हमले के रूप में जाना जाता है, और यह न केवल आपके खाते से समझौता करता है, बल्कि यह भेजे गए प्रत्येक संदेश और प्राप्त फ़ाइल पर सवाल करता है। यदि आप प्रेषक से बात कर रहे हैं या नहीं, और यदि आप हैं, तो आप निश्चित नहीं हो सकते, आप सुनिश्चित नहीं हो सकते कि कोई भी बीच में सब कुछ देख रहा है.

    अब, SSL एन्क्रिप्शन को देखते हैं, जो HTTP को अधिक सुरक्षित बनाता है। यहां, हमारे पास एक डाकघर है जो पत्राचार को संभालता है, जो यह देखने के लिए जांच करता है कि क्या आपका प्राप्तकर्ता वह है जो वह होने का दावा करता है, और आपके मेल को देखने से बचाने वाले कानून हैं। यह समग्र रूप से अधिक सुरक्षित है, और केंद्रीय प्राधिकरण - Verisign एक है, हमारे HTTPS उदाहरण के लिए - यह सुनिश्चित करता है कि जिस व्यक्ति को आप चेक भेज रहे हैं। वे पोस्टकार्ड्स (अनएन्क्रिप्टेड क्रेडेंशियल्स) की अनुमति नहीं देते हैं; इसके बजाय वे असली लिफाफे को अनिवार्य करते हैं.

    अंत में, आइए SSH को देखें। यहां, सेटअप थोड़ा अलग है। हमारे यहाँ एक केंद्रीय प्रमाणक नहीं है, लेकिन चीजें अभी भी सुरक्षित हैं। ऐसा इसलिए है क्योंकि आप किसी ऐसे व्यक्ति को पत्र भेज रहे हैं, जिसका पता आप पहले से जानते हैं - कहते हैं, उनके साथ टेलीफोन पर बातचीत करके - और आप अपने लिफाफे पर हस्ताक्षर करने के लिए कुछ वास्तव में फैंसी गणित का उपयोग कर रहे हैं। आप इसे अपने भाई, प्रेमिका, पिताजी, या बेटी को सौंप देते हैं और इसे पते पर ले जाते हैं, और केवल तभी जब प्राप्तकर्ता के फैंसी गणित से मेल खाते हैं तो आप यह मान लेते हैं कि पता वही होना चाहिए। फिर, आपको एक पत्र वापस मिलता है, जो इस भयानक गणित द्वारा आंखों को चुभने से भी बचाता है। अंत में, आप अपने क्रेडेंशियल्स को एक और गुप्त एल्गोरिथम-मुग्ध लिफाफे में गंतव्य पर भेजते हैं। यदि गणित मेल नहीं खाता है, तो हम मान सकते हैं कि मूल प्राप्तकर्ता चला गया और हमें उनके पते की फिर से पुष्टि करने की आवश्यकता है.

    जब तक यह स्पष्टीकरण है, हम सोचते हैं कि हम इसे वहीं काट देंगे। यदि आपके पास कुछ और अंतर्दृष्टि है, तो बेझिझक टिप्पणी में चैट करें। अभी के लिए, हालांकि, SSH की सबसे प्रासंगिक विशेषता को देखें, मेजबान प्रमाणीकरण.

    होस्ट कुंजी

    होस्ट प्रमाणीकरण अनिवार्य रूप से वह हिस्सा है, जिस पर आप भरोसा करते हैं, वह लिफाफा लेता है (मैजिक गणित के साथ सील) और आपके प्राप्तकर्ता के पते की पुष्टि करता है। यह पते का एक बहुत विस्तृत विवरण है, और यह कुछ जटिल गणित पर आधारित है जिसे हम सिर्फ सही पर छोड़ देंगे। हालांकि इससे दूर करने के लिए कुछ महत्वपूर्ण चीजें हैं:

    1. चूंकि कोई केंद्रीय प्राधिकरण नहीं है, वास्तविक सुरक्षा मेजबान कुंजी, सार्वजनिक कुंजी और निजी कुंजी में निहित है। (ये बाद की दो कुंजियाँ कॉन्फ़िगर की जाती हैं, जब आपको सिस्टम तक पहुँच दी जाती है।)
    2. आमतौर पर, जब आप SSH के माध्यम से किसी अन्य कंप्यूटर से कनेक्ट होते हैं, तो होस्ट कुंजी संग्रहीत होती है। यह भविष्य की क्रियाओं को तेज़ बनाता है (या कम क्रिया).
    3. यदि होस्ट कुंजी बदल जाती है, तो आप सबसे अधिक सतर्क होंगे और आपको सावधान रहना चाहिए!

    चूंकि SSH सर्वर की पहचान स्थापित करने के लिए प्रमाणीकरण से पहले होस्ट कुंजी का उपयोग किया जाता है, इसलिए कनेक्ट होने से पहले आपको कुंजी की जांच करना सुनिश्चित करना चाहिए। आपको नीचे की तरह एक पुष्टिकरण संवाद दिखाई देगा.

    आपको चिंता नहीं करनी चाहिए, हालांकि! अक्सर जब सुरक्षा एक चिंता का विषय होता है, तो एक विशेष स्थान होगा कि मेजबान कुंजी (ऊपर ईसीडीएसए फिंगरप्रिंट) की पुष्टि की जा सकती है। पूरी तरह से ऑनलाइन उपक्रमों में, अक्सर यह केवल एक सुरक्षित लॉग-इन साइट पर होगा। आपको फ़ोन पर इस कुंजी की पुष्टि करने के लिए अपने IT विभाग को (या चुनना) करना पड़ सकता है। मैंने कुछ स्थानों के बारे में भी सुना है जहाँ कुंजी आपके काम के बिल्ला या विशेष "आपातकालीन नंबरों" की सूची में है। और, यदि आपके पास लक्ष्य मशीन तक भौतिक पहुंच है, तो आप अपने लिए भी देख सकते हैं!

    आपके सिस्टम की होस्ट कुंजी की जाँच करना

    चाबियाँ बनाने के लिए उपयोग किए जाने वाले 4 प्रकार के एन्क्रिप्शन एल्गोरिदम हैं, लेकिन इस साल के शुरू में ओपनएसएसएच के लिए डिफ़ॉल्ट ईसीडीएसए (कुछ अच्छे कारणों के साथ) है। हम आज उसी पर ध्यान केंद्रित करेंगे। यहां वह कमांड है जिसे आप SSH सर्वर पर चला सकते हैं:

    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 के माध्यम से जुड़े सभी होस्ट देख सकते हैं। यह आमतौर पर यहां स्थित है:

    ~ / .Ssh / known_hosts

    आप इसे किसी भी टेक्स्ट एडिटर में खोल सकते हैं। यदि आप देखते हैं, तो इस बात पर ध्यान देने की कोशिश करें कि चाबियाँ कैसे संग्रहीत की जाती हैं। वे होस्ट कंप्यूटर के नाम (या वेब पते) और उसके आईपी पते के साथ संग्रहित हैं.

    मेजबान कुंजी और समस्याओं को बदलना

    होस्ट कीज़ बदलने के कुछ कारण हैं या वे आपके ज्ञात_होस्ट फ़ाइल में लॉग इन होने से मेल नहीं खाते हैं.

    • सिस्टम को फिर से स्थापित / पुनः कॉन्फ़िगर किया गया था.
    • होस्ट कुंजी को सुरक्षा प्रोटोकॉल के कारण मैन्युअल रूप से बदल दिया गया था.
    • OpenSSH सर्वर अपडेट किया गया है और सुरक्षा मुद्दों के कारण विभिन्न मानकों का उपयोग कर रहा है.
    • आईपी ​​या डीएनएस पट्टा बदल गया। इसका मतलब है कि आप एक अलग कंप्यूटर तक पहुँचने की कोशिश कर रहे हैं.
    • सिस्टम में कुछ इस तरह से समझौता किया गया था कि मेजबान कुंजी बदल गई.

    सबसे अधिक संभावना है, मुद्दा पहले तीन में से एक है, और आप परिवर्तन को अनदेखा कर सकते हैं। यदि आईपी / डीएनएस पट्टा बदल गया है, तो सर्वर के साथ एक समस्या हो सकती है और आपको एक अलग मशीन पर भेजा जा सकता है। यदि आप सुनिश्चित नहीं हैं कि परिवर्तन का कारण क्या है, तो आपको शायद यह मानना ​​चाहिए कि यह सूची में अंतिम है.

    ओपनएसएसएच अज्ञात मेजबान को कैसे संभालता है

    OpenSSH के लिए एक सेटिंग है कि यह अज्ञात होस्ट को कैसे संभालता है, चर में दर्शाया गया है "StrictHostKeyChecking" (बिना उद्धरण के).

    आपके कॉन्फ़िगरेशन के आधार पर, अज्ञात होस्ट के साथ SSH कनेक्शन (जिनकी चाबियां पहले से ही आपके ज्ञात_होस्ट फ़ाइल में नहीं हैं) तीन तरीके से जा सकते हैं.

    • StrictHostKeyChecking नहीं पर सेट है; OpenSSH होस्ट कुंजी स्थिति की परवाह किए बिना स्वचालित रूप से किसी भी SSH सर्वर से कनेक्ट हो जाएगा। यह असुरक्षित है और इसकी अनुशंसा नहीं की जाती है, सिवाय इसके कि यदि आप अपने OS के पुनर्स्थापना के बाद मेजबानों का एक गुच्छा जोड़ रहे हैं, जिसके बाद आप इसे वापस बदल देंगे.
    • StrictHostKeyChecking पूछने के लिए सेट है; ओपनएसएसएच आपको नई होस्ट कुंजी दिखाएगा और उन्हें जोड़ने से पहले पुष्टि करने के लिए कहेंगे। यह कनेक्शनों को परिवर्तित होस्ट कुंजी में जाने से रोकेगा। यह डिफ़ॉल्ट है.
    • StrictHostKeyChecking हाँ पर सेट है; "नहीं" के विपरीत, यह आपको किसी भी होस्ट से जुड़ने से रोकेगा जो पहले से ही आपकी ज्ञात_होस्ट फ़ाइल में मौजूद नहीं है.

    आप निम्न प्रतिमान का उपयोग करके इस चर को आसानी से कमांड-लाइन पर बदल सकते हैं:

    ssh -o 'StrictHostKeyChecking [विकल्प]' उपयोगकर्ता @ होस्ट

    [विकल्प] को "नहीं", "पूछें," या "हां" से बदलें। ध्यान रखें कि इस चर और इसकी सेटिंग के आसपास एकल सीधे उद्धरण हैं। इसके अलावा उपयोगकर्ता @ होस्ट को उपयोगकर्ता नाम और उस सर्वर के होस्ट नाम से बदलें, जिसे आप कनेक्ट कर रहे हैं। उदाहरण के लिए:

    ssh -o 'StrictHostKeyChecking ask' [email protected]

    अवरुद्ध कुंजी के कारण होस्ट किए गए होस्ट

    यदि आपके पास एक सर्वर है जिसे आप एक्सेस करने की कोशिश कर रहे हैं, जिसकी कुंजी पहले से ही बदल गई थी, तो डिफ़ॉल्ट ओपनएसएसएच कॉन्फ़िगरेशन आपको इसे एक्सेस करने से रोकेगा। आप उस होस्ट के लिए StrictHostKeyChecking मान बदल सकते हैं, लेकिन यह पूरी तरह से, पूरी तरह से, असाधारण रूप से सुरक्षित नहीं होगा, है ना? इसके बजाय, हम अपनी ज्ञात_होस्ट फ़ाइल से केवल अपमानजनक मूल्य निकाल सकते हैं.

    यह निश्चित रूप से आपके स्क्रीन पर होने के लिए एक बदसूरत चीज है। सौभाग्य से, इसके लिए हमारा कारण एक पुनः स्थापित ओएस था। तो, चलिए उस लाइन को ज़ूम करते हैं जिसकी हमें ज़रूरत है.

    हम वहाँ चलें। देखें कि यह उस फ़ाइल का हवाला देता है जिसे हमें संपादित करने की आवश्यकता है? यह हमें लाइन नंबर भी देता है! तो, चलो उस फ़ाइल को नैनो में खोलें:

    यहां हमारी आक्रामक कुंजी है, पंक्ति 1 में। हमें पूरी लाइन को काटने के लिए Ctrl + K को हिट करना होगा.

    यह ज़्यादा बेहतर है! इसलिए, अब हमने फ़ाइल को लिखने (सहेजने) के लिए Ctrl + O मारा, फिर बाहर निकलने के लिए Ctrl + X.

    अब हमें इसके बजाय एक अच्छा संकेत मिलता है, जिसे हम बस "हां" के साथ जवाब दे सकते हैं।

    नई होस्ट कुंजी बनाना

    रिकॉर्ड के लिए, वास्तव में आपके द्वारा अपनी होस्ट कुंजी को बदलने के लिए बहुत अधिक कारण नहीं है, लेकिन यदि आपको कभी भी आवश्यकता होती है, तो आप आसानी से कर सकते हैं.

    सबसे पहले, उपयुक्त सिस्टम निर्देशिका में बदलें:

    सीडी / आदि / ssh /

    यह आमतौर पर जहां वैश्विक मेजबान कुंजी है, हालांकि कुछ डिस्ट्रोस ने उन्हें कहीं और रखा है। जब संदेह में अपने दस्तावेज़ की जाँच करें!

    अगला, हम सभी पुरानी कुंजियों को हटा देंगे.

    सुडो rm / etc / ssh / ssh_host_ *

    वैकल्पिक रूप से, आप उन्हें एक सुरक्षित बैकअप निर्देशिका में ले जाना चाह सकते हैं। सिर्फ एक विचार!

    उसके बाद, हम खुद को फिर से कॉन्फ़िगर करने के लिए ओपनएसएसएच सर्वर को बता सकते हैं:

    sudo dpkg-reconfigure ओपनश-सर्वर

    जब आपका कंप्यूटर अपनी नई कुंजी बनाता है, तो आपको एक संकेत दिखाई देगा। टा-दा!


    अब जब आप जानते हैं कि एसएसएच कैसे थोड़ा बेहतर काम करता है, तो आपको खुद को कठिन स्थानों से बाहर निकालने में सक्षम होना चाहिए। "रिमोट होस्ट आइडेंटिफ़िकेशन बदल गया है" चेतावनी / त्रुटि एक ऐसी चीज़ है जो बहुत सारे उपयोगकर्ताओं को बंद कर देती है, यहां तक ​​कि जो कमांड-लाइन से परिचित हैं.

    .