.Ssh फ़ोल्डर में निजी कुंजी पर अनुमतियाँ?


380

मैंने अपने .sshफ़ोल्डर में अपनी अनुमतियां बदल दीं और अब जब मैं एक सॉफ्टवेयर का उपयोग करता हूं जो मेरी निजी कुंजी का उपयोग करता है, तो मुझे हर बार अपना पासवर्ड टाइप करना होगा। id_rsaहर बार जब मैं किसी ऐप का उपयोग करता हूं, तो उसे पासवर्ड टाइप न करने के लिए मेरी फाइल पर मेरी अनुमति क्या होनी चाहिए ?

वर्तमान में मेरी अनुमतियाँ इस पर सेट हैं:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts

जवाबों:


638

आमतौर पर आप चाहते हैं कि अनुमति हो:

  • .ssh निर्देशिका: 700 (drwx------)
  • सार्वजनिक कुंजी ( .pubफ़ाइल):644 (-rw-r--r--)
  • निजी कुंजी ( id_rsa):600 (-rw-------)
  • अंत में आपके होम डायरेक्टरी को समूह या अन्य (अधिक से अधिक 755 (drwxr-xr-x)) द्वारा लेखन योग्य नहीं होना चाहिए ।

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


13
मैंने कहीं और पाया कि अगर अधिकृत_की फ़ाइल का उपयोग किया जाता है, तो इसे 640 पर chmod'd होना चाहिए, यानी -rw-r -----।
ऐनीएगाइल

5
मुझे यह जानकारी मैन पेजों में कहाँ मिल सकती है?
15

131
मैं अब लगभग ३० बार इस पोस्ट पर आया हूँ। मुझे विश्वास है कि मैं इसे याद नहीं कर सकता।
JREAM

7
केवल महत्वपूर्ण बातें यह हैं कि .ssh में कुछ भी किसी और के लिए उपलब्ध नहीं है और कोई भी गुप्त कुंजी किसी और के लिए पठनीय नहीं है।
मार्कस कुह्न

5
@Cerin किसी निर्देशिका पर अनुमति निष्पादित करता है, उस निर्देशिका की तत्काल चाइल्ड फ़ाइलों / डायरियों को सूचीबद्ध करने की क्षमता प्रदान करता है, फ़ोल्डर के अंदर की फाइलें उनके मूल फ़ोल्डर के निष्पादन बिट को "इनहेरिट" नहीं करती हैं।
थॉमस

86

मैं हमेशा के लिए इससे जूझ रहा था और आखिरकार पता लगा लिया कि क्या चाहिए। $USERआप सर्वर पर लॉग इन करना चाहते हैं SSH उपयोगकर्ता नाम के साथ हर जगह बदलें । यदि आप लॉगिन करने की कोशिश कर रहे हैं, तो आपको rootइसका उपयोग करने की आवश्यकता होगी /root/.sshआदि, इसके बजाय /home/root/.sshयह गैर-रूट उपयोगकर्ताओं के लिए कैसा है।

  • सर्वर पर होम डाइरेक्टरी दूसरों के द्वारा लिखने योग्य नहीं होनी चाहिए: chmod go-w /home/$USER
  • सर्वर पर SSH फ़ोल्डर को 700 अनुमतियों की आवश्यकता है: chmod 700 /home/$USER/.ssh
  • अधिकृत_की फ़ाइल को 644 अनुमतियों की आवश्यकता है: chmod 644 /home/$USER/.ssh/authorized_keys
  • सुनिश्चित करें कि userफ़ाइलों / फ़ोल्डरों का मालिक है और नहीं root: chown user:user authorized_keysऔरchown user:user /home/$USER/.ssh
  • सर्वर पर ssh-keygenउपयोगकर्ता की authorized_keysफ़ाइल में उत्पन्न सार्वजनिक कुंजी (से ) डालें
  • सुनिश्चित करें कि उपयोगकर्ता की होम डाइरेक्टरी इस बात के लिए सेट है कि आप उससे क्या अपेक्षा करते हैं और इसमें वह सही .sshफ़ोल्डर है जिसे आप संशोधित कर रहे हैं। यदि नहीं, usermod -d /home/$USER $USERतो समस्या को ठीक करने के लिए उपयोग करें
  • अंत में, पुनः आरंभ करें ssh: service ssh restart
  • फिर सुनिश्चित करें कि क्लाइंट के पास स्थानीय उपयोगकर्ता के .sshफ़ोल्डर में सार्वजनिक कुंजी और निजी कुंजी फ़ाइलें हैं और लॉगिन करें:ssh user@host.com

