使用 Cygwin 的 ssh.exe 出现“错误的所有者或权限”错误

Reb*_*ott 31 windows ssh cygwin

我正在尝试在 Cygwin(在 Windows 7 中)中使用 ssh.exe。我复制了一个config文件到c:\cygwin\home\[USERNAME]\.ssh. 当我运行ssh(例如,ssh -vT git@bitbucket.org)时,我收到以下错误:

OpenSSH_5.9p1、OpenSSL 0.9.8r 2011 年 2 月 8 日在 /home/[USERNAME]/.ssh/config 上的所有者或权限不正确

如何ssh读取我的配置文件?

Joa*_*vcm 47

按照上述操作后,我总是得到这个:

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
Run Code Online (Sandbox Code Playgroud)

和错误.ssh/config。所以我chown.ssh文件夹上运行,chmod再次像这样:

> chown -R [USERNAME]:users .ssh/
Run Code Online (Sandbox Code Playgroud)

进而:

> chmod -R 600 .ssh/
Run Code Online (Sandbox Code Playgroud)

最后我让它工作了:

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
Run Code Online (Sandbox Code Playgroud)

编辑(用于 Windows10 上的 bash)

当你得到错误..

无法将主机添加到已知主机列表 (/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 上的错误。

  • 更奇怪的是,如果您使用的是非英语版本的 Windows,请确保在发出此命令时使用“用户”的区域设置翻译。例如在荷兰语中它变成“chown -R :Gebruikers .ssh” (4认同)

gdw*_*dw2 22

这个答案是从https://superuser.com/a/875934/82032逐字复制的。这是最近 cygwin 升级后唯一对我有用的答案。

不要忘记ACL

在我剥离ACL文件并重置权限之前,对我没有任何作用。

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

#reset permissions
chmod 0600 ~/.ssh/config
Run Code Online (Sandbox Code Playgroud)

您可以使用getfacl来查看文件的当前 ACL。

getfacl ~/.ssh/config
Run Code Online (Sandbox Code Playgroud)

在我删除 ACL(已损坏)之前:

# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---
Run Code Online (Sandbox Code Playgroud)

之后:(工作)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 9

For unix & OSX

Quite simply:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
Run Code Online (Sandbox Code Playgroud)

For Windows

如果文件是 Windows (NTFS) 符号链接,则上述方法不起作用。您需要将其设为常规文件。我不知道为什么。

如果您没有 openssh 或 cygwin,请使用 Chocolatey 轻松安装。

choco install cyg-get
Run Code Online (Sandbox Code Playgroud)

打开安装了 Chocolatey 的Cygwin 终端并运行(注意ssh-keygen创建新密钥):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .
Run Code Online (Sandbox Code Playgroud)

验证密钥是否存在(或用您想要的密钥替换它们),然后在 Cygwin shell 中:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
Run Code Online (Sandbox Code Playgroud)

或者对于您正在使用(并从中生成密钥)巧克力的 SSH包的罕见情况:

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
Run Code Online (Sandbox Code Playgroud)


Reb*_*ott 8

config使用 Cygwin 的ls命令检查文件的权限:

> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh
Run Code Online (Sandbox Code Playgroud)

它可能是这样的:

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
Run Code Online (Sandbox Code Playgroud)

配置文件需要属于 [USERNAME]。尝试这个:

> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config
Run Code Online (Sandbox Code Playgroud)

ls -la现在应该显示正确的所有者。如果仍然不起作用,请尝试重置模式(权限):

> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config
Run Code Online (Sandbox Code Playgroud)