ssh "अनुमतियाँ बहुत खुली हैं" त्रुटि


2053

मुझे अपने मैक के साथ एक समस्या थी जहाँ मैं डिस्क पर किसी भी तरह की फ़ाइल को सहेज नहीं सकता था। मुझे OSX शेर को रिबूट करना था और फ़ाइलों और एक्सेल पर अनुमतियों को रीसेट करना था।

लेकिन अब जब मैं एक भंडार करना चाहता हूं तो मुझे ssh से निम्नलिखित त्रुटि मिलती है:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

मुझे id_rsa फ़ाइल को किस स्तर की अनुमति देनी चाहिए?


19
Quesiton पूछने के लिए धन्यवाद। एक बेहतर अनुभव उसी के लिए होगा जिसने यह त्रुटि संदेश कुछ मान्य कॉन्फ़िगरेशन (जैसे 600 या 400 नीचे दिए गए सुझाव के रूप में) का सुझाव देने के लिए लिखा था। प्रोग्रामर पर्याप्त रूप से पूर्ण त्रुटि संदेश नहीं लिख रहे हैं जो मददगार हैं जो हम सभी को वर्षों से प्रताड़ित कर रहे हैं!
जॉर्ज प्लिगोपोपोलोस

FWIW, यह मैन पेज से सर्वर StrictModesपर सक्षम होने से संबंधित है : "StrictModes निर्दिष्ट करता है कि लॉगिन स्वीकार करने से पहले sshd (8) फ़ाइल मोड और उपयोगकर्ता की फ़ाइलों और होम निर्देशिका के स्वामित्व की जांच करनी चाहिए या नहीं।" - आप इसे हालांकि सुझाव नहीं दिया अक्षम कर सकते हैं। sshd
मस्सेब

जवाबों:


3467

कुंजी केवल आपके द्वारा पठनीय होनी चाहिए:

chmod 400 ~/.ssh/id_rsa

यदि कीज़ को आपके द्वारा पढ़ने योग्य होना चाहिए:

chmod 600 ~/.ssh/id_rsa

600 के रूप में अच्छी तरह से ठीक प्रतीत होता है (वास्तव में ज्यादातर मामलों में बेहतर है, क्योंकि आपको इसे संपादित करने के लिए बाद में फ़ाइल अनुमति बदलने की आवश्यकता नहीं है)।

मैनपेज से प्रासंगिक हिस्सा ( man ssh)

 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.

299
400 बहुत कम है क्योंकि यह आपके स्वयं के उपयोगकर्ता द्वारा इसे गैर-लेखन योग्य बनाता है। 600 वास्तव में अनुशंसित है क्योंकि यह मालिक को केवल पढ़ने के लिए नहीं लिखने की अनुमति देता है।
jfreak53

8
मुझे पता चला कि आज ऐसे समय हैं जब 400 प्रासंगिक हैं। मान लीजिए कि आपके पास एक अधिकृत_की फाइल है जिसमें नो-पीटी एट अल फीचर सेट है। यदि फ़ाइल लेखन योग्य है, तो उपयोगकर्ता वास्तव में अधिकृत_की फ़ाइल को अधिलेखित कर सकता है और इंटरैक्टिव शेल एक्सेस प्राप्त कर सकता है! कुछ को ध्यान में रखना, हालांकि निश्चित रूप से अधिकांश लोगों के लिए सामान्य मामला नहीं है।
क्विकशिफ्टिन

17
AWS वास्तव में उनकी वेबसाइट पर अनुमति 400 की सिफारिश करता है। यही मैंने ओएस एक्स पर किया और यह काम किया।
बजे जॉर्ज माइलोनस

5
यह निश्चित रूप से काम करता है और अधिक सुरक्षित है। केवल नकारात्मक पक्ष यह है कि आपको इसे संपादित करने के लिए 600 में बदलना होगा। Id_rsa, और id_rsa.pub के लिए मुझे संदेह है कि यह मायने रखता है क्योंकि आप शायद ही कभी उन फ़ाइलों को संपादित करेंगे, लेकिन अधिकृत_की के लिए, यह कष्टप्रद हो सकता है। ट्रेडऑफ़ को समझने और प्रत्येक सिस्टम को उचित रूप से कॉन्फ़िगर करने के लिए सबसे अच्छा है।
क्विकशिफ्टिन

