21

我创建了自己的 EBS AMI,与另一个 AWS 账户共享,使用新密钥对基于此映像启动了新实例,现在当我尝试连接到这个新实例时出现错误:“服务器拒绝我们的密钥” .

这就是我所做的(一步一步):

  1. 在我的个人帐户中配置了新的 CentOS 6.3 服务器(使用我的个人密钥对)
  2. 已创建该服务器的 EBS AMI 映像
  3. 与我客户的帐户分享了这张图片
  4. 基于此共享图像 + 新密钥对在我的客户帐户中启动了新实例
  5. 新启动的实例不想采用新的密钥对。经过一些测试,我认为它接受了我的个人密钥对。

如何从我的图像中创建新实例以接受新的密钥对?我什至尝试在原始图像中删除“.ssh/authorized_keys”文件,在没有公钥的情况下基于该图像启动新实例,但仍然没有成功。

请告知如何创建不会附加到旧密钥对的图像

4

10 回答 10

40

我对该错误消息有类似的问题,这就是我修复它的方法。希望这对您或其他被卡住并在这里找到方式的人有所帮助:

  1. 在 AWS 控制台中确保您的实例健康且正在运行
  2. 检查您是否使用了正确的公有 DNS 地址,在您单击实例时列出
  3. 从左侧选择安全组,然后单击要使用的安全组
  4. 单击入站选项卡
  5. 从 Create a new rule: 对话框中选择 SSH
  6. 在源中输入您的 IP 地址和 CIDR 值。如果只是您的网络上没有 NAT,只需使用 32 作为您的 CIDR(例如 ?.?.?.?/32)
  7. 单击添加规则
  8. 单击应用规则更改
  9. 右键单击您的实例并选择创建映像 (EBS AMI)
  10. 在创建映像向导中为其指定一个映像名称,然后单击创建
  11. 片刻之后,从 AWS 控制台的左侧导航栏中选择 AMI
  12. 右键单击新的 AMI,然后单击启动实例
  13. 在请求实例向导上单击继续,直到您必须创建密钥对
  14. 选择一个密钥对并记下它(注意:如果您还没有此密钥对的 .pem 文件,则需要通过选择左侧导航栏上的密钥对、创建密钥对等来生成一个新文件。获取 .pem 文件)
  15. 使用您为 IP 地址创建的规则选择安全组(CIDR 为 32 - 无子网掩码)
  16. 单击继续,然后在下一个屏幕上单击启动
  17. 返回 Instances 视图并等待您的 Instance 完全初始化并运行良好
  18. 打开 PuttyGEN
  19. 点击工具栏中的转换,然后导入密钥
  20. 在文件浏览器中导航到您的 .pem 密钥并打开它
  21. 从参数框中选择 SSH-1 (RSA)
  22. 将您的密钥对名称放在密钥注释框中(仅用于良好的内务管理)
  23. 单击保存私钥并将 .ppk 文件保存在文件系统的某个位置
  24. 打开腻子
  25. 在主机名框中输入您的 EC2 实例的公有 DNS
  26. 输入端口 22
  27. 从 Connection Type 框中勾选 SSH 单选按钮
  28. 从左侧导航栏中的连接树中单击 SSH
  29. 点击授权
  30. 单击身份验证参数框中的浏览,然后打开您的 .ppk 文件
  31. 单击左侧导航栏中的会话
  32. 在 Saved Sessions 文本框中输入此连接的名称,然后单击 Save(这样您就不必每次都通过 putty 连接设置,只需双击您保存的连接 - 对于那些不知道的人)
  33. 点击打开
  34. 当提示输入登录名时,您可能会使用“ec2-user”或“ubuntu”(提示:使用“root”,您可能会收到一条消息,告诉您应该使用哪个用户名!)
  35. 无需密码,.ppk 文件将对您进行身份验证
  36. 希望您现在已连接到 EC-2 实例并且一切顺利!
于 2013-01-08T16:40:40.780 回答
14

我在使用新的 SUSE 实例时遇到了这个问题。我终于能够使用用户“root”进行连接。它一直拒绝 ec2-user。

于 2014-01-09T17:17:01.990 回答
12

这意味着您没有使用正确的用户名登录您的 ec2 实例。这是您可以在 putty 中用于连接到 ec2 实例的用户列表 对于 Amazon Linux AMI,用户名为ec2-user。对于 RHEL5 AMI,用户名是 root 或ec2-user。对于 Ubuntu AMI,用户名为ubuntu。对于 Fedora AMI,用户名是fedoraec2-user。对于 SUSE Linux,用户名是rootec2-user。否则,如果 ec2-user 和 root 不起作用,请咨询 AMI 提供商。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingPuTTY

于 2016-03-07T19:28:01.547 回答
3

由于您的 AMI 源自社区 AMI 而不是官方公共 AMI,因此可能尚未设置为在实例启动时复制 ssh 密钥,或者它使用不同的机制来执行此操作。

我的理解是,要在启动时复制 ssh 密钥,必须在实例本身内部运行一些 shell 脚本,如此处简要描述

AMI 描述页面提到它已经“启用了 cloud-init”,所以也许有一种方法可以通过 CloudInit 来实现。请参阅此处的文档。

于 2012-07-23T17:51:32.797 回答
2

我遇到了这个问题,结果我输入的是 ec2_user,而它本来应该是 ec2-user

于 2018-06-27T09:35:29.880 回答
0

默认情况下,亚马逊会将新密钥附加到现有密钥中。我们可以通过在其他活动实例上安装驱动器来解决它,并从文件 .ssh/authorized_keys 中删除内容并添加新密钥的 pem 密钥文件。

于 2017-05-08T10:06:00.737 回答
0

在我的情况下,我使用的是 Elastic Beanstalk,并且在启动它之前没有将我的密钥对分配给我的配置。要解决这个问题:

  1. 在弹性豆茎中转到您的应用程序
  2. 导航到配置
  3. 滚动到安全并选择编辑
  4. 将您的密钥对添加到实例
  5. 单击保存并在应用配置后再次尝试连接
于 2021-04-25T17:02:53.900 回答
0

我通过选择用户作为 AWS ubuntu machin 的 ubuntu 解决了我的问题。因此,请验证正确的用户帐户和机器类型。

请参阅以下链接: https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html

于 2019-08-16T11:46:48.613 回答
0

我也只是在更新我的案例作为答案。我曾经使用主机名ec2-38-239-22-12.us-east-2.compute.amazonaws.com(公共 IPv4 DNS)与腻子中保存的部分进行连接。昨天,在今天早上启动实例(aws)之后,我停止了实例并在今天早上尝试连接时开始面临这个问题。

解决方案: 公共 IPv4 DNS 记录 ( ec2-38-239-22-12.us-east-2.compute.amazonaws.com) 在重新启动后更改。登录到 AWS 控制台并使用新记录更新腻子部分。这解决了问题!

于 2021-02-28T11:20:02.227 回答
0

显示Server Refused our key可能只是一个原因。

那就是:服务器的密钥对用户名组合不正确,我遇到过很多次。

于 2016-10-24T09:03:30.950 回答