我在Amazon EC2上创建了一个新的linux实例,并下载了.pem文件以允许我SSH登录。

当我试图ssh与:

ssh -i myfile.pem <public dns>

我有:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

在这篇文章之后,我尝试chmod +600 .pem文件,但现在当我ssh时,我只是得到

Permission denied (publickey).

我犯了什么小学生的错误? pem文件在我的主文件夹中(在macOS中)。它的权限是这样的:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem

当前回答

在windows中,

右键单击pem文件。然后选择属性。 选择安全选项卡——>单击“高级”按钮——>禁用继承——>删除该对象的所有继承权限 点击“添加”按钮——>选择主体——>在输入框中输入用户名——>点击“检查名称”按钮——>点击“确定”——>点击“确定”——>点击“确定”——>点击“确定”

其他回答

Windows 10。

. 右键单击文件 . 属性—>security—>禁用继承 .现在添加->你的用户(窗口)只有“读” . 单击ok

现在它为我工作了

在Windows下,打开。pem文件,右键单击并选择属性。

在安全选项卡中进入高级 禁用并删除继承。 然后按“添加”,选择一个主体。 添加帐户用户名作为对象名称,并按确定。 给予所有的许可。 应用并保存更改。

现在检查上面的命令

我知道这个问题已经被回答了,但是对于那些已经尝试过所有这些方法的人来说,你仍然会得到恼人的“拒绝许可(公钥)”。尝试使用SUDO运行您的命令。当然,这是一个临时的解决方案,您应该正确地设置权限,但至少可以让您确定当前用户没有运行所需的权限(正如您所假设的那样)。

Sudo SSH -i amazonec2。pem ec2 - xxx - xxx - xxx xxx.us -西方- 2. compute.amazonaws.com

一旦你这样做了,你会得到这样的消息:

请以“ec2-user”用户而不是“root”用户登录。

这也鲜有文献记载。在这种情况下,只需这样做:

Sudo SSH -i amazonec2。Pem ec2-xxx-xxx-xxx-xxx -us -west-2.compute.amazonaws.com -l ec2-user

你会得到光荣的:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|

您不是root用户,然后运行此命令

sudo chmod 400 -R myfile.pem

如果不是root用户,则执行此命令

chmod 400 -R myfile.pem

SSH -i /。pem user@host-machine-IP

我想可能是因为你输入了错误的凭证 或者,您使用的是公钥而不是私钥 或者,您的端口权限是开放的ALL到ssh。这对亚马逊不利。