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


29

我正在尝试在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我的配置文件?

Answers:


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

当您收到错误时..

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

确保known_hosts可写

$ chmod 755已知主机

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

然后,尝试ssh。

当你拿到时..

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

您可以更换模式600

$ chmod 600known_hosts

PS:我认为这是Windows 8上的错误。


可接受的答案对我不起作用,但确实可以。谢谢!
Achal Dave

另外,这是一个很奇怪的错误。在我的计算机(W8.1)上,在Vim中编辑.ssh / config文件始终会导致此错误。这非常烦人,因为对我的ssh配置进行的每次更改都需要运行这些命令。
Achal Dave

4
只是为了增加一点怪异,如果您使用的是非英语版本的Windows,请确保在发出此命令时使用“用户”的语言环境翻译。例如,在荷兰语中它变成“ chown -R:Gebruikers .ssh”
Alexander Kellett

1
对我来说,这可行:chown -R m0j0:Users .ssh && chmod -R go-rwx .ssh
m0j0 2014年

1
谢谢,这对我也很有效,您需要使用德语chown -R [Username]:Benutzer .ssh/
con

20

这个答案是从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:---

这就是我升级cygwin之后要做的事情
blockloop

1
这需要cygwin 1.7.34-6
ClintM

这对我有用!
阿舒托什·金达尔

9

config使用Cygwin的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

对于UNIX和OSX

很简单:

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

对于Windows

如果文件是Windows(NTFS)符号链接,则以上操作将无效。您需要使其成为常规文件。我不知道为什么。

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

choco install cyg-get

打开安装有Chocolatey的Cygwin终端并运行(注意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

这对我来说通常就是这样,因为该组在文件上通常是错误的。
艾伦·克鲁格

3

重要提示(如果您的Windows不是美国英语):“用户”组的名称取决于语言环境。例如,如果您的Windows使用西班牙语,则必须使用以下命令更改文件的所有权chown $USER:Usuarios *


1

这些(chmod / chown / icacls / setacl / copyacls / explorer> security)都不适用于我的cygwin64 / win7 / admin,最后与cygwin64/ssh -F ~/.ssh/config其他解决方案一起使用的是在cygwin32中使用较旧的ssh或在Windows中使用git的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-xrw-r--r--。由于/层次结构应该没有noacl(或应该有acl),因此您可以在此处创建目录并指向Cygwin应用程序有问题的地方。


1
给定这是一个目录,简单的解决方案是使用结点,因为它不需要设置符号链接所需的特权。那将是Sysinternals Suite中mklink /jjunction工具。
0xC0000022L

0

tldr:您可能已经以管理员身份创建了配置

如果您最终错误地以admin身份创建文件,并尝试在本地权限下使用该文件,则这些解决方案可能会显得过大。

  • 复制ssh配置的内容
  • 删除档案
  • 打开一个新的shell(本地-非管理员)
  • 导航到配置存储的路径(通常~/.ssh在PowerShell或%userprofile%\.sshcmd中
  • 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
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.