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

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

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

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

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

答案1

按照上述操作后,我总是得到这样的结果:

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.sshchmod

> 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 上的 bash)

当您收到错误时..

无法将主机添加到已知主机列表 (/PATH_TO_HOME/USERNAME/.ssh/known_hosts)。

确保known_hosts是可写的

$ chmod 755 已知主机

注意:我相信你只需要为你的私钥设置 600

然后尝试 ssh。

当你拿到时..

将“HOST_IP”(RSA)永久添加到已知主机列表中。

您可以更换模式 600

$ chmod 600 已知主机

附言:我认为这是 Windows 8 上的一个错误。

答案2

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

不要忘记 ACL

在我删除文件之前,什么都没起作用ACL并重置权限。

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

#reset permissions
chmod 0600 ~/.ssh/config

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

getfacl ~/.ssh/config

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

# 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:---

答案3

对于unix和OSX

很简单:

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

对于 Windows

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

如果您没有 openssh 或 cygwin,可以使用 chocolatey 轻松安装。

choco install cyg-get

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

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

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

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

或者对于您使用的罕见情况(并从中生成密钥)chocolatey 的 SSH包裹:

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

答案4

如果您的 Windows 不是美式英语,请注意:“用户”组的名称与语言环境有关。例如,如果您的 Windows 是西班牙语,则必须使用以下命令更改文件的所有权chown $USER:Usuarios *

相关内容