我从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文件什么权限?


当前回答

对于Windows:

奇怪,但之前在这里描述的UI调整对我没有帮助。

但这解决了问题:

以管理员权限打开PowerShell使用您的密钥转到目录(使用cd命令)逐个输入命令

:

$path = ".\{your private key file name}" //for example "myKey"

然后键入以下命令删除显式权限:

icacls.exe $path /reset

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

icacls.exe $path /GRANT:R "$($env:USERNAME):(R)"

然后删除继承:

icacls.exe $path /inheritance:r

希望,会帮助某人

其他回答

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

首先找到公钥的位置,因为当您尝试登录到ftp时,将使用此公钥。或者,您可以创建一个密钥并将该密钥的权限设置为600。确保您位于正确的位置并执行以下命令:

chmod 600 id_rsa

对于Windows:

奇怪,但之前在这里描述的UI调整对我没有帮助。

但这解决了问题:

以管理员权限打开PowerShell使用您的密钥转到目录(使用cd命令)逐个输入命令

:

$path = ".\{your private key file name}" //for example "myKey"

然后键入以下命令删除显式权限:

icacls.exe $path /reset

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

icacls.exe $path /GRANT:R "$($env:USERNAME):(R)"

然后删除继承:

icacls.exe $path /inheritance:r

希望,会帮助某人

另一个技巧是在下载文件夹中执行此操作。从AWS EC2实例下载私钥后,文件将位于该文件夹中,然后只需键入命令

ssh-keygen -y -f myprivateKey.pem > mypublicKey.pub

提供400许可,执行以下命令

chmod 400 /Users/username/.ssh/id_rsa

如果您在windows上使用WSL

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

而不更改文件权限。发生这种情况的原因是什么?另一种资源

您不能修改Windows文件系统上文件的权限在Windows上的Ubuntu上使用chmod on Bash。您必须复制WSL主目录(~)的私钥,并在那里执行。


另一方面,sudo不应与ssh一起使用。使用sudo发出命令之所以有效,是因为它现在很可能以root身份执行,而这不是正确的方式,并且存在巨大的安全风险,因为允许使用600/400权限以外的任何权限都会破坏使用SSH密钥的目的,从而危及密钥的安全性。

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

cp密钥文件.pem~/.ssh

对其执行sudo chmod 400 keyfile.pem。

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