क्या खाली पासफ़्रेज़ के साथ SSH कुंजी का उपयोग करना ठीक है?


34

जब मैंने पहली बार ssh कीज़ बनाना सीखा, तो मैंने जो ट्यूटोरियल पढ़ा, उसमें कहा गया था कि एक अच्छा पासफ़्रेज़ चुना जाना चाहिए। लेकिन हाल ही में, जब एक डेमॉन प्रक्रिया की स्थापना की गई, जिसे किसी अन्य मशीन को ssh करने की आवश्यकता है, तो मुझे पता चला कि एकमात्र तरीका (ऐसा लगता है) जिसमें एक कुंजी है जिसे मुझे हर बूट पर स्थित करने की आवश्यकता नहीं है, एक खाली के साथ एक कुंजी बनाना है कूटशब्द। तो मेरा प्रश्न यह है कि बिना पासफ़्रेज़ के कुंजी का उपयोग करने में क्या चिंताएँ हैं?

जवाबों:


38

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

दूसरी ओर, यदि आपकी कुंजी खराब सुरक्षा वाली मशीन पर है (शायद इसके पास कई अविश्वसनीय उपयोगकर्ता हैं, तो आसानी से शारीरिक रूप से सुलभ है, या इसके पैचिंग शासन के साथ अच्छी तरह से अद्यतित नहीं है), तो आप शायद डॉन ' t वहां पर पासफ़्रेज़-कम कीज़ रखना चाहते हैं।

अंत में, यह आपके सेटअप में विश्वास करने के लिए नीचे है और इसे करने के जोखिम / लागतों का वजन कर रहा है - यदि आप बहुत आश्वस्त हो सकते हैं कि किसी हमलावर के लिए कुंजी तक पहुंच प्राप्त करना आसान नहीं है, तो संसाधन की तुलना में कुंजी आपको पहुंच प्रदान करती है। , तो तुम ठीक हो। यदि आपके पास वह आत्मविश्वास नहीं है, तो आपको शायद कारणों को ठीक करना चाहिए क्यों :)


केवल विश्वसनीय लोगों के पास कुंजी के साथ मशीन तक पहुंच होगी, इसलिए मुझे लगता है कि मेरे सवाल का जवाब है। धन्यवाद।
मोज़िलालिव्स

11

एक और उपाय, सुरक्षा को बढ़ाते हुए इसे आप पर आसान बना देता है, इसलिए आपको हर समय अपना पासवर्ड टाइप करने की आवश्यकता नहीं है:

यदि आप अपनी निजी कुंजी को एन्क्रिप्ट करना चाहते हैं, तो आप ssh-agentअपने कार्य केंद्र पर अनएन्क्रिप्टेड कुंजी को 'कैश' करने के लिए उपयोग कर सकते हैं । जब आप अपनी डिक्रिप्ट की गई कुंजी को संग्रहीत करना चाहते हैं, तो आप चलाते हैं ssh-add ~/.ssh/id_rsaया जो भी आपकी निजी कुंजी का नाम है। आपको पासवर्ड के लिए संकेत दिया जाएगा, और डिक्रिप्ट की कुंजी आपके ssh कनेक्शन के लिए तब तक उपलब्ध होगी जब तक आप लॉग आउट, मार ssh-agentया बंद नहीं करते।

आप के killसाथ संग्रहीत कुंजी ssh-agent -kकर सकते हैं और आप ssh-agent -t [seconds]उदाहरण के लिए के साथ स्मृति में होना कुंजी के लिए एक जीवन भर असाइन कर सकते हैं ; यदि आप अपनी कुंजी को हमेशा के लिए डिक्रिप्टेड नहीं रखना चाहते हैं, लेकिन आप अपने मेजबानों के चारों ओर बहुत सारे ssh-ing करना चाहते हैं, तो आप मध्यांतर को 5-10 मिनट तक सेट कर सकते हैं। इसलिए आपको अपनी कुंजी का पासवर्ड लगातार दर्ज करने की आवश्यकता नहीं है।

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

यदि आप मेरे जैसे हैं, और आप अपनी निजी कुंजी को थंब-ड्राइव पर रखते हैं, तो आप निश्चित रूप से इसे एन्क्रिप्ट करना चाहते हैं, भले ही यह सिर्फ एक निजी कुंजी हो (एक अलग जिससे मैं अपने वर्कस्टेशन पर उपयोग करता हूं, इसलिए यदि मैं अपनी कुंजी खो देता हूं, मैं आसानी से अपने सर्वर की ~/.ssh/authorized_keysसूची से थंब-ड्राइव की सार्वजनिक कुंजी को हटा सकता हूं , जो आपकी सार्वजनिक कुंजी में USEFUL टिप्पणियों को जोड़ने के लिए एक / उत्कृष्ट / कारण भी लाता है)

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

ओह, मैं उल्लेख करना भूल गया; ssh-agentजब मैं X प्रारंभ करता हूं, तो मैं लॉन्च करता हूं, अन्यथा जिन डी-क्रिप्टेड कुंजी के साथ मैं स्टोर करता हूं , उन्हें ssh-addअलग-अलग xtermसत्रों के माध्यम से बनाए नहीं रखा जाता है , और मुझे हर बार जब मैं अपनी फ़ाइल में xtermलॉन्च किए गए i को बंद करता हूं , तो मुझे फिर से पासवर्ड दर्ज करना होगा: मेरे पास है।ssh-add~/.xinitrc

