ssh"权限太开放"错误

Yan*_*all 1859 permissions 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.
Run Code Online (Sandbox Code Playgroud)

我应该为id_rsa文件提供哪些权限级别?

qui*_*tin 3136

密钥只能由您阅读:

chmod 400 ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

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

联机帮助页的相关部分(man ssh)

chmod 600 ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

  • 400太低,因为它使您自己的用户不可写.实际上建议使用600,因为它允许所有者读写而不仅仅是读取. (280认同)
  • AWS实际上建议在其网站上使用权限400.这就是我在OS X上所做的,它起作用了. (12认同)
  • 我今天发现有时候400是相关的.假设您有一个authorized_keys文件,其中包含[no-pty et al](http://oreilly.com/catalog/sshtdg/chapter/ch08.html)功能集.如果文件是可写的,用户实际上可以覆盖authorized_keys文件并获得交互式shell访问权限!要记住一些事情,但对大多数人来说肯定不是一般情况. (7认同)
  • 这绝对有效并且更安全.唯一的缺点是你必须将它改为600才能编辑.对于id_rsa和id_rsa.pub,我怀疑这很重要,因为你很少会编辑这些文件,但对于authorized_keys,它可能很烦人.最好了解权衡并适当配置每个系统. (5认同)
  • 我想这也取决于你编辑它们的频率.许多人设置并忘记它,因此400会更安全地与他人和你自己的行为; 必要时修改为600.如果它是您的工作流程和ssh-savy的一部分,那么继续更改权限可能会更加困难. (3认同)
  • 如何在 **Windows** 中更改此权限?我尝试将目录和文件都设置为隐藏和只读,但没有成功。 (2认同)
  • 如何更改**Windows**文件夹下的权限?我尝试将其更改为600,但失败了。如果我在Ubuntu文件夹下将其更改为600,则成功。但是,如果我将 600 的文件复制到 windows 文件夹中,其权限又恢复为 777。 (2认同)

tan*_*za9 96

在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

  • 语言环境相关.我不得不运行"chgrpUżytkownicy~/ .ssh/id_rsa",因为"用户"没有错误这样的组. (7认同)
  • Windows 10.仅使用第二个命令.工作就像一个魅力. (4认同)
  • @Marcos我添加了一个无论语言环境如何都有效的答案:http://stackoverflow.com/a/28647713/67013 (3认同)

the*_*use 39

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

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

GID 545是一个特殊ID,始终引用"用户"组,即使您的区域设置对用户使用不同的单词也是如此.


Rav*_*ina 35

当我尝试使用公钥登录远程 ftp 服务器时,我遇到了类似的问题。
为了解决这个问题,我做了以下过程:

  • 首先找到公钥的位置,因为当你尝试登录ftp时,会使用这个公钥。
  • 或者,您可以创建一个密钥并将该密钥的权限设置为600
  • 确保您位于正确的位置并执行以下命令:
chmod 600 id_rsa
Run Code Online (Sandbox Code Playgroud)


Dev*_*tas 31

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


Nav*_*ame 31

我取得了成功sudo

sudo chmod 400 pem-file.pem
sudo ssh -i pem-file.pem username@X.X.X.X
Run Code Online (Sandbox Code Playgroud)

  • sudo 是唯一有效的方法 (2认同)
  • 使用windows wsl,这成功了! (2认同)

lm5*_*050 27

AWS 上的 Windows 10 SSH 进入 Ubuntu EC2“权限太开放”错误

我在尝试使用来自 AWS 的 .pem 文件通过 ssh 连接到 Ubuntu EC2 实例时遇到了这个问题。

在 Windows 中,当我将此密钥放在 .ssh 文件夹下创建的文件夹中时,这会起作用

C:\Users\USERNAME\.ssh\private_key
Run Code Online (Sandbox Code Playgroud)

在 Windows 10 中更改权限设置:

文件设置 > 安全 > 高级

禁用继承

将继承权限转换为显式权限

删除除管理员以外的所有权限条目

然后可以安全地连接。


aja*_*kel 23

AFAIK的价值观是:

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

600为密钥文件"id_rsa"


小智 14

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

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

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

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


Suj*_*ale 13

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

chmod 400 /Users/username/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Sup*_*nno 11

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

Windows 10的id_rsa的权限

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

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

  • **对于 Win10 需要将您的密钥移至用户的主页** - 这非常有效。我试图提供密钥的完整路径并弄乱权限 - 没有任何效果。 (9认同)
  • 我可能可以根据您的指示专门添加名称。但我的主要问题是 - **拒绝和允许所有人的确切权限是什么**。同时,如上所述,我只需将“.pem”添加到“myuser 目录”即可解决问题 (2认同)

小智 10

仅适用于 Windows 用户。转到文件属性--> 安全性 --> 高级

  1. 禁用继承属性
  2. 将继承的权限转换为显式权限。
  3. 删除除管理员以外的所有权限条目。 在此处输入图片说明

在此处输入图片说明


Nig*_*ist 10

对于 Windows :

奇怪的是,之前描述的 UI 调整并没有帮助我

但这解决了问题:

  1. 在管理员权限下打开PowerShell
  2. 使用密钥转到目录(使用 cd 命令)
  3. 一一输入命令

$path = ".\{your private key file name}" //for example "myKey"
Run Code Online (Sandbox Code Playgroud)

然后通过键入以下内容删除您的显式权限:

icacls.exe $path /reset
Run Code Online (Sandbox Code Playgroud)

然后分配给当前用户读取权限:

icacls.exe $path /GRANT:R "$($env:USERNAME):(R)"
Run Code Online (Sandbox Code Playgroud)

然后删除继承:

icacls.exe $path /inheritance:r
Run Code Online (Sandbox Code Playgroud)

希望能帮助某人

在此输入图像描述


小智 10

只需使用以下内容:

sudo chmod 600 [Location of Private Key]/[Name of Private Key]
sudo chmod 700 [Location of Folder Containing Private Key]/[Name of Folder Conataining Private Key]
sudo ssh -v -i key.pem ubuntu@instance.re-region-1.compute.amazonaws.com
Run Code Online (Sandbox Code Playgroud)


Mos*_*ael 9

如果您在 Windows 上使用 WSL

简单的答案就是输入:sudo ssh -i keyfile.pem <user>@ip

无需更改文件权限。出现这种情况的原因是什么? 另一个资源

您无法在 Windows 上的 Ubuntu 上的 Bash 上使用 chmod 来修改 Windows 文件系统上的文件的权限。您必须将私钥复制到 WSL 主目录 (~) 并在那里进行操作。


另一方面,sudo绝对不应该与 ssh 一起使用。发出 with 有效的原因sudo是它现在可能以 root 身份执行,这不是执行此操作的正确方法,并且存在巨大的安全风险,因为允许 600/400 权限以外的任何内容都违背了利用 SSH 的目的密钥,从而损害密钥的安全性。

最好的方法是将文件复制到$HOME/.ssh

cp keyfile.pem ~/.ssh

正在做sudo chmod 400 keyfile.pem它。

然后ssh -i keyfile.pem <user>@ip


Jar*_*ach 8

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

  • 这是唯一有效的解决方案:)谢谢你节省了我的时间 (3认同)

