Cygwin के ssh.exe का उपयोग करके "खराब स्वामी या अनुमतियां" त्रुटि


29

मैं Cygwin में (विंडोज 7 में) ssh.exe का उपयोग करने की कोशिश कर रहा हूं। मैंने एक configफाइल कॉपी की c:\cygwin\home\[USERNAME]\.ssh। जब मैं दौड़ता हूं ssh(उदाहरण के लिए ssh -vT git@bitbucket.org) , मुझे निम्न त्रुटि मिलती है:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 फरवरी 2011 खराब स्वामी या अनुमतियाँ /home/ IsUSERNAMEiding/.ssh/config पर

मुझे sshअपनी कॉन्फ़िगरेशन फ़ाइल को कैसे पढ़ना है?

जवाबों:


46

ऊपर के रूप में करने के बाद, मुझे हमेशा यह मिला:

total 22
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 .
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 ..
-rw-rw----  1 jl None  129 Jul  1 14:30 config

और त्रुटि .ssh/config। तो मैं फ़ोल्डर chownपर चला रहा हूँ .ssh, और chmodफिर से इस तरह:

> chown -R [USERNAME]:users .ssh/

और फिर:

> chmod -R 600 .ssh/

और अंत में मुझे यह काम मिल गया:

total 29
drwxrwxr-x+ 1 jl None     0 Sep  9 18:44 .
drwxrwxrwt+ 1 jl None     0 Sep  9 18:44 ..
drw-------+ 1 jl Users    0 Sep  9 18:44 .ssh

संपादित करें (Windows10 पर बैश के लिए)

जब आपको त्रुटि मिलती है ।।

होस्ट को ज्ञात होस्ट (/PATH_TO_HOME/USERNAME/.ssh/ogn_hosts) की सूची में जोड़ने में विफल रहा।

सुनिश्चित करें कि ज्ञात_होल्स लिखने योग्य है

$ chmod 755 ज्ञात_होस्ट

नोट: मेरा मानना ​​है कि आपको केवल अपनी निजी कुंजी के लिए 600 सेट करने की आवश्यकता है

फिर, ssh करने का प्रयास करें।

आप कब प्राप्त करोगे..

ज्ञात होस्ट की सूची में स्थायी रूप से 'HOST_IP' (RSA) जोड़ा गया।

आप मोड 600 को बदल सकते हैं

$ chmod 600 ज्ञात_होस्ट

पुनश्च : मुझे लगता है कि यह विंडोज 8 पर एक बग है।


स्वीकृत उत्तर मेरे काम नहीं आया, लेकिन यह किया। धन्यवाद!
अचल दवे

इसके अलावा, यह काफी अजीब बग है। मेरे कंप्यूटर (W8.1) पर, विम में .ssh / config फाइल का संपादन हमेशा इस बग की ओर जाता है। यह बेहद कष्टप्रद है, क्योंकि मेरे ssh config में हर बदलाव के लिए इन कमांड को चलाने की आवश्यकता होती है।
अचल दवे

4
और केवल अजीबता को जोड़ने के लिए, यदि आप विंडोज के एक गैर अंग्रेजी संस्करण का उपयोग कर रहे हैं, तो इस आदेश को जारी करते समय "उपयोगकर्ताओं" के स्थानीय अनुवाद का उपयोग करना सुनिश्चित करें। उदाहरण के लिए डच में यह "chown -R: Gebruikers .ssh" हो जाता है
अलेक्जेंडर केलेट

1
मेरे लिए, यह काम किया: chown -R m0j0: उपयोगकर्ता .ssh && chmod -R go-rwx
.ssh

1
धन्यवाद यह मेरे लिए भी काम किया, जर्मन में आपको उपयोग करने की आवश्यकता हैchown -R [Username]:Benutzer .ssh/
con

20

यह उत्तर https://superuser.com/a/875934/82032 से कॉपी किया गया है । यह एकमात्र उत्तर है जिसने हाल ही में एक साइबर अपग्रेड के बाद मेरे लिए काम किया।

ACLs मत भूलना

मेरे लिए कुछ भी काम नहीं किया जब तक कि मैंने एसीएल की फाइल नहीं छीन ली और अनुमतियों को रीसेट कर दिया।

#remove ACLs
setfacl -b ~/.ssh/config

#reset permissions
chmod 0600 ~/.ssh/config

आप getfaclकिसी फ़ाइल पर वर्तमान ACL देखने के लिए उपयोग कर सकते हैं ।

getfacl ~/.ssh/config

इससे पहले कि मैं ACLs (टूटी) को हटाता:

# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---

काम करने के बाद)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---

यह वही है जो मुझे
साइबरविन

1
इसके लिए साइबरविन 1.7.34-6
क्लिंटन

इसी से मेरा काम बना है!
आशुतोष जिंदल

9

configCygwin के lsआदेश का उपयोग करके फ़ाइल की अनुमतियों की जाँच करें :

> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh

यह शायद कुछ इस तरह होगा:

