警告:未经保护的私人密钥文件!尝试SSH到Amazon EC2实例时

问题描述 投票:155回答:8

我正在努力在Amazon EC2实例上设置Panda。我昨晚设置了我的帐户和工具,使用SSH与我自己的个人实例进行交互没有任何问题,但是现在我没有被允许进入Panda的EC2实例。 Getting Started with Panda

我收到以下错误:

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

Permissions 0644 for '~/.ec2/id_rsa-gsg-keypair' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

为了昨晚进入我的个人实例,我已经将我的密钥对chm编译为600,并且在长度上进行了实验,将权限设置为0甚至生成新的密钥字符串,但似乎没有任何工作。

任何帮助都将是一个很大的帮助!


嗯,好像除非在目录上将权限设置为777,ec2-run-instances脚本无法找到我的密钥文件。我是SSH的新手,所以我可能会忽略一些东西。

ssh amazon-web-services amazon-ec2 chmod
8个回答
191
投票

为了昨晚进入我的个人实例,我已将我的密钥对写入600

这就是应该的样子。

EC2 documentation我们有“如果您正在使用OpenSSH(或任何合理的偏执SSH客户端),那么您可能需要设置此文件的权限,以便它只能由您读取。”您链接到亚马逊文档的链接的熊猫文档,但实际上并没有表明它的重要性。

这个想法是密钥对文件就像密码,需要保护。因此,您使用的ssh客户端要求保护这些文件,并且只有您的帐户才能读取它们。

将目录设置为700确实应该足够了,但只要文件是600,777就不会受到伤害。

您遇到的任何问题都是客户端问题,因此请确保包含本地操作系统信息以及任何后续问题!


50
投票

确保包含私钥文件的目录设置为700

chmod 700 ~/.ec2

27
投票

要解决此问题,1)您需要将权限重置为默认值:

sudo chmod 600 ~/.ssh/id_rsa sudo chmod 600 ~/.ssh/id_rsa.pub

如果您收到其他错误:您确定要继续连接(是/否)吗?是无法将主机添加到已知主机列表(/home/geek/.ssh/known_hosts)。

2)这意味着该文件的权限也设置不正确,可以使用以下方法进行调整:

sudo chmod 644 ~/.ssh/known_hosts

3)最后,您可能还需要调整目录权限:

sudo chmod 755 ~/.ssh

这应该让你恢复正常运行。


13
投票

私钥文件应该受到保护。在我的情况下,我已经使用了public_key认证很长一段时间,我曾经将权限设置为600(rw- --- ---)私钥和644(rw- r-- r--)和主文件夹中的.ssh文件夹将获得700个权限(rwx --- ---)。要进行此设置,请转到用户的主文件夹并运行以下命令

为.ssh文件夹设置700权限

chmod 700 .ssh

为私钥文件设置600权限

chmod 600 .ssh/id_rsa

为公钥文件设置644权限

chmod 644 .ssh/id_rsa.pub

4
投票

我也遇到了同样的问题,但我通过将密钥文件权限更改为600来解决此问题。

sudo chmod 600 /path/to/my/key.pem

链接:http://stackabuse.com/how-to-fix-warning-unprotected-private-key-file-on-mac-and-linux/


1
投票

在Windows上,尝试使用git bash并在那里使用Linux命令。简单的方法

chmod 400 *****.pem

ssh -i "******.pem" [email protected]

1
投票

将您的私钥,公钥,known_hosts保存在同一目录中,并尝试登录如下:

ssh -I(small i) "hi.pem" ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
  • 在这个意义上相同的目录,cd /Users/prince/Desktop。现在输入ls命令,你应该看到**.pem **.ppk known_hosts

注意:您必须尝试从同一目录登录,否则您将收到权限被拒绝错误,因为它无法从您当前的目录中找到.pem文件。


如果您希望能够从任何目录进行SSH,您可以将以下内容添加到~/.ssh/config文件中...

Host your.server
HostName ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ec2/id_rsa-gsg-keypair
IdentitiesOnly yes

现在,只需键入ssh your.server(或“Host”之后放置的任何名称),无论目录位于何处,都可以通过SSH连接到服务器。


0
投票

我正在考虑其他事情,如果您尝试使用不存在的用户名登录,则这将是您将获得的消息。

所以我假设您可能尝试使用ec2-user进行ssh但我记得最近大多数centos AMI例如使用centos用户而不是ec2-user

所以,如果你是ssh -i file.pem centos@public_IP,请告诉我你正在使用正确的用户名ssh,否则这可能是你看到这样的错误信息的强烈理由,即使你的〜/ .ssh / id_rsa或file.pem拥有正确的权限


0
投票

对于偶然发现此事的人来说,只需注意事项:

如果您尝试使用已与您共享的密钥进行SSH,例如:

ssh -i /path/to/keyfile.pem user@some-host

其中keyfile.pem是与您共享的私人/公共密钥,并且您正在使用它进行连接,请确保将其保存到~/.ssh/chmod 777

尝试在我的机器上的其他地方保存文件时使用该文件是OP的错误。不确定它是否直接相关。

© www.soinside.com 2019 - 2024. All rights reserved.