当我尝试 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
答案1
我需要为配置赋予仅限用户的 rw 权限。这样就解决了问题。
chmod 600 ~/.ssh/config
正如其他人在下面指出的那样,它可能是文件所有者。(给他们点赞!)
chown $USER ~/.ssh/config
如果整个文件夹的权限无效,则以下是可能的权限表:
小路 | 允许 |
---|---|
.ssh 目录(代码) | 0700(drwx------) |
私钥(例如:id_rsa )(代码) |
0600 (-rw-------) |
config |
0600 (-rw-------) |
公钥(*.pub 例如id_rsa.pub :) |
0644 (-rw-r--r--) |
authorized_keys (代码) |
0644 (-rw-r--r--) |
known_hosts |
0644 (-rw-r--r--) |
资料来源:
- openssh检查权限.c
- openssh读取配置文件
- openssh ssh_用户配置fix_authorized_keys_perms
答案2
这些命令应该可以修复权限问题:
chown $USER ~/.ssh/config
chmod 644 ~/.ssh/config
sudo
如果文件由不同的用户拥有(或者您无权访问它们),则以 为前缀。
如果有更多文件受到影响,请替换config
为*
。
我们man ssh
可以读到:
由于可能存在滥用行为,此文件必须具有严格的权限:用户可读/写,其他人不可写。如果相关组仅包含用户,则它可能为组可写。
答案3
对我来说,问题在于我的用户帐户不是该文件的所有者
sudo chown myuser ~/.ssh/config
答案4
不要忘记这个群体:
chown $USER:$USER ~/.ssh/config
:-)