ssh“权限太开放” 错误

我的 Mac 出现问题,无法再在磁盘上保存任何类型的文件。我必须重新启动 OSX Lion 并重置文件和 ACL 的权限。

但是现在当我要提交存储库时,我从 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

如果您需要密钥可读写:

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

在 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

在 Windows 8.1 上可以使用的与语言环境无关的解决方案是:

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

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

0600 是我的目标(正在运行)

AFAIK 的值为:

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

密钥文件 “id_rsa” 为 600

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

我相信这可以在 “0xx0” 集中的任何权限下使用,但我尚未测试每个版本的每种组合。我已经在 CentOS 6 上用 5.3p1-84 尝试了 0660,该组不是用户的主要组,而是次要组,并且工作正常。

在您不希望应用程序弄乱密钥的情况下,通常不会对某人的个人密钥执行此操作,而是对用于自动化的密钥执行此操作。

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

我在 Windows 10 中遇到了错误,因此我将权限设置为以下内容,并且它可以正常工作。

Windows 10的id_rsa的权限

详细信息,删除其他用户 / 组,直到只有 “SYSTEM” 和 “Administrators” 为止。然后将 Windows 登录名添加为仅具有 “读取” 权限。

请注意, id_rsa文件位于c:\users\<username>文件夹下。

提供 400 权限,执行以下命令

chmod 400 /Users/username/.ssh/id_rsa

在此处输入图片说明

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

什么对我有用

chgrp 用户文件夹

chmod 600 文件夹