ssh返回“不良所有者或〜/ .ssh / config的权限”


365

当我尝试ssh到另一个盒子时,出现这个奇怪的错误

$ ssh hostname
Bad owner or permissions on ~/.ssh/config

但是我确保自己拥有该文件并拥有rw权限:

ls -la ~/.ssh/
total 40K
drwx------ 2 robert robert 4.0K Mar 29 11:04 ./
drwx------ 7 robert robert 4.0K Mar 29 11:04 ../
-rw-r--r-- 1 robert robert 2.0K Mar 17 20:47 authorized_keys
-rw-rw-r-- 1 robert robert   31 Mar 29 11:04 config
-rw------- 1 robert robert 1.7K Aug  4  2010 id_rsa
-rw-r--r-- 1 robert robert  406 Aug  4  2010 id_rsa.pub
-rw-r--r-- 1 robert robert 6.1K Mar 29 11:03 known_hosts

我只是有同样的消息。我的情况不一样。我使用的是全局IdentityFile ~/.ssh/id_rsa设置,因此当我尝试访问user@myserver.com时,它尝试使用该id_rsa而不问我密码。避免使用全局IdentityFile,一切都会顺利进行。
giovannipds

Answers:


568

我需要具有rw才能在config上获得仅用户权限。这样就解决了。

chmod 600 ~/.ssh/config

正如其他人在下面指出的那样,它可能是文件所有者。(支持他们!)

chown $USER ~/.ssh/config

22
有时,导致问题的不仅是权限,还包括所有者。就我而言,我也必须这样做:chown -R robert:robert ~/.ssh
Nicolas C

3
就我而言,从644上升到600可以解决问题。
Magicsowon '16

2
只需阅读许可就足够了,即400
030

1
对我来说,600没有工作,唯一的400(在Ubuntu Xenial)
马丁·科尔

@ 030,只要您不打算编辑文件即可。–
肖恩·比恩

64

这些命令应该解决权限问题:

chown $USER ~/.ssh/config
chmod 644 ~/.ssh/config

sudo如果文件由其他用户拥有(或您无权访问),则带有前缀。

如果更多文件受到影响,请替换config*

man ssh我们可以读到:

由于存在滥用的可能性,该文件必须具有严格的权限:用户可读/写,并且其他用户不可写。如果所讨论的组仅包含用户,则它可能是组可写的。


3
这帮了我大忙。我正在使用cygwin和cygwin .ssh与Windows用户.ssh符号链接。我必须在cygwin窗口中运行这些命令。
Damodar Bashyal,2016年

这对我有用。
Viraj.Hadoop

12

对我来说,这是我的用户帐户不是文件所有者的问题

sudo chown myuser ~/.ssh/config

2

在WSL(Linux的Windows子系统)上,默认情况下chmod无效。在chmod添加其他答案中提到的文件之前,必须添加

[automount]
options = "metadata"

/etc/wsl.conf然后重新启动WSL(需要内部版本17093或更高版本)。

挂载前说:

C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,case=off)

挂载后说:

C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,metadata,case=off)
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.