我从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 10上,cygwin的chmod和chgrp对我来说还不够

右键单击文件->财产->安全性(选项卡)并删除除我的活动用户之外的所有用户和组。

其他回答

密钥只需由您读写:

chmod 600 ~/.ssh/id_rsa

或者,密钥只能由您读取(这也会阻止您的写访问):

chmod 400 ~/.ssh/id_rsa

600在大多数情况下似乎更好,因为您不需要稍后更改文件权限来编辑它

手册页中的相关部分(man-ssh)

~/.ssh/id_rsa包含用于身份验证的私钥。这些文件包含敏感数据,用户应能阅读,但不能其他人可以访问(读/写/执行)。ssh只会忽略私有密钥文件(如果是)其他人可以访问。可以指定生成将用于加密敏感密钥的密钥时的密码短语此文件的一部分使用3DES。~/.ssh/identity.pub~/.ssh/id_dsa.pub~/.ssh/id_ecdsa.pub~/.ssh/id_rsa.pub包含用于身份验证的公钥。这些文件不敏感任何人都可以(但不需要)阅读。

我从另一台mac迁移后也遇到了同样的问题。它被我的钥匙阻止连接github。

我重置了如下权限,现在运行良好。

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

对于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

希望,会帮助某人

除了公认的答案之外,如果您已经完成了所有建议的方法,并且在windows上使用了“wsl”ubuntu,那么可以在ssh命令中附加“sudo”,例如

sudo ssh-i xxx.pemxxxx@xxxx.compute-1.amazonaws.com

我用sudo成功了

sudo chmod 400 pem-file.pem
sudo ssh -i pem-file.pem username@X.X.X.X