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

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

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

इस समस्या को दूर करने के लिए, आपको ओपनएसएसएच की डिफ़ॉल्ट प्रमाणीकरण तंत्र को कुंजी-आधारित सिस्टम में स्विच करने की आवश्यकता है।

सफलता की कुंजी

डिफ़ॉल्ट रूप से OpenSSH केवल किसी सर्वर की पहचान प्रमाणित करने के लिए कुंजी का उपयोग करता है जब पहली बार क्लाइंट एक नई दूरस्थ मशीन से मुकाबला करता है:

 $ ssh [email protected] होस्ट 'atlantis.remote.com (atlantis.remote.com) की प्रामाणिकता स्थापित नहीं की जा सकती है। ईसीडीएसए कुंजी फिंगरप्रिंट दा है: ई 8: ए 2: 77: एफ 4: ई 5: 10: 56: 6 डी: डी 4: डी 2: डीसी: 15: 8e: 91: 22। क्या आप वाकई कनेक्ट करना जारी रखना चाहते हैं (हां / नहीं)? 

जब आप "हां" लिखकर जवाब देते हैं, तो रिमोट होस्ट ज्ञात मेजबानों की सूची में जोड़ा जाता है। तो सर्वर के पासवर्ड पूछकर क्लाइंट को प्रमाणित करने के सर्वर के अलावा, ग्राहक भी कुंजी का उपयोग कर सर्वर को प्रमाणित करता है।

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

एक कुंजी बनाने के लिए, अपने क्लाइंट पर दर्ज करें:

 $ ssh-keygen सार्वजनिक / निजी आरएसए कुंजी जोड़ी उत्पन्न करना। कुंजी (/home/bodhi/.ssh/id_rsa) को सहेजने के लिए फ़ाइल दर्ज करें: पासफ्रेज दर्ज करें (पासफ्रेज के लिए खाली नहीं): एक ही पासफ्रेज दोबारा दर्ज करें: आपकी पहचान /home/bodhi/.ssh/id_rsa में सहेजी गई है। आपकी सार्वजनिक कुंजी को /home/bodhi/.ssh/id_rsa.pub में सहेजा गया है। 

याद रखें कि पासफ्रेज खाली न छोड़ें और उस स्थान को नोट करें जहां कुंजी संग्रहित की जाती है। "Id_rsa" फ़ाइल केवल आपके खाते द्वारा पठनीय है, और इसकी सामग्री पीढ़ी के दौरान आपके द्वारा प्रदान किए गए पासफ्रेज़ से एन्क्रिप्ट की जाती है।

अगला चरण सार्वजनिक कुंजी को रिमोट सर्वर पर कॉपी करना है। मान लीजिए कि आप "atlantis.remote.com" नामक दूरस्थ मशीन पर उपयोगकर्ता "व्यवस्थापक" में लॉगिन करना चाहते हैं, तो आप कुंजी को एक ही कमांड से ले जा सकते हैं:

 $ ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected] [email protected] का पासवर्ड: 

आपके निजी कुंजी के लिए पासफ्रेज प्रदान करने के बाद, सार्वजनिक कुंजी स्वचालित रूप से दूरस्थ सर्वर पर सही स्थान पर रखी जाएगी, जो डिफ़ॉल्ट रूप से "~ / .ssh / अधिकृत_keys" फ़ाइल है।

जब आप रिमोट मशीन में अब एसएसएच करते हैं, तो आपको अपने पासफ्रेज के लिए संकेत मिलेगा। चाबियों का उपयोग करने का एकमात्र लाभ यह है कि आपको अनएन्क्रिप्टेड संचारित पासवर्ड के साथ प्रमाणित करने के बजाय, रिमोट सर्वर और आपके क्लाइंट कुंजी के आधार पर आपकी पहचान स्थापित करते हैं।

साथ ही आप एक ही पासफ्रेज़ का उपयोग करके कई दूरस्थ बक्से में एसएसएच कर सकते हैं, जब तक कि इन दूरस्थ मशीनों में आपकी सार्वजनिक कुंजी हो। तो आपको एकाधिक पासवर्ड याद रखने की ज़रूरत नहीं है।

लेकिन आप अभी भी पासफ्रेज़ के लिए बाधित किए बिना स्क्रिप्ट नहीं चला सकते हैं।

संबंधित : एसएसएच कनेक्शन के लिए दो-फैक्टर प्रमाणीकरण को कैसे सक्षम करें

बचाव के लिए एसएसएच एजेंट

ओपनएसएसएच एसएसएच-एजेंट नामक एक उपकरण को बंडल करता है, जो आपकी निजी कुंजी को स्मृति में रखता है। एक बार एजेंट चल रहा है, पासफ्रेज के लिए आपको संकेत देने के बजाय, एसएसएच क्लाइंट एजेंट के साथ बातचीत करेंगे।

आप एजेंट को " ssh-agent /bin/bash " से शुरू कर सकते हैं, मानते हुए कि आप बैश खोल का उपयोग कर रहे हैं।

कोई भी आदेश जिसके लिए आपकी ओपनएसएसएच निजी कुंजी तक पहुंच की आवश्यकता होती है उसे एजेंट द्वारा अवरुद्ध और उत्तर दिया जाएगा।

जब एजेंट चलता है, तो आपको इसे अपनी चाबियों से लैस करने की आवश्यकता होती है। यह "ssh-add" प्रोग्राम का आह्वान करके किया जाता है जो डिफ़ॉल्ट रूप से डिफ़ॉल्ट पहचान फ़ाइल (~ / .ssh / id_rsa) से कुंजी लोड करता है।

 $ ssh-add /home/bodhi/.ssh/id_rsa के लिए पासफ्रेज दर्ज करें: पहचान जोड़ा गया: /home/bodhi/.ssh/id_rsa (/home/bodhi/.ssh/id_rsa) 

अब जब आप रिमोट कंप्यूटर में " ssh [email protected] " के साथ लॉग इन करते हैं, तो आपको पासफ्रेज दर्ज किए बिना अनुमति दी जाएगी!

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

अब भी जब आप कुंजी का उपयोग कर रहे हैं, तो पासवर्ड के माध्यम से प्रमाणीकरण को अक्षम करना एक अच्छा विचार है। ऐसा करने के लिए, दूरस्थ सर्वर की कॉन्फ़िगरेशन फ़ाइल (/etc/ssh/.sshd_config) संपादित करें और "yes" से "no" से " PasswordAuthentication प्रमाणीकरण" पैरामीटर बदलें। अब से, यदि कोई आपकी एसएसएच सेवा से कनेक्ट करने का प्रयास करता है जिसके पास सर्वर पर सार्वजनिक कुंजी नहीं है, तो उसे लॉगिन प्रॉम्प्ट को देखे बिना पहुंच से वंचित कर दिया जाएगा।

छवि क्रेडिट: करुणकर रायकर