尝试导入SSH密钥时出现“警告:未受保护的私钥文件!”错误信息

163

有人可以请解释一下这个问题,并告诉我如何解决我的权限问题吗?它似乎阻止我获取主机heroku的真实性并解决我的密钥问题。

david@daniel-Inspiron-531:~$ ssh-add david/.ssh/id_rsa
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0775 for 'david/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
david@daniel-Ins
5个回答

214
我建议您重新创建一组键,使用以下方法:
ssh-keygen -t rsa -C '<email>'

为了使系统更加安全。否则将权限更改为不那么开放的权限即可。

要更改权限,请使用

chmod  400 ~/.ssh/id_rsa

8
它可以工作。我有10个服务器,我将id_rsa从server1复制到其他9个服务器,然后出现了这个错误。为了解决它,我应用了chmod 400 ~/.ssh/id_rsa,现在我可以执行$ git clone。 - user285594
这对我有用: sudo chmod 600 ~/.ssh/id_rsa -- sudo chmod 600 ~/.ssh/id_rsa.pub - hB0
权限可以是400或600。 - Javeed Shakeel
对我来说只有400有效,尝试从Github仓库获取600时超时了。 - Dominique Paul
我尝试了这个链接中等效的Windows方法,它有效:https://gist.github.com/jaskiratr/cfacb332bfdff2f63f535db7efb6df93 - Vijai

49

只需将关键文件的权限重置为默认值

sudo chmod 600 ~/.ssh/id_rsa
sudo chmod 600 ~/.ssh/id_rsa.pub

私钥的命令是正确的。另一方面,公钥必须对所有人都具有读取权限。如果您将权限限制为只有用户/所有者,则将来可能会遇到某些问题。此命令可以解决问题:sudo chmod a=r ~/.ssh/id_rsa.pubsudo chmod 644 ~/.ssh/id_rsa.pub - Dan
1
这节省了我很多时间! - user736893
@THEJOATMON,听到这个消息太棒了! - JSEvgeny

22

如果您正在使用WSL,您可以将file.pem复制到~/.ssh/

复制文件.pem

cp file.pem ~/.ssh/

更改权限:

chmod 600 ~/.ssh/file.pem

完成了,请使用您的ssh-add再次尝试。

eval `ssh-agent -s`
ssh-add ~/.ssh/file.pem

谢谢Antonio,我在两周内不得不查找这个答案两次,哈哈! - Hank

13

只需将/.ssh/id_rsa文件的权限更改为400即可

#chmod  400 ~/.ssh/id_rsa

这不会让其他人或任何团队成员修改文件。


4

您需要将包含私钥的文件的所有者更改为您自己的用户名,并赋予完全访问权限。然后删除其他可以访问该文件的用户名。

右键单击包含私钥的文件,点击属性,然后选择安全选项卡>高级,通过点击更改按钮,您可以将所有者更改为您自己的用户名。(如果您不知道您的用户名,请在命令提示符中运行:"echo %USERNAME%") 更改>高级…>查找

除了您刚添加的条目外,删除所有权限条目

点击"禁用继承">转换继承权限...然后删除所有权限条目,除了您刚添加的那个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接