ssh“权限太开”错误

我有一个问题,我的Mac我不能保存在磁盘上的任何一种文件了。 我不得不重新启动OSX狮子并重置文件和acls权限。

但是现在当我想提交一个仓库时,我从ssh得到以下错误:

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文件什么权限级别?

密钥只能由您阅读:

 chmod 400 ~/.ssh/id_rsa 

编辑: 600似乎也很好(事实上在大多数情况下更好,因为你不需要改变文件权限来编辑它)。

再次编辑: manpage中的相关部分( man ssh

  ~/.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. 

在Windows 8.1中使用Cygwin,需要运行一个命令:

chgrp用户〜/ .ssh / id_rsa

那么这里发布的解决scheme可以应用,400或600就可以了。

chmod 600〜/ .ssh / id_rsa

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

在Windows 8.1上运行的独立于语言环境的解决scheme是:

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

GID 545是一个特殊的ID ,即使您的语言环境对用户使用不同的字,也始终指向“用户”组。

0600是我的设置(和它的工作)

AFAIK的价值是:

700用于密钥文件所在的隐藏目录“.ssh”

600为密钥文件“id_rsa”

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

我相信这将与任何权限的集合“0xx0”,但我没有testing每个版本的每个组合。 我已经在CentOS 6上用5.3p1-84试过了0660,而这个组不是用户的主要组,而是一个辅助组,它工作的很好。

对于某人的个人密钥,通常不会这样做,但是对于一个用于自动化的密钥,在这种情况下,您不希望应用程序能够混淆密钥。

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

什么对我有效

chgrp用户文件夹

chmod 600文件夹

在这里发信息。 如果您的私钥太开放,操作系统足够聪明地拒绝远程连接。 它理解id_rsa的权限敞开的风险(读取,任何人都可以编辑)。

{有人可能已经改变了你的锁,然后用他已经有的钥匙打开它。 }

cd ~/.ssh; chmod 400 id_rsa

PS:

在多台服务器(非生产)上工作时,大多数人觉得需要使用ssh连接远程服务器。 一个好主意是有一个应用程序级别的代码(可能是java使用jsch)在服务器之间创buildssh信任。 这种方式连接将无密码。 Incase,perl安装 – 也可以使用net ssh模块。

我在EC2上使用VPC,并得到相同的错误消息。 我注意到我正在使用公共DNS。 我改变了私人DNS和挥发! 有效…