आपके पहले पैराग्राफ के बारे में, मैं सार्वजनिक / निजी कुंजी के साथ अपने स्थानीय लाइन बॉक्स (जैसे abc) पर एक उपयोगकर्ता के साथ दूरस्थ सर्वर (जैसे def@123.456.789) पर उपयोगकर्ता से अलग करने में सक्षम हूं । मुझे सिर्फ यह सुनिश्चित करना था कि स्थानीय उपयोगकर्ता के पास स्थानीय .ssh फ़ाइलों का स्वामित्व हो (जैसे abc:abc, नहीं root:abc) `
माइकल

1
Newbies, एलेक्स के लिए सभी चरणों और आदेशों को रखने के लिए धन्यवाद। तुम्हारा सबसे उपयोगी जवाब यहाँ से एक है।
नव

6
+1। "अधिकृत_की फ़ाइल को 644 अनुमतियों की आवश्यकता है" <= जो महत्वपूर्ण था!
Le Quoc Viet

यदि आप .ssh निर्देशिका 700 मोड दे रहे हैं , तो समूह और अन्य लोगों को r-- देने का कोई मतलब नहीं है, क्योंकि केवल आप ".shsh" से गुजर सकते हैं (इन फ़ाइलों के लिए कोई हार्ड लिंक मौजूद नहीं है)। स्वीकृत उत्तर के लिए भी यही है। डिफ़ॉल्ट 755 पर्याप्त है।
user3125367

पीएम फाइलों के लिए 400 मेरे अनुभव में पर्याप्त हैं।
एटी

37

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

chmod g-w,o-w ~


8
FYI करें, यह आदेश मानता है कि आप उपयोगकर्ता के रूप में लॉग इन हैं और रूट नहीं है
एलेक्स डब्ल्यू

6

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

आप एक ssh एजेंट को चलाने पर विचार कर सकते हैं, जो डिक्रिप्ट की गई चाबियों को कैश कर सकता है और उन्हें उन अनुप्रयोगों को आपूर्ति करेगा जो उनकी आवश्यकता है।


Ssh एजेंट के बारे में अतिरिक्त जानकारी के लिए धन्यवाद। ऐसा लगता है कि कोई तेंदुआ बना है, इसलिए मुझे लगता है कि मैं ऐसा करूंगा। इसके साथ थोड़ी परेशानी हो रही है लेकिन मैं एक और सवाल पूछूंगा।

5
अनुमति को कम न समझें। वे निश्चित रूप से अभी भी खेल में आते हैं।
एलेक्स डब्ल्यू

@AlexW वे ssh के अन्य पहलुओं के साथ खेलने में आते हैं, लेकिन किसी ने सवाल के बारे में नहीं पूछा।
cdhowie

यदि आपके पास निजी कुंजियों पर कोई पासवर्ड नहीं है (स्वचालित रिमोट जिसे स्क्रिप्ट कहा जाता है), तो यह आपकी मदद नहीं करेगा। अनुमतियाँ यहाँ आवश्यक हैं।
nerdoc

"मुझे हर बार अपना पासवर्ड टाइप करना होगा। मेरी id_rsa फ़ाइल पर मेरी अनुमतियाँ क्या होनी चाहिए, जब भी मैं किसी ऐसे ऐप का उपयोग करता हूं जिसे मैं एक ऐप का उपयोग करता हूं?"
क्रेग हिक्स

4

फेलिप सही है - आपकी .ssh निर्देशिका वाली निर्देशिका को समूह या अन्य द्वारा लेखन योग्य नहीं होना चाहिए। इस प्रकार chmod go-w ~अगली तार्किक बात यह है कि यदि आप अभी भी पासवर्ड के लिए संकेत करते हैं, जब ssh'ing को चलाने के बाद संकेत दिया जाता है ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys, तो मान लें कि आप ssh-keygen कमांड में पासफ़्रेज़ असाइन नहीं करते हैं, और आपकी .shsh निर्देशिका आपके होम डायरेक्टरी में है।

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