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

当前回答

好吧,唯一对我有用的是:

修改密钥的权限 Chmod 400 mykey.pem 请确保使用ec2-user和正确的ec2-99登录…地址。当您登录并看到您的实例被列出时,ec2-99地址在aws控制台的底部 SSH -i mykey。pem ec2 - user@ec2 - 99 - 99 - 99 - 99. -计算- 1. amazonaws.com

其他回答

嗯,看了你的帖子描述,我觉得你犯了两个错误:-

设置正确的私钥权限。 下面的命令将帮助您设置正确的文件权限。 Chmod 0600 mykey.pem 您试图登录的ec2用户错误。 查看您的调试日志,我认为您已经生成了一个Amazon linux实例。该实例类型的默认用户是ec2-user。如果实例是ubuntu,那么默认用户就是ubuntu。 SSH -i privatekey。pem default_ssh_user@server_ip

Note: For an Amazon Linux AMI, the default user name is ec2-user. For a Centos AMI, the default user name is centos. For a Debian AMI, the default user name is admin or root. For a Fedora AMI, the default user name is ec2-user or fedora. For a RHEL AMI, the default user name is ec2-user or root. For a SUSE AMI, the default user name is ec2-user or root. For an Ubuntu AMI, the default user name is ubuntu. Otherwise, if ec2-user and root don't work, check with the AMI provider.

来源:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

检查表:

您是否使用正确的私钥.pem文件? 它的权限设置正确吗?(我的亚马逊品牌ami使用644个,但红帽必须至少600或400个。不了解Ubuntu。) 您在ssh行中使用的用户名是否正确?Amazon-branded = "ec2-user", Red Hat = "root", Ubuntu = " Ubuntu "。用户可以指定为“ssh -i pem usename@hostname”或“ssh -l username -i pem hostname”

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

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

sudo chmod 400 -R myfile.pem

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

chmod 400 -R myfile.pem

SSH密钥和文件权限最佳实践:

.ssh目录- 0700(仅所有者) 私钥/。Pem文件- 0400(仅由所有者读取) 公钥/。Pub文件- 0600(仅由所有者读写) chmod XXXX文件/目录