if [ -x /usr/bin/ssh-agent ]; then
   eval $(/usr/bin/ssh-agent)
fi

मेरे पास ssh-agentरैप करने के लिए कॉल है evalक्योंकि ssh- एजेंट कुछ पर्यावरण चर देता है जिसे सेट करने की आवश्यकता होती है जब वह चलता है, और से चलाता है, ~/.xinitrcपर्यावरण चर पूरे X सत्र में स्थिर होते हैं।


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

यदि आप इसका उपयोग करते हैं ssh-agentऔर उपयोग करते हैं, तो ssh -A -i privkey user@hostयह ssh एजेंट को अग्रेषित करने की अनुमति देगा, जो आपको पहले सर्वर पर अपनी निजी कुंजी रखने के बिना, प्रारंभिक सर्वर से सर्वर तक पहुंचने की अनुमति देगा। ssh chaining की अनुशंसा नहीं की गई है, यहां तक ​​कि ssh की फॉरवर्डिंग सक्षम किए बिना भी, और ssh -Aइसकी अपनी सुरक्षा चिंताएं हैं। कोई कारण नहीं है कि सर्वर पर कुंजी को एन्क्रिप्ट नहीं किया जा सकता है, जबकि आपके वर्कस्टेशन पर कुंजी पासफ़्रेज़-कम है।
cpbills

3

वेब सर्वरों के लिए एसएसएल निजी कुंजी के बारे में पूछे गए प्रश्न पर आप एक नज़र डाल सकते हैं । मूल रूप से, तीन विकल्प हैं:

  1. फ़ाइल सिस्टम परमिट के साथ कुंजी को सुरक्षित रखें।
  2. पासवर्ड प्रोटेक्टेड की का प्रयोग करें और हर रीस्टार्ट में की को मैन्युअल रूप से दर्ज करें।
  3. पासवर्ड प्रोटेक्टेड की का प्रयोग करें और फाइल सिस्टम में कुंजी को रीस्टार्ट करने के लिए स्टोर करें।

उनमें से प्रत्येक त्रुटिपूर्ण है, इसलिए यह सब इस बात पर निर्भर करता है कि आपको सबसे ज्यादा क्या डर है।


1

स्वचालित पहुंच के लिए, जैसा कि आप कहते हैं कि पासफ़्रेज़-कम कुंजियों की आवश्यकता है, मैं हमेशा कमांड_ को सीमित करने के लिए अधिकृत_की के अतिरिक्त विकल्पों का उपयोग करता हूं (sshd (8) देखें)।

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

फिर मैं इसे आईपी पते पर भी बंद कर देता हूं जो उस कुंजी के साथ जुड़ सकता है (100% फुलप्रूफ नहीं, लेकिन कमांड प्रतिबंध के साथ ठीक है।)


उत्कृष्ट बिंदु - यदि आपको असुरक्षित कुंजी का उपयोग करना आवश्यक लगता है, तो सबसे अच्छी बात यह है कि आप इसे बंद कर सकते हैं!
मिकी

1

जब तक आपके पास कुंजी के अलावा अन्य कोई भी नहीं है, तब तक आपको पासफ़्रेज़ की आवश्यकता नहीं है। वास्तव में, आप स्वचालित सॉफ़्टवेयर द्वारा उपयोग की जाने वाली कुंजियों पर पासफ़्रेज़ का उपयोग नहीं कर सकते।


0

यदि आप किसी भी प्रकार की स्वचालित प्रक्रिया को करने के लिए ssh का उपयोग करना चाहते हैं - मैं विशेष रूप से Nagios जाँच के बारे में सोच रहा हूँ - तो आप शायद पासफ़्रेज़ का उपयोग नहीं करना चाहेंगे।

इस स्थिति में आप शायद LAN के बाहर इसका उपयोग नहीं कर रहे हैं, और आपके पास प्रक्रिया को करने वाले सर्वर पर सुरक्षित रूप से संग्रहीत कुंजी होगी।

SSH पर चर्चा करने वाले अधिकांश ट्यूटोरियल एक बाहरी नेटवर्क से लॉग इन करने वाले व्यक्ति से, संभवतः एक असुरक्षित कंप्यूटर से, जिस मामले में सलाह ध्वनि है, की आशंका होगी।

मूल रूप से, जब तक आप नहीं जानते कि कोई अच्छा कारण नहीं है, तो पासफ़्रेज़ बनाएं। हर बार अपने पासवर्ड में टाइप करने के लिए आलसी होना आपके लिए एक अच्छा कारण हो सकता है :-)


यहां तक ​​कि अगर वे एक बाहरी नेटवर्क से लॉग इन करते हैं, तो इससे कैसे फर्क पड़ता है? केवल क्लाइंट कंप्यूटर की सुरक्षा मायने रखती है, पासफ़्रेज़ को क्लाइंट की तरफ से हैंडल किया जाता है, है ना?
nssg

जब तक आपके ग्राहक का लैपटॉप चोरी हो जाता है और आपके परिधि को भंग करने के लिए उपयोग किया जाता है, इससे पहले कि किसी के पास एसएसएच कुंजी को फिर से शुरू करने का मौका हो। कुंजी पर एक पासफ़्रेज़ आपको कुंजियों को निरस्त करने के लिए अधिक समय देगा।
dunxd

तो, जैसे मैंने कहा, "केवल क्लाइंट कंप्यूटर की सुरक्षा मायने रखती है"।
njsg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.