Jef*_*ang 6

从另一台 Mac 迁移后我遇到了同样的问题。而且我的密钥无法连接 github。

我按如下方式重置了权限,现在效果很好。

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)
Run Code Online (Sandbox Code Playgroud)


小智 6

正如人们所说,在 Windows 中,我只需将.pem文件放入C:\Users\[user]\.ssh\即可解决问题。尽管您可以chmod从 bash 或 powershell 提示符执行其他命令行选项,但这不起作用。我没有更改 rsa 或其他任何内容。然后,在运行连接时,您必须将 pem 文件的路径放入文件.ssh夹中:

ssh -i "C:\Users\[user]\.ssh\ubuntukp01.pem" ubuntu@ec[ipaddress].us-west-2.compute.amazonaws.com
Run Code Online (Sandbox Code Playgroud)


Jer*_*sia 5

什么对我有用

chgrp用户文件夹

chmod 600文件夹


Dan*_*ann 5

对我来说(使用 Windows 的 Ubuntu 子系统)错误消息更改为:

 Permissions 0555 for 'key.pem' are too open
Run Code Online (Sandbox Code Playgroud)

使用 chmod 400 后。事实证明,使用 root 作为默认用户是原因。

使用 cmd 更改此设置:

 ubuntu config --default-user your_username
Run Code Online (Sandbox Code Playgroud)


小智 5

这就是为我工作的东西(在Mac上)

sudo chmod 600 path_to_your_key.pem 
Run Code Online (Sandbox Code Playgroud)

然后 :

ssh -i path_to_your_key user@server_ip
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助


小智 5

700  folder
644  id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

这对我有用。