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

当前回答

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

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

其他回答

在windows中,

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

你可以从ASW指南中找到答案。 400通过使其仅为所有者只读来保护它。

chmod 400 mykey.pem

您可能使用了错误的用户名登录,因为-

大多数Ubuntu映像都有一个用户Ubuntu 亚马逊的AMI是ec2-user 大多数Debian映像都有根或管理员

登录时,需要调整ssh命令:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host

您需要在密钥文件(myfile.pem)上设置一些保守的权限。 试着把它改成r-------- 或400

除了其他答案之外,以下是我为了让它起作用所做的事情:

复制密钥到.ssh文件夹,如果你还没有:

cp的关键。pem ~ / . ssh / key.pem

给密钥适当的权限

Chmod 400 ~/.ssh/key.pem

启动ssh-agent(感谢https://stackoverflow.com/a/17848593)

Eval ssh-agent -s ssh-add

然后,添加密钥

ssh-add ~ / . ssh / key.pem

现在你应该能够ssh EC2 (: