首先,我是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访问的步骤:
- 停止运行实例
- 从中创建AMI(右键单击并选择Create Image)
- 创建后,我启动了它,并给出了与原始实例相同的细节
- 给它配上我的新钥匙对
- 重新打印了我分配的弹性IP(这是我唯一的服务,幸运的是非常简单)。前往
弹性IP,看到了现有的IP(自最初的IP以来,它不再有任何分配实例已关闭。右键单击并选择关联地址,然后选择新的运行实例。) - 已检查我是否有SSH访问权限
您不能向正在运行的实例添加新的密钥对,就像它在您指向的答案的注释中所说的那样。
恐怕,如果您无法联系到拥有原始.pem
文件的人,您将无法通过SSH连接到该机器。
可以从中创建AMI
映像,并使用新密钥对从该AMI
创建新机器。在那里,您可以进行所需的所有更改,然后将使用它的任何服务指向新机器。验证新机器符合标准后,可以终止旧机器。
Amazon提供了在丢失私钥时连接到实例的指南。只要它是EBS支持的实例。请参阅此处:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-丢失的密钥对
这样做的一般程序是(从文档中):
您必须停止实例,分离其根卷并将其作为数据卷附加到另一个实例,修改authorized_keys文件,将卷移回原始实例,然后重新启动实例。