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

当前回答

使用PuTTY登录。它很好,但需要几个步骤。

Get your .pem that was generated when you first made the EC2 instance. Convert the .pem file .ppk using PuttyGen since PuTTY does not read .pem. Open PuTTY and enter your Host Name which is your instance username + Public DNS (Ex. ubuntu@ec2-xxx-xxx-xxx-xxx.region.compute.amazonaws.com). Not your AWS account username. Then navigate to Connection > SSH > Auth. Then add your .ppk file. Click on Browse where it says "Private key file for authentication". Click Open and you should be able to immediately establish connection.

我使用PuTTY 0.66在Windows。

其他回答

默认权限不允许pem键。 你只需要更改权限:

Chmod 400 xyz.pem

如果是ubuntu实例,则使用:

SSH -i xyz。pem ubuntu@ec2-youraws.amazonaws.com

问题是文件上的权限集错误。

执行chmod 400 mykey.pem可以很容易地解决这个问题

此解决方案取自AWS说明:

要使SSH正常工作,密钥文件必须是不可公开的。chmod 400 mykey.pem

400通过使其仅为所有者只读来保护它。

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连接服务器。

我看到了这个问题背后的两个原因

1) access key没有正确的权限。具有默认权限的Pem密钥不允许进行安全连接。你只需要更改权限:

Chmod 400 xyz.pem

2)还要检查您是否使用正确的用户凭证登录。否则,在连接时使用sudo

Sudo SSH -i {keyfile} ec2-user@{远程主机ip地址}

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

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

chmod 400 pemkeyname.pem

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

sudo chmod 400 pemkeyname.pem

我希望这能正常工作。