题 ssh“权限太开放”错误


我的mac出了问题,我无法在磁盘上保存任何类型的文件。 我不得不重新启动OSX lion并重置文件和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文件提供哪些权限级别?


1270
2018-02-14 02:02


起源


ssh不是用于编程的工具吗? - Andrew Norman
对于这样一个流行的问题,你似乎在挑剔! ;) - Jamie Hutber
是的,非常愚蠢,这是关闭的。 - tommybond
Stack Overflow是一个编程和开发问题的站点。这个问题似乎是偏离主题的,因为它不是关于编程或开发。看到 我在这里可以问什么主题 在帮助中心。也许 超级用户 要么 Unix和Linux堆栈交换 会是一个更好的地方。 - jww
绝对不是unix / linux的问题,因为ssh是一个甚至在windows上使用的安全标准,毫无根据的论点 - pythonian29033


答案:


密钥只能由您读取:

chmod 400 ~/.ssh/id_rsa

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

手册页的相关部分(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.

2189
2018-02-14 02:05



400太低,因为它使您自己的用户不可写。实际上建议使用600,因为它允许所有者读写而不仅仅是读取。 - jfreak53
我今天发现有时候400是相关的。假设您有一个authorized_keys文件,其中包含 no-pty等 功能集。如果文件是可写的,用户实际上可以覆盖authorized_keys文件并获得交互式shell访问!需要注意的是,尽管对于大多数人来说肯定不是一般情况。 - quickshiftin
AWS实际上建议在其网站上使用权限400。这就是我在OS X上所做的,它起作用了。 - George Mylonas
这绝对有效并且更安全。唯一的缺点是你必须将它改为600才能编辑。对于id_rsa和id_rsa.pub,我怀疑这很重要,因为你很少会编辑这些文件,但对于authorized_keys,它可能很烦人。最好了解权衡并适当配置每个系统。 - quickshiftin
我想这也取决于你编辑它们的频率。许多人设置并忘记它,因此400对其他人和你自己的行为更安全;必要时修改为600。如果它是您的工作流程和ssh-savy的一部分,那么继续更改权限可能会更加困难。 - vol7ron


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

chgrp用户〜/ .ssh / id_rsa

然后可以应用此处发布的解决方案,400或600即可。

chmod 600~ / .ssh / id_rsa

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


77
2018-04-11 11:17



这对我有用! - Memonic
语言环境相关。我不得不运行“chgrpUżytkownicy~/ .ssh / id_rsa”,因为“用户”错误没有这样的组。 - Marcos
我也必须这样做。我的cygwin目录位于默认位置(C:\cygwin64)所以它可能继承了权限。奇怪的是,这并没有发生在我拥有的其他笔记本电脑上。 - SirBraneDamuj
@Marcos我添加了一个无论语言环境如何都有效的答案: stackoverflow.com/a/28647713/67013 - thehouse
Windows 10.仅使用第二个命令。工作就像一个魅力。 - StalkAlex


在Windows 8.1上运行的与语言环境无关的解决方案是:

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

GID 545是一个 特殊身份证 即使您的语言环境对用户使用不同的单词,也始终引用“用户”组。


29
2018-02-21 15:51



非常感谢... - Richard Dally
它也适用于macbook - Ravi Kumar
也适用于Windows 10。 - FarO
适用于Windows 7。 - Terry Lin


0600是我的定位(并且它正在工作)


22
2018-02-14 02:04





AFAIK的价值观是:

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

600为密钥文件“id_rsa”


20
2017-11-13 07:57



非常感谢你 - mstzn


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

我相信这将适用于集合“0xx0”中的任何权限,但我没有测试每个版本的每个组合。我在CentOS 6上尝试过0660和5.3p1-84,并且该组不是用户的主要组而是辅助组,并且它工作正常。

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

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


13
2017-11-13 17:18



很有用。感谢您发布此内容。 - nonrectangular


什么对我有用

chgrp用户文件夹

chmod 600 FOLDER


5
2018-03-26 22:54



chgrp:grupoinválido:«用户»
我试过但不断抛弃'无效组':用户'',为什么?使用Windows 10,PowerShell - Jason Goal