尝试SSH到Amazon Ec2实例 - 权限错误

Mat*_*rts 688 authentication permissions ssh amazon-ec2 amazon-web-services

这对某些人来说可能是一个非常简单的问题:)

我在Amazon EC2上创建了一个新的linux实例,并且作为其中一部分下载了.pem文件以允许我进入SSH.

当我试图ssh:

ssh -i myfile.pem <public dns>
Run Code Online (Sandbox Code Playgroud)

我有:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).
Run Code Online (Sandbox Code Playgroud)

这篇文章之后我尝试chmod +600 pem文件,但现在当我ssh我得到:

Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

我在这里做的男生错误是什么?.pem文件位于我的主文件夹中(在osx中​​).它的权限如下所示:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem
Run Code Online (Sandbox Code Playgroud)

Kof*_*Kof 1351

问题是文件上有错误的mod.

通过执行轻松解决 -

chmod 400 mykey.pem

取自亚马逊的指示 -

您的密钥文件不能公开查看以使SSH正常工作.如果需要,请使用此命令:chmod 400 mykey.pem

  • 400通过使其只读并且仅为所有者来保护它. (15认同)
  • 这个命令+`ssh -i YOUR_PEM_FILE.pem ec2-user @ YOUR_IP`解决了这个问题.也许这应该是公认的答案...... (3认同)
  • 非常感谢!chmod 400有什么作用?到mykey.pem? (2认同)

Til*_*ill 254

您可能使用错误的用户名登录:

  • 大多数Ubuntu图像都有一个用户 ubuntu
  • 亚马逊的AMI是 ec2-user
  • 大多数Debian图像都有root或者admin

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

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host
Run Code Online (Sandbox Code Playgroud)

HTH

  • 错误消息说明了一切:.pem证书文件不够受保护.按照下面的建议做chmod 400 xyz.pem. (43认同)
  • 或者ssh -i key.pem ubuntu @ servername (30认同)
  • 这不是解决方案 - 默认情况下,下载的密钥文件的文件权限为844.应该是400`chmod 500 <path_to_pem_file>`应该这样做. (12认同)
  • @allprog 对我来说这只会导致它说“权限被拒绝(公钥)”。 (3认同)

小智 61

我知道这是非常晚的游戏......但是这总是对我的作品:

步骤1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem
Run Code Online (Sandbox Code Playgroud)

第2步,简单地ssh in :)

ssh user_name@<instance public dns/ip>
Run Code Online (Sandbox Code Playgroud)

例如

ssh ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.

  • 在ssh-add¬/ .ssh/key.pem之后; 获取错误无法打开与身份验证代理的连接.eval`ssh-agent -s`报告SSH_AGENT_PID = 3409; ssh-add给出与上面相同的错误.........这里有任何帮助 (2认同)

bob*_*obo 37

好男人,唯一对我有用的是:

  1. 更改密钥的权限

    chmod 400 mykey.pem

  2. 确保使用ec2-user和正确的ec2-99 ...地址登录.当您登录并查看列出的实例时,ec2-99地址位于aws控制台的底部

    ssh -i mykey.pem ec2-user@ec2-99-99-99-99.compute-1.amazonaws.com


ren*_*ick 27

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

ssh -i your.pem root@ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

名称在AMI面板上可见的位置


小智 14

使用以下命令更改密钥文件的权限:

chmod 400 key-file-name.pem
Run Code Online (Sandbox Code Playgroud)

请参阅AWS文档以连接到实例:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux


小智 11

2022 年 2 月更新:

请参阅ssh 到 AWS 上的 EC2 实例的说明:

在此输入图像描述

然后,你可以找到“No.3”这样说:

在此输入图像描述

因此,请按照上面的“No.3”所述运行以下命令:

chmod 400 myKey.pem
Run Code Online (Sandbox Code Playgroud)


小智 10

在Windows中,您可以转到pem文件的属性,并转到“安全性”选项卡,然后单击“前进”按钮。

删除继承和所有权限。然后授予自己完全的控制权。毕竟SSL不会再给您相同的错误。


小智 7

我知道这个问题已经得到了回答,但对于那些已经尝试过这些问题的人来说,你仍然会得到令人讨厌的"Permission denied(publickey)".尝试使用SUDO运行命令.当然这是一个临时解决方案,您应该正确设置权限,但至少可以让您确定当前用户没有以您需要的权限运行(如您所假设的那样)

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

一旦你这样做,你会收到这样的消息:

Please login as the user "ec2-user" rather than the user "root"

这也很少记录.在这种情况下,只需这样做:

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

你会得到光荣的:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|
Run Code Online (Sandbox Code Playgroud)


Him*_*dar 6

在Mac终端中,做"chmod 400 xyz.pem"没有帮助我,它一直说许可被拒绝.对于ubuntu用户,我建议

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


Sye*_*iom 5

ssh -i /.pem user@host-machine-IP

我认为这是因为您输入了错误的凭据,或者您使用的是公钥而不是私钥,或者您的端口权限对所有 ssh 都是开放的。这对亚马逊不利。


Rya*_*yan 5

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

  • .ssh 目录 - 0700(仅限所有者)
  • 私钥/.pem 文件 - 0400(所有者只读)
  • 公钥/.pub 文件 - 0600(只能由所有者读写)

    chmod XXXX file/directory


小智 5

此错误背后可能有三个原因。

  1. 您使用了错误的密钥。
  2. 您的密钥没有正确的权限。您需要将其修改为 400。
  3. 您使用了错误的用户。Ubuntu 映像有一个用户ubuntu,亚马逊的 AMI 是ec2-user ,而 debian 映像有rootadmin


小智 5

除了其他答案之外,为了使其发挥作用,我还做了以下操作:

  • 如果您还没有,请将密钥复制到 .ssh 文件夹:

cp key.pem ~/.ssh/key.pem

  • 授予密钥适当的权限

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • 然后,添加密钥

ssh-add ~/.ssh/key.pem

现在您应该能够通过 ssh 连接 EC2(:


Cod*_*ker 5

在窗户里,

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