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

当前回答

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

其他回答

如果你在windows 10上使用ubuntu子系统,如果你sudo chmod将密钥更改为400,那么它可能仍然会出现“Load key pem: Permission denied”的错误。

Ls -al,你会看到root现在拥有文件!咀嚼它到您的登录用户,然后它将工作。

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

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

此解决方案取自AWS说明:

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

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

密钥文件不应该公开可见,所以使用权限400

chmod 400 keyfile.pem

如果以上命令显示权限错误使用

sudo chmod 400 keyfile.pem

现在ssh到ec2机器,如果您仍然面临这个问题,请使用ec2-user

SSH -i keyfile。pem ec2 - user@ec2 - 12 - 34 - 56 - 78. -计算- 1. - amazonaws.com

如果没有权限别忘了sudo。 Sudo SSH -i myfile。pem < < ssh_user > > @ < >

只需将pem文件的权限更改为0600,只允许允许的用户使用,它就会像魅力一样工作。

sudo chmod 0600 myfile.pem

然后尝试ssh,它会完美地工作。

ssh -i myfile.pem <<ssh_user>>@<<server>>