ssh“权限太开放”错误

ssh “permissions are too open” error

我的Mac有问题,我不能再在磁盘上保存任何类型的文件。我必须重新启动osx lion并重置文件和ACL的权限。

但是现在,当我想要提交一个存储库时,我从ssh中得到了以下错误:

1
2
3
Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

我应该为id_rsa文件授予哪些权限级别?


密钥只能由您读取:

1
chmod 400 ~/.ssh/id_rsa

600看起来也不错(事实上在大多数情况下更好,因为您不需要更改文件权限来编辑它)。

手册页的相关部分(man ssh)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and
         can (but need not) be readable by anyone.


在Windows8.1中使用cygwin,需要运行一个命令:

chgrp Users ~/.ssh/id_rsa

然后,这里发布的解决方案可以应用,400或600可以。

chmod 600 ~/.ssh/id_rsa

参考:http://vinetgupta.com/blog/cygwin-permissions-bug-on-windows-8


在Windows8.1上工作的与区域设置无关的解决方案是:

1
2
chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

gid 545是一个特殊的ID,它总是引用"用户"组,即使您的区域设置对用户使用不同的词。


0600是我的设定值(它在工作)


afaik值为:

700表示密钥文件所在的隐藏目录".ssh"

600表示密钥文件"id_rsa"


键的"0x00"权限要求有一个例外。如果密钥由根拥有,并且由包含用户的组拥有,那么它可以是"0440",并且该组中的任何用户都可以使用该密钥。

我相信这将与"0xX0"集中的任何权限一起工作,但我还没有测试每个版本的每个组合。我在Centos6上用5.3p1-84尝试了0660,这个组不是用户的主要组,而是一个次要组,它工作得很好。

这通常不是针对某人的个人密钥,而是针对用于自动化的密钥,在您不希望应用程序能够处理该密钥的情况下。

类似的规则也适用于.ssh目录限制。


提供400个许可,执行以下命令

1
chmod 400 /Users/username/.ssh/id_rsa

enter image description here


什么对我有用

chgrp Users FOLDER

chmod 600 FOLDER


在Windows10上,Cygwin的chmod和chgrp对我来说还不够。我必须右键单击文件->属性->安全性(选项卡),然后删除除活动用户之外的所有用户和组。


我的Windows10中有错误,所以我将权限设置为以下内容,它可以正常工作。

Permission for id_rsa of windows 10

在详细信息中,删除其他用户/组,直到它只有"system"和"administrators"。然后用只读权限将您的Windows登录名添加到其中。

注:id_rsa文件位于c:\users\文件夹下。


这里有有趣的信息。如果您的私钥太开放,那么操作系统足够智能,可以拒绝远程连接。它了解ID_rsa的权限完全开放的风险(读取,任何人都可以编辑)。

有人可能先把你的锁换了,然后用他已经有的钥匙打开。}

1
2
cd ~/.ssh
chmod 400 id_rsa

PS:

在处理多个服务器(非生产服务器)时,我们大多数人认为需要将远程服务器与ssh连接起来。一个好主意是有一个应用程序级代码(可以使用JSCH的Java)来在服务器之间创建SSH信任。这样的连接将是无密码的。如果安装了Perl,也可以使用net ssh模块。


对于我(使用用于Linux的Ubuntu子系统),错误消息更改为:

1
 Permissions 0555 for 'key.pem' are too open

使用chmod 400后。原来,使用根作为默认用户是原因。

使用命令更改:

1
 ubuntu config --default-user your_username

这就是我(在Mac上)的工作原理。

1
sudo chmod 600 path_to_your_key.pem

然后:

1
ssh -i path_to_your_key user@server_ip

希望有帮助


我为我的私钥尝试了600级的许可,它对我很有用。chmod 600专用钥匙[开发]$ssh-i privatekey user@ip工作

chmod 755私钥[开发]$ssh-i privatekey user@ip它给出了以下问题:"privatekey"的权限0755太开放。要求其他人无法访问您的私钥文件。此私钥将被忽略。加载键"privatekey":权限错误


我在玩Ansible的时候遇到了这个错误。为了解决这个问题,我已将私钥的权限更改为600。效果不错!

1
chmod 600 .vagrant/machines/default/virtualbox/private_key

我正在EC2上使用vpc,并收到相同的错误消息。我注意到我正在使用公共DNS。我把它改成了私人域名系统和沃拉!它奏效了…


对于Win10,需要将密钥移动到用户的home dir对于Linuxlike OS,您需要将chmod设置为700 like或600等。