我在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

当前回答

解决这个问题的方法是将.pem文件移到apps目录中。fooapp是我的应用程序的名字。我把它直接放在那里。

其他回答

在Mac终端,执行“chmod 400 xyz。“Pem”并没有帮到我,它一直说拒绝许可。对于ubuntu用户,我建议

ssh-add xyz.pem SSH -i xyz。Pem ubuntu@ec2-54-69-172-118.us-west-2.compute.amazonaws.com(注意用户是ubuntu)

Linux用户使用。pem文件连接服务器的简单步骤如下:

步骤1:拷贝到pem文件的位置,并将其复制到home .ssh位置。

cp example.pem ~/.ssh/example.pem

步骤2:修改权限

chmod 400 ~/.ssh/example.pem

步骤3:执行以下命令

ssh -i ~/.ssh/example.pem ec2-user@host.com

因为这个命令太长了,所以你应该使用以下命令创建这个的别名:

 vim ~/.bashrc

最后用下面的方式写同样的命令。

alias sshConnect='ssh -i ~/.ssh/example.pem ec2-user@host.com'

现在重新启动系统并使用sshConnect连接服务器。

这只是您的aws pem密钥的权限问题。

使用以下命令将pem密钥的权限更改为400即可。

chmod 400 pemkeyname.pem

如果您没有权限更改文件的权限,您可以使用sudo像下面的命令。

sudo chmod 400 pemkeyname.pem

我希望这能正常工作。

看看这篇文章。您不使用公共DNS,而是使用表单

ssh -i your.pem root@ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com

在AMI面板上可以看到名字的地方

我知道这个问题已经被回答了,但是对于那些已经尝试过所有这些方法的人来说,你仍然会得到恼人的“拒绝许可(公钥)”。尝试使用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
  ___|\___|___|