Chủ sở hữu hoặc quyền của Bad Bad Lỗi sử dụng Cyshwin ssh.exe


29

Tôi đang cố gắng sử dụng ssh.exe trong Cygwin (trong Windows 7). Tôi đã sao chép một configtập tin vào c:\cygwin\home\[USERNAME]\.ssh. Khi tôi chạy ssh(ví dụ ssh -vT git@bitbucket.org:) tôi gặp lỗi sau:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 tháng 2 năm 2011 Chủ sở hữu xấu hoặc quyền trên /home/[USERNAME[/.ssh/config

Làm cách nào sshđể đọc tệp cấu hình của tôi?

Câu trả lời:


46

Sau khi làm như trên, tôi luôn nhận được điều này:

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

và lỗi trên .ssh/config. Vì vậy, tôi đã chạy chowntrên .sshthư mục và chmodmột lần nữa như thế này:

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

và sau đó:

> chmod -R 600 .ssh/

và cuối cùng tôi đã làm cho nó hoạt động:

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

Chỉnh sửa (đối với bash trên Windows10)

Khi bạn gặp lỗi ..

Không thể thêm máy chủ vào danh sách các máy chủ đã biết (/PATH_TO_HOME/USERNAME/.ssh/ Unknown_hosts).

Hãy chắc chắn rằng know_hosts có thể ghi

$ chmod 755 được biết_host

Lưu ý: Tôi tin rằng bạn chỉ cần đặt 600 cho khóa riêng của mình

Sau đó, cố gắng ssh.

Khi bạn nhận được ..

Đã thêm vĩnh viễn 'HOST_IP' (RSA) vào danh sách các máy chủ đã biết.

Bạn có thể thay thế chế độ 600

$ chmod 600 know_hosts

PS : Tôi nghĩ rằng đây là một lỗi trên Windows 8.


Câu trả lời được chấp nhận không làm việc cho tôi, nhưng điều này đã làm. Cảm ơn!
Achal Dave

Ngoài ra, đây là một lỗi khá kỳ lạ. Trên máy tính của tôi (W8.1), chỉnh sửa tệp .ssh / config trong Vim luôn dẫn đến lỗi này. Điều này cực kỳ khó chịu, vì mọi thay đổi đối với cấu hình ssh của tôi đều yêu cầu chạy các lệnh này.
Achal Dave

4
Và chỉ để thêm vào sự kỳ lạ, nếu bạn đang sử dụng phiên bản Windows không phải tiếng Anh thì hãy đảm bảo sử dụng bản dịch ngôn ngữ của "người dùng" khi ban hành lệnh này. Ví dụ trong tiếng Hà Lan, nó trở thành "chown -R: Gebruikers .ssh"
Alexander Kellett

1
Đối với tôi, điều này đã hoạt động: chown -R m0j0: Người dùng .ssh && chmod -R go-rwx .ssh
m0j0

1
Cảm ơn điều này cũng có hiệu quả với tôi, bằng tiếng Đức bạn cần sử dụngchown -R [Username]:Benutzer .ssh/
con

20

Câu trả lời này được sao chép nguyên văn từ https://superuser.com/a/875934/82032 . Đây là câu trả lời duy nhất có hiệu quả với tôi sau khi nâng cấp cygwin gần đây.

Đừng quên ACL

Không có gì làm việc cho tôi cho đến khi tôi tước tệp ACL và đặt lại quyền.

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

#reset permissions
chmod 0600 ~/.ssh/config

Bạn có thể sử dụng getfaclđể xem ACL hiện tại trên một tệp.

getfacl ~/.ssh/config

Trước khi tôi xóa ACL (Bị hỏng):

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

Sau khi làm việc)

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

Đây là những gì tôi phải làm sau khi nâng cấp cygwin
blockloop

1
Điều này đòi hỏi Cygwin 1.7.34-6
ClintM

Đây là những gì làm việc cho tôi!
Ashutosh Jindal

9

Kiểm tra quyền của configtệp bằng lslệnh của Cygwin :

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

Nó có thể sẽ là một cái gì đó như thế này:

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

Tệp cấu hình cần thuộc về [USERNAME]. Thử đi:

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

ls -laBây giờ nên hiển thị đúng chủ sở hữu. Nếu vẫn không được, hãy thử đặt lại chế độ (quyền):

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

9

Dành cho unix & OSX

Rất đơn giản:

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

Cho cửa sổ

Nếu tệp là một liên kết tượng trưng của windows (NTFS), thì ở trên sẽ không hoạt động. Bạn cần phải làm cho nó một tập tin thường xuyên. Tôi không chắc tại sao.

Nếu bạn không có openssh hoặc cygwin, hãy sử dụng chocolate để cài đặt dễ dàng.

choco install cyg-get

Mở Cygwin Terminal đã được cài đặt với chocolatey và chạy (lưu ý ssh-keygentạo khóa mới):

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

Xác minh các khóa ở đó (hoặc thay thế chúng bằng các khóa bạn muốn), và sau đó trong vỏ Cygwin:

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

Hoặc đối với trường hợp hiếm hoi mà bạn đang sử dụng (và tạo các khóa từ) gói SSH của sô cô la :

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

Điều này thường là cho tôi, vì nhóm thường sai trên các tập tin.
Alan Krueger

3

Lưu ý quan trọng nếu Windows của bạn không bằng tiếng Anh Mỹ: tên nhóm "người dùng" phụ thuộc vào ngôn ngữ. Ví dụ: nếu Windows của bạn bằng tiếng Tây Ban Nha, bạn sẽ phải thay đổi quyền sở hữu của các tệp vớichown $USER:Usuarios *


1

Không ai trong số này (chmod / chown / icacls / setacl / copyacls / explorer> security) hoạt động trên cygwin64 / win7 / admin của tôi, cuối cùng, cygwin64/ssh -F ~/.ssh/configgiải pháp này hoạt động với các giải pháp khác là sử dụng ssh cũ trong cygwin32 hoặc ssh trong git cho windows ..


Sử dụng -Fsẽ giải quyết vấn đề với config, nhưng sẽ không giải quyết quyền cho khóa riêng.
Jari Turkia

0

Đối với những người sử dụng noacltrong đường dẫn với ~/.sshgiải pháp đơn giản là tạo liên kết tượng trưng 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

Không noaclcó cách nào để thiết lập quyền khác sau đó rwxr-xr-xhoặc rw-r--r--. Vì /hệ thống phân cấp nên không có noacl(hoặc nên có acl), bạn có thể tạo thư mục tại đây và chỉ đến các vị trí có vấn đề cho các ứng dụng của Cygwin.


1
Vì đây là một thư mục, giải pháp đơn giản sẽ sử dụng một đường nối, bởi vì điều đó không yêu cầu các đặc quyền cần thiết để thiết lập một liên kết tượng trưng. Đó sẽ là mklink /jhoặc junctioncông cụ từ Sysiternals Suite.
0xC0000022L

0

tldr: Bạn có thể đã tạo cấu hình như quản trị viên

Dung dịch

Các giải pháp này có thể là quá mức nếu bạn kết thúc việc tạo nhầm tệp với tư cách quản trị viên và cố gắng sử dụng tệp với perms cục bộ.

  • Sao chép nội dung cấu hình ssh của bạn
  • Xóa tập tin
  • Mở một vỏ mới (cục bộ - không phải quản trị viên)
  • Điều hướng đến đường dẫn nơi cấu hình của bạn được lưu trữ ( thường là ~/.sshtrong PowerShell hoặc %userprofile%\.sshcmd )
  • Chạy notepad .\config

Các lệnh đơn giản (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
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.