EC2实例不接受新密钥对 - 权限被拒绝(公钥)

时间:2014-04-12 15:44:54

标签: amazon-web-services amazon-ec2

首先,我是AWS的新生儿(两天前开始研究它)。我的客户需要一个新的Drupal 6模块,我已经完成了,我只需要上传它并设置一些东西。我的客户给了我一个亚马逊的用户名和密码,所以我认为他们使用的是AWS。

我可以看到正在运行的实例,我已经按照Amazon文档添加了一个新的密钥对,并为SSH访问添加了一个自定义IP规则。问题是,当我尝试通过ssh连接一个非常简单和基本的命令

ssh -i taskey.pem ec2-user@ec-x-x-x-x...amazonaws.com

响应是

Permission denied (publickey).

我环境的问题:

  • 与正在运行的实例关联的安全组上的IP地址的现有SSH规则
  • 新密钥对已添加到正在运行的实例
  • key.pem文件具有0600权限
  • 我知道这是一台Centos机器,因为当我ping该网站时,响应的IP部分就是这样。因此,为什么我使用用户名ec2-user
  • 以防万一,我也试过ubuntu和root。

阅读一些内容,似乎你不能只是神奇地将新的密钥对添加到正在运行的实例中。我的运行实例有一个现有的公钥,但它是由另一个工人在过去创建的,我无法联系他们。

我的客户端没有存储库,因此,正如您可以想象的那样,为什么我不只是尝试大量的事情。如果我打破它,一切都会迷失。

这个answer建议删除旧密钥对(我没有.pem文件)。但我不知道这会带来什么后果。

很抱歉这样的小说,但我很匆忙,没有空间去尝试。

提前致谢。

修改

我选择了“创建一个AMI ......”的答案,因为这是我选择的那个。我喜欢旧机器可以保持(关闭)的事实,如果出现任何问题,我只需要再打开它。关于安装和卸载硬盘驱动器,我最后选择了另一个可能的答案,因为这是另一种方式,在某些情况下,这是唯一的方法。

实现 SSH成功​​访问 的步骤:

  1. 停止运行实例
  2. 从中创建AMI(右键单击并选择“创建图像”)
  3. 创建完成后,我启动了它,并为其提供了与原始实例相同的细节
  4. 用我的新密钥对提供
  5. 重新指出我指定的弹性IP(这是我唯一的服务,幸运的是非常简单)。去了 弹性IP,看到了现有的IP(自原始IP以来不再分配任何东西) 实例被关闭了。右键单击它并选择Associate Address并选择新的运行 来自与关联列表中创建的AMI的实例。)
  6. 选中我有SSH访问权限。

2 个答案:

答案 0 :(得分:2)

您无法向正在运行的实例添加新密钥对 - 就像您在指向的答案comments中所说的那样。

我担心如果您无法联系拥有原始.pem文件的人,您将无法通过SSH连接到该计算机。

可以从中创建AMI图片,并使用新密钥对从AMI创建新计算机。在那里,您可以进行所需的所有更改,然后将使用它的任何服务指向新计算机。验证新机器达到标准后,您可以终止旧机器。

答案 1 :(得分:1)

亚马逊提供了在您丢失私钥时连接到实例的指南。只要它是EBS支持的实例。见这里:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair

这样做的一般程序是(来自文档):

  

您必须停止实例,分离其根卷并将其作为数据卷附加到另一个实例,修改authorized_keys文件,将卷移回原始实例,然后重新启动实例。