3
मुझे लगता है कि यह इस बात पर भी निर्भर करता है कि आप उन्हें कितनी बार संपादित कर रहे हैं। कई लोग इसे सेट करते हैं और इसे भूल जाते हैं, इस प्रकार 400 अन्य और आपके स्वयं के कार्यों से अधिक सुरक्षित होंगे; 600 को संशोधित जब आवश्यक है। यदि यह आपके वर्कफ़्लो और आपके ssh-savy का हिस्सा है, तो हो सकता है कि यह बदलती अनुमतियों को बनाए रखने के लिए अधिक बाधा हो।
Vol7ron

99

Windows 8.1 में Cygwin का उपयोग करना, चलाने की आज्ञा है:

chgrp उपयोगकर्ता ~ / .ssh / id_rsa

फिर यहां पोस्ट किए गए समाधान को लागू किया जा सकता है, 400 या 600 ठीक है।

chmod 600 ~ / .ssh / id_rsa

Ref: http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8


8
स्थान पर निर्भर। मुझे "chgrp Użytkownicy ~ / .ssh / id_rsa" चलाना था क्योंकि "Users" ने ऐसा कोई भी समूह नहीं बनाया था।
मार्कोस

मुझे भी ऐसा करना था। मेरी साइबर निर्देशिका डिफ़ॉल्ट स्थान ( C:\cygwin64) में थी, इसलिए संभवत: इसे अनुमति मिली। अजीब बात है कि मेरे स्वामित्व वाले अन्य लैपटॉप पर ऐसा नहीं हुआ।
Zach Thacker

3
@Marcos मैंने एक जवाब जोड़ा है जो लोकेल की परवाह किए बिना काम करता है: stackoverflow.com/a/28647713/67013
15

4
विंडोज 10. केवल दूसरी कमांड का उपयोग किया। एक जादू की तरह काम किया।
स्टालअलेक्स

ध्यान दें कि वैकल्पिक भाषाओं में इंस्टॉलेशन के लिए 'उपयोगकर्ता' समूह में वैकल्पिक पहचानकर्ता होते हैं।
जॉन Rumpel

43

विंडोज 8.1 पर काम करने वाला स्थानीय स्वतंत्र समाधान है:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545 एक विशेष आईडी है जो हमेशा 'उपयोगकर्ता' समूह को संदर्भित करता है, भले ही आप स्थानीय उपयोगकर्ताओं के लिए एक अलग शब्द का उपयोग करें।



24

AFAIK मान हैं:

छिपी निर्देशिका "। Ssh" के लिए 700 जहाँ कुंजी फ़ाइल स्थित है

कीफाइल "id_rsa" के लिए 600


19

मुझे अपनी विंडोज़ 10 में त्रुटि मिली है इसलिए मैंने निम्नलिखित के रूप में अनुमति निर्धारित की है और यह काम करता है।

विंडोज़ 10 के id_rsa के लिए अनुमति

विवरण में, अन्य उपयोगकर्ताओं / समूहों को हटा दें जब तक कि इसमें केवल 'सिस्टम' और 'व्यवस्थापक' न हों। इसके बाद अपनी विंडोज़ लॉगिन को रीड अनुमति के साथ इसमें जोड़ें।

नोट फ़ोल्डर के id_rsaनीचे फ़ाइल है c:\users\<username>


विन -10 पर भी मुझे यही समस्या है। आपके स्पष्टीकरण के आधार पर, यह स्पष्ट नहीं है कि आपने वास्तव में क्या अनुमति दी और इनकार किया - मेरे पास "उपयोगकर्ता" और 'प्रमाणित उपयोगकर्ता' हैं और विकल्प + सिस्टम और प्रशासक के रूप में 'विशिष्ट उपयोगकर्ता' नहीं हैं। इसके अलावा मैं साइबरविन का पता नहीं लगा सका - स्थापित करने या उपयोग करने के लिए?)
सैम-टी

2
Win10 के लिए उपयोगकर्ता के घर में अपनी कुंजी को स्थानांतरित करने की आवश्यकता है - यह पूरी तरह से काम करता है। मैं कुंजी को पूर्ण पथ देने की कोशिश कर रहा था और अनुमतियों के साथ खिलवाड़ कर रहा था - कुछ भी काम नहीं किया।
सैम-टी

@ सैम-टी यदि आप सूची में अपना नाम नहीं देख सकते हैं, तो आप प्रेस द्वारा जोड़ सकते हैं Edit...फिर प्रेस करें Add...फिर अपना नाम टेक्स्ट बॉक्स में टाइप करें "Enter the object names to select"फिर Check Namesबटन दबाएं (और प्रेस करें OKऔर दूसरा OK) फिर आपका नाम Securityटैब में सूचीबद्ध होना चाहिए
Supawat Pusavanno

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

15

कुंजी पर "0x00" अनुमतियों की आवश्यकता के लिए एक अपवाद है। यदि कुंजी रूट और समूह के स्वामित्व वाली है, जिसमें उपयोगकर्ताओं के साथ समूह है, तो यह "0440" हो सकता है और उस समूह का कोई भी उपयोगकर्ता कुंजी का उपयोग कर सकता है।

मेरा मानना ​​है कि यह सेट "0xx0" में किसी भी अनुमति के साथ काम करेगा, लेकिन मैंने हर संस्करण के साथ हर संयोजन का परीक्षण नहीं किया है। मैंने CentOS 6 पर 5.3p1-84 के साथ 0660 की कोशिश की है, और समूह उपयोगकर्ता का प्राथमिक समूह नहीं बल्कि एक द्वितीयक समूह है, और यह ठीक काम करता है।

यह आमतौर पर किसी की व्यक्तिगत कुंजी के लिए नहीं किया जाएगा, लेकिन स्वचालन के लिए उपयोग की जाने वाली कुंजी के लिए, ऐसी स्थिति में जब आप नहीं चाहते कि एप्लिकेशन कुंजी के साथ गड़बड़ करने में सक्षम हो।

इसी तरह के नियम .ssh निर्देशिका प्रतिबंधों पर लागू होते हैं।



11

विंडोज 10 पर, मेरे लिए cygwin का chmod और chgrp पर्याप्त नहीं थे। मुझे फ़ाइल पर राइट क्लिक करना था -> गुण -> सुरक्षा (टैब) और मेरे सक्रिय उपयोगकर्ता को छोड़कर सभी उपयोगकर्ताओं और समूहों को हटा दें।


यह केवल समाधान है जो काम कर रहा है :) धन्यवाद आपने मेरा समय बचाया
अतुल

मैंने पाया कि ऐसा करने के बाद, मैं सामान्य विंडोज कमांड प्रॉम्प्ट से भी ssh कर सकता था। Cygwin का उपयोग करने की कोई आवश्यकता नहीं है। महान!
अतुल

8

यह मेरे लिए काम किया है (मैक पर)

sudo chmod 600 path_to_your_key.pem 

फिर :

ssh -i path_to_your_key user@server_ip

आशा है कि यह मदद करेगा


5

मेरे लिए क्या काम किया

Chgrp उपयोगकर्ता फोल्डर

chmod 600 फोल्डर


chgrp: grupo inválido: «उपयोगकर्ता»

मैंने कोशिश की, लेकिन 'अमान्य समूह `: उपयोगकर्ता' को बाहर फेंक रहा हूँ, क्यों? विंडोज 10, पावरशेल का उपयोग करना
जेसन गोल


4

मुझे दूसरे मैक से माइग्रेशन के बाद एक ही मुद्दा मिला। और यह मेरी कुंजी द्वारा github को जोड़ने के लिए अवरुद्ध है।

मैं नीचे के रूप में अनुमति रीसेट करता हूं और यह अब अच्छी तरह से काम करता है।

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

4

उबंटू EC2 में विंडोज 10 ssh AWS पर "अनुमति बहुत खुली है" त्रुटि है

मैं इस मुद्दे को उबंटू EC2 उदाहरण में एडब्ल्यूएस से .Pem फ़ाइल का उपयोग करने की कोशिश कर रहा था।

विंडोज़ में यह तब काम करता है जब मैंने इस कुंजी को .ssh फ़ोल्डर के तहत बनाया था

C:\Users\USERNAME\.ssh\private_key

विंडोज 10 में अनुमति सेटिंग्स बदलने के लिए:

फ़ाइल सेटिंग्स> सुरक्षा> उन्नत

वंशानुक्रम अक्षम करें

स्पष्ट अनुमतियों में इनहेरिट की गई अनुमतियाँ परिवर्तित करें

व्यवस्थापकों को छोड़कर सभी अनुमति प्रविष्टियाँ निकालें

फिर सुरक्षित रूप से जुड़ सकता है।


4

मेरे लिए (विंडोज के लिए उबंटू सबसिस्टम का उपयोग करके) त्रुटि संदेश बदल गया:

 Permissions 0555 for 'key.pem' are too open

