ข้อผิดพลาด“ เจ้าของหรือสิทธิ์ที่ไม่ถูกต้อง” โดยใช้ Cyshwin ของ ssh.exe


29

ฉันพยายามใช้ ssh.exe ใน Cygwin (ใน Windows 7) ผมคัดลอกไฟล์ลงในconfig c:\cygwin\home\[USERNAME]\.sshเมื่อฉันรันssh(เช่นssh -vT git@bitbucket.org) ฉันได้รับข้อผิดพลาดต่อไปนี้:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 ก.พ. 2554 เจ้าของหรือสิทธิ์ที่ไม่ถูกต้องใน/home/هUSERNAME Same/.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/known_hosts)

ตรวจสอบให้แน่ใจว่า known_hosts สามารถเขียนได้

$ chmod 755 known_hosts

หมายเหตุ: ฉันเชื่อว่าคุณต้องตั้งค่า 600 สำหรับคีย์ส่วนตัวของคุณ

จากนั้นลอง ssh

เมื่อคุณได้..

เพิ่ม 'HOST_IP' (RSA) อย่างถาวรในรายการโฮสต์ที่รู้จัก

คุณสามารถแทนที่โหมด 600

$ chmod 600 known_hosts

PS : ฉันคิดว่านี่เป็นข้อบกพร่องใน Windows 8


คำตอบที่ได้รับการยอมรับไม่ได้ผลสำหรับฉัน แต่สิ่งนี้ทำได้ ขอบคุณ!
Achal Dave

นอกจากนี้ยังเป็นข้อผิดพลาดที่ค่อนข้างแปลก บนคอมพิวเตอร์ของฉัน (W8.1) การแก้ไขไฟล์. ssh / config ใน Vim จะนำไปสู่ข้อบกพร่องนี้เสมอ มันน่ารำคาญอย่างยิ่งเนื่องจากการเปลี่ยนแปลงการกำหนดค่า ssh ทุกครั้งของฉันต้องใช้คำสั่งเหล่านี้
Achal Dave

4
และเพื่อเพิ่มความแปลกประหลาดถ้าคุณใช้ Windows ที่ไม่ใช่ภาษาอังกฤษคุณต้องแน่ใจว่าใช้การแปลสถานที่ของ "ผู้ใช้" เมื่อออกคำสั่งนี้ ตัวอย่างเช่นในภาษาดัตช์มันจะกลายเป็น "chown -R: Gebruikers .ssh"
Alexander Kellett

1
สำหรับฉันนี่ใช้งานได้: chown -R m0j0: ผู้ใช้. ssh && chmod -R go-rwx .ssh
m0j0

1
ขอบคุณสิ่งนี้ใช้ได้สำหรับฉันเช่นกันในภาษาเยอรมันคุณต้องใช้chown -R [Username]:Benutzer .ssh/
con

20

คำตอบนี้จะถูกคัดลอกคำต่อคำจากhttps://superuser.com/a/875934/82032 นี่เป็นคำตอบเดียวที่ทำงานกับฉันหลังจากการอัพเกรด cygwin เมื่อเร็ว ๆ นี้

อย่าลืม ACLs

ไม่มีอะไรทำงานให้ฉันจนกว่าฉันจะถอดไฟล์ของ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:---

นี่คือสิ่งที่ฉันต้องทำหลังจากอัพเกรด cygwin
blockloop

1
สิ่งนี้ต้องใช้ cygwin 1.7.34-6
ClintM

นี่คือสิ่งที่ได้ผลสำหรับฉัน!
Ashutosh Jindal

9

ตรวจสอบการอนุญาตของconfigไฟล์โดยใช้lsคำสั่งของ Cygwin :

> 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

สำหรับ unix & OSX

ค่อนข้างง่าย:

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

สำหรับ Windows

หากไฟล์นั้นเป็นลิงค์สัญลักษณ์ของ windows (NTFS) ข้อมูลด้านบนจะไม่ทำงาน คุณต้องทำให้มันเป็นไฟล์ปกติ ฉันไม่แน่ใจว่าทำไม

หากคุณไม่มี openssh หรือ cygwin ให้ใช้ chocolatey เพื่อติดตั้งอย่างง่ายดาย

choco install cyg-get

เปิด Cygwin Terminalที่ติดตั้งด้วยช็อกโกแลตและเรียกใช้ (โปรดทราบว่าssh-keygenสร้างคีย์ใหม่):

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

ตรวจสอบว่ามีกุญแจ (หรือแทนที่ด้วยกุญแจที่คุณต้องการ) จากนั้นใน Cygwin shell:

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

หรือสำหรับกรณีที่ไม่ค่อยเกิดขึ้นที่คุณกำลังใช้ (และสร้างคีย์จาก) แพคเกจSSH chocolatey's :

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

นี่เป็นเรื่องปกติสำหรับฉันเนื่องจากกลุ่มมักจะผิดกับไฟล์
Alan Krueger

3

หมายเหตุสำคัญหาก Windows ของคุณไม่ได้เป็นภาษาอังกฤษแบบสหรัฐฯ: ชื่อกลุ่ม "ผู้ใช้" ขึ้นอยู่กับสถานที่ ตัวอย่างเช่นหาก Windows ของคุณเป็นภาษาสเปนคุณจะต้องเปลี่ยนความเป็นเจ้าของไฟล์ด้วยchown $USER:Usuarios *


1

สิ่งเหล่านี้ (chmod / chown / icacls / setacl / copyacls / explorer> ความปลอดภัย) ทำงานบน cygwin64 / win7 / admin ของฉันในที่สุดงานนี้กับcygwin64/ssh -F ~/.ssh/configโซลูชันอื่น ๆ คือการใช้ ssh ที่เก่ากว่าใน cygwin32 หรือ ssh ใน git สำหรับ windows ..


การใช้-Fจะแก้ปัญหาด้วยconfigแต่จะไม่แก้ไขการอนุญาตสำหรับคีย์ส่วนตัว
Jari Turkia

0

สำหรับผู้ที่ใช้noaclในเส้นทางด้วย~/.sshวิธีง่าย ๆ dir คือการสร้างลิงค์สัญลักษณ์ 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) คุณสามารถสร้างไดเรกทอรีนี่และชี้ไปที่ตำแหน่งมันเป็นปัญหาสำหรับแอพพลิเค Cygwin ของ


1
เนื่องจากนี่คือไดเรกทอรีโซลูชันแบบง่าย ๆ จะใช้ทางแยกเนื่องจากไม่ต้องใช้สิทธิ์ที่จำเป็นสำหรับการตั้งค่าลิงก์สัญลักษณ์ นั่นเป็นmklink /jหรือjunctionเครื่องมือจาก Sysinternals Suite
0xC0000022L

0

tldr:คุณอาจสร้าง config เป็น adminstrator

วิธีการแก้

วิธีแก้ปัญหาเหล่านี้อาจเกินขีด จำกัด หากคุณสร้างไฟล์โดยไม่ตั้งใจในฐานะผู้ดูแลระบบและพยายามใช้ไฟล์ด้วยการใช้โลคัลต่อครั้ง

  • คัดลอกเนื้อหาของ ssh config ของคุณ
  • ลบไฟล์
  • เปิดเชลล์ใหม่ (ภายใน - ไม่ใช่ผู้ดูแลระบบ)
  • นำทางไปยังเส้นทางที่จัดเก็บการกำหนดค่าของคุณ ( โดยปกติคือ~/.sshPowerShell หรือ%userprofile%\.sshใน cmd )
  • วิ่ง notepad .\config

คำสั่งง่าย ๆ (PowerShell):

$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
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.