amazon web服务-EC2实例不接受新的密钥对-拒绝权限(公钥)



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

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

我的客户没有存储库,因此,正如你所能想象的,为什么我不只是尝试大量的东西。如果我打破它,一切都会失去。

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

很抱歉这么无聊,但我赶时间,没有地方尝试。

提前谢谢。

编辑

我选择了"创建AMI…"的答案,只是因为这是我想要的答案。我喜欢这台旧机器可以保持(关闭),如果出了什么问题,我所要做的就是重新打开它。关于安装和卸载硬盘驱动器,我对另一个可能的答案投了赞成票,因为这是另一种方法,在某些情况下,也是唯一的方法。

成功实现SSH访问的步骤

  1. 停止运行实例
  2. 从中创建AMI(右键单击并选择Create Image)
  3. 创建后,我启动了它,并给出了与原始实例相同的细节
  4. 给它配上我的新钥匙对
  5. 重新打印了我分配的弹性IP(这是我唯一的服务,幸运的是非常简单)。前往
    弹性IP,看到了现有的IP(自最初的IP以来,它不再有任何分配实例已关闭。右键单击并选择关联地址,然后选择新的运行实例。)
  6. 已检查我是否有SSH访问权限

您不能向正在运行的实例添加新的密钥对,就像它在您指向的答案的注释中所说的那样。

恐怕,如果您无法联系到拥有原始.pem文件的人,您将无法通过SSH连接到该机器。

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

Amazon提供了在丢失私钥时连接到实例的指南。只要它是EBS支持的实例。请参阅此处:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-丢失的密钥对

这样做的一般程序是(从文档中):

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

最新更新