total 5
drwxrwxrwt+ 1 Administrators None  0 Oct 20 17:02 .
drwxr-xr-x+ 1 [USERNAME]     None  0 Oct 19 08:15 ..
-rw-------  1 Administrators None 57 Oct 20 16:58 config

कॉन्फ़िगरेशन फ़ाइल को [USERNAME] से संबंधित होना चाहिए। इसे इस्तेमाल करे:

> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config

ls -laअब सही मालिक दिखाना चाहिए। यदि वह अभी भी काम नहीं करता है, तो मोड (अनुमतियां) रीसेट करने का प्रयास करें:

> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config

9

यूनिक्स और OSX के लिए

एकदम आसानी से:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

विंडोज के लिए

यदि फ़ाइल एक विंडोज़ (NTFS) प्रतीकात्मक लिंक है, तो ऊपर काम नहीं करेगा। आपको इसे एक नियमित फ़ाइल बनाने की आवश्यकता है। मुझे यकीन नहीं है कि क्यों

यदि आपके पास ओपनश या सागविन नहीं है, तो इसे आसानी से स्थापित करने के लिए चॉकलेट का उपयोग करें।

choco install cyg-get

साइगविन टर्मिनल खोलें जिसे चॉकलेट और रन के साथ स्थापित किया गया था (नोट जो ssh-keygenनई कुंजी बनाता है):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .

सत्यापित करें कि चाबियाँ हैं (या उन्हें उन कुंजियों से बदलें जिन्हें आप चाहते हैं), और फिर सिग्विन शेल में:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

या उस दुर्लभ मामले के लिए जिसे आप उपयोग कर रहे हैं (और से उत्पन्न की गई) चॉकलेट की SSH पैकेज:

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh

यह आमतौर पर मेरे लिए है, क्योंकि समूह आमतौर पर फाइलों पर गलत है।
एलन क्रुएगर

3

महत्वपूर्ण नोट यदि आपका विंडोज यूएस अंग्रेजी में नहीं है: "उपयोगकर्ता" समूह का नाम स्थानीय-निर्भर है। उदाहरण के लिए, यदि आपका विंडोज स्पैनिश में है, तो आपको फाइलों के स्वामित्व के साथ बदलना होगाchown $USER:Usuarios *


1

इनमें से कोई भी (chmod / chown / icacls / setacl / copyacls / explorer> security) ने मेरे cygwin64 / win7 / admin पर काम किया, अंत में यह cygwin64/ssh -F ~/.ssh/configअन्य समाधानों के साथ काम करता है , cyg32 में पुराने ssh का उपयोग करें या विंडोज़ के लिए gsh में ssh ।।


उपयोग -Fकरने से समस्या का समाधान हो जाएगा config, लेकिन निजी कुंजी के लिए अनुमतियाँ हल नहीं होंगी।
जरी तुर्किया

0

उन लोगों के लिए जो dir सरल समाधान के noaclसाथ पथ का उपयोग ~/.sshकरते हैं, मूल NTFS प्रतीकात्मक लिंक बनाना है:

cmd# mklink c:\home\.ssh c:\opt\cygwin\home\misc\.ssh
symbolic link created for c:\home\.ssh <<===>> c:\opt\cygwin\home\misc\.ssh

इसके noaclबाद अन्य अनुमतियाँ सेट करने का कोई तरीका नहीं है rwxr-xr-xया rw-r--r--। जैसा कि /पदानुक्रम बिना होना चाहिए noacl(या साथ होना चाहिए acl) आप यहां निर्देशिका बना सकते हैं और यह साइगविन के ऐप्स के लिए समस्याग्रस्त स्थानों को इंगित कर सकता है।


1
यह देखते हुए कि यह एक निर्देशिका है, सरल समाधान एक जंक्शन का उपयोग करना होगा, क्योंकि यह प्रतीकात्मक लिंक स्थापित करने के लिए आवश्यक विशेषाधिकार की आवश्यकता नहीं है। यह mklink /jतब या junctionSysinternals सूट से उपकरण होगा।
0xC0000022L

0

tldr: आपने विन्यासक को व्यवस्थापक के रूप में बनाया होगा

समाधान

यदि आप गलती से फ़ाइल को व्यवस्थापक के रूप में बना रहे हैं, और स्थानीय अनुमतियों के साथ फ़ाइल का उपयोग करने का प्रयास कर रहे हैं, तो ये समाधान ओवरकिल हो सकते हैं।

  • अपने ssh config की सामग्री की प्रतिलिपि बनाएँ
  • फ़ाइल हटाएँ
  • एक नया शेल खोलें (स्थानीय - गैर व्यवस्थापक)
  • उस पथ पर नेविगेट करें जहां आपका कॉन्‍फ़िगर संग्रहीत है ( आमतौर ~/.sshपर PowerShell या %userprofile%\.sshcmd में )
  • रन notepad .\config

सरल आदेश (पॉवरशेल):

$sshPath = '~/.ssh/config'
$content = cat $sshPath
# In case the line above fails, this check will prevent your current config to get deleted
if ($content) {
  rm $sshPath
  $content | Out-File -en ascii $sshPath
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.