chmod 400 का उपयोग करने के बाद। यह पता चलता है कि मूल उपयोगकर्ता के रूप में रूट का उपयोग करना इसका कारण था।

Cmd का उपयोग करके इसे बदलें:

 ubuntu config --default-user your_username

3

यहां दिलचस्प संदेश यदि आपकी निजी कुंजी बहुत खुली है, तो ऑपरेटिंग सिस्टम रिमोट कनेक्शन से इनकार करने के लिए पर्याप्त स्मार्ट हैं। यह उस जोखिम को समझता है जहां id_rsa के लिए अनुमतियां व्यापक रूप से खुली हैं (पढ़ें, किसी के द्वारा संपादन योग्य है)।

{कोई पहले आपका ताला बदल सकता है और फिर उसे चाबी के साथ खोल सकता है जो उसके पास पहले से है}

cd ~/.ssh
chmod 400 id_rsa

कई सर्वर (गैर-उत्पादन) पर काम करते समय, हम में से अधिकांश को दूरस्थ सर्वर को ssh के साथ जोड़ने की आवश्यकता महसूस होती है। एक अच्छा विचार सर्वर के बीच ssh ट्रस्ट बनाने के लिए एप्लिकेशन स्तर कोड का एक टुकड़ा (jsch का उपयोग करके जावा हो सकता है) है। इस तरह कनेक्शन पासवर्ड-कम होगा। Incase, perl स्थापित है - एक शुद्ध ssh मॉड्यूल का भी उपयोग कर सकता है।


1

मैं इस त्रुटि के साथ आया हूं जब मैं अन्सिबल के साथ खेल रहा था। मैंने निजी कुंजी की अनुमतियां बदल दी हैं इस समस्या को हल करने के लिए 600 में है। और यह काम किया!

chmod 600 .vagrant/machines/default/virtualbox/private_key

1

मैंने अपनी निजी कुंजी के लिए 600 स्तर की अनुमति की कोशिश की और इसने मेरे लिए काम किया। chmod 600 PrivateKey [dev] $ ssh -i privateKey उपयोगकर्ता @ ip ने काम किया

chmod 755 PrivateKey [dev] $ ssh -i privateKey उपयोगकर्ता @ ip यह नीचे दिए गए अंक दे रहा था: 'PrivateKey' के लिए अनुमतियाँ 0755 बहुत खुली हैं। यह आवश्यक है कि आपकी निजी कुंजी फाइलें दूसरों द्वारा सुलभ न हों। इस निजी कुंजी को अनदेखा किया जाएगा। लोड कुंजी "PrivateKey": खराब अनुमतियाँ


0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    पहले सार्वजनिक कुंजी का स्थान ढूंढें क्योंकि जब आप इस सार्वजनिक कुंजी का उपयोग करके ftp में प्रवेश करने का प्रयास करते हैं। पहले हमें एक कुंजी बनाने की आवश्यकता है और हम उस कुंजी अनुमतियों को 600 पर सेट करते हैं।
            सुनिश्चित करें कि आप सही स्थान पर हैं।
            चरण 1:
            सही स्थान पर जाएं
            चरण 2:
            आपके सही स्थान पर होने के बाद
 आदेश: 
     chmod 600 id_rsa

        This has solved my issue.

-1

मैं EC2 पर VPC का उपयोग कर रहा हूं और उसी त्रुटि संदेश प्राप्त कर रहा था। मैंने देखा कि मैं सार्वजनिक DNS का उपयोग कर रहा था। मैंने उसे निजी डीएनएस और वोला में बदल दिया !! इसने काम कर दिया...


अमेज़ॅन ने chmod 400 और सार्वजनिक DNS का उपयोग करने की सिफारिश की। यहाँ दस्तावेज़ देखें: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
ddri

-2

Win10 के लिए linuxlike os के लिए उपयोगकर्ता की घरेलू dir में आपकी कुंजी को स्थानांतरित करने की आवश्यकता है आपको 700 की तरह या 600 आदि की आवश्यकता है।


Win10 के लिए उपयोगकर्ता के घर में अपनी कुंजी को स्थानांतरित करने की आवश्यकता है - यह पूरी तरह से काम करता है। मैं कुंजी को पूर्ण पथ देने की कोशिश कर रहा था और अनुमतियों के साथ खिलवाड़ कर रहा था - काम नहीं किया।
सैम-टी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.