我创建了自己的EBS AMI,与另一个AWS帐户共享,并使用新密钥对基于该映像启动了NEW实例,现在当我尝试连接到该新实例时,我得到了错误消息:"服务器拒绝了我们的密钥" 。
这是我所做的(逐步):
在我的个人帐户(带有我的个人密钥对)中配置了新的CentOS 6.3服务器
创建该服务器的EBS AMI映像
与我的客户的帐户共享了此图片
基于此共享映像+新密钥对,在我的客户帐户中启动了新实例
新启动的实例不希望采用新的密钥对。经过一些测试,我认为它接受我的个人密钥对。
如何从映像中创建新实例以接受新的密钥对?
我什至尝试删除原始映像中的" .ssh / authorized_keys"文件,基于该映像启动新实例,但没有公钥,仍然没有成功。
请告知如何创建不会附加到旧密钥对的图像
您如何创建新的密钥对? 您是让AWS创建它还是使用其他工具创建它的?
您好David,我在启动新实例时使用AWS创建了它。 没有手动做。
您正在使用什么ssh客户端?
当您查看/home/ec2-user/.ssh/authorized_keys时,您看到新的公共密钥,旧的个人密钥,还是同时看到这两者?
在两个位置:"。ssh / authorized_keys"和" /home/ec2-user/.ssh/authorized_keys"只有一个-旧的个人公共密钥
您是从现有的公共AMI开始还是从头开始创建自己的AMI?
我使用了这个AMI:aws.amazon.com/amis/centos-6-3-ebs-backed
我遇到了同样的问题。 我们得出结论了吗?
我对该错误消息也有类似的问题,这是我如何解决它。希望这对您或其他陷入困境的人有所帮助:
在AWS Console中确保实例运行正常并正在运行
检查您是否使用了正确的公共DNS地址(单击实例时列出)
从左侧选择安全组,然后单击要使用的安全组
单击入站选项卡
在"创建新规则:"对话框中,选择" SSH"
在源代码中输入您的IP地址和CIDR值。如果只是它,而您的网络上没有NAT,则使用32作为CIDR(例如?。?....?/ 32)。
点击添加规则
单击"应用规则更改"
右键单击您的实例,然后选择创建映像(EBS AMI)
在"创建图像"向导中为其指定图像名称,然后单击"创建"。
片刻之后,从AWS控制台的左侧导航栏中选择AMI。
右键单击新的AMI,然后单击启动实例。
在"请求实例向导"上,单击"继续",直到必须创建密钥对为止
选择一个密钥对并记下它
(注意:如果尚未获得此密钥对的.pem文件,则需要通过选择左侧导航栏上的密钥对,创建密钥对等来生成一个新的.pem文件。)
使用您为IP地址创建的规则选择安全组(CIDR为32-无子网掩码)
单击继续,然后在下一个屏幕上单击启动。
返回到"实例"视图并等待,直到您的实例已完全初始化且运行状况良好
打开PuttyGEN
点击工具栏中的转化,然后点击导入键
在文件浏览器中导航到您的.pem键,然后将其打开
从"参数"框中选择SSH-1(RSA)
将您的密钥对名称放在"密钥注释"框中(仅用于保管好房间)
单击"保存私钥",然后将.ppk文件保存在文件系统中的某个位置
腻子
在"主机名"框中输入您的EC2实例的公共DNS
输入端口22
在"连接类型"框中,勾选" SSH"单选按钮
在左侧导航栏中的"连接"树中单击" SSH"
点击验证
单击"身份验证参数"框中的"浏览",然后打开您的.ppk文件
点击左侧导航栏中的会话
在"已保存的会话"文本框中输入此连接的名称,然后单击"保存"(这样您不必每次都进行腻子连接设置,只需双击已保存的连接即可-对于那些不知道的对象)
点击打开
当提示您输入登录名时,您可能会使用" ec2-user"或" ubuntu"(提示:使用" root",您可能会收到一条消息,告诉您应使用哪个用户名!)
无需密码,.ppk文件将对您进行身份验证
希望您现在已连接到EC-2实例,一切顺利!
不知道为什么没有这个例外。对我来说很棒。
听到那个消息很开心 :)
"提示:使用root,您可能会收到一条消息,告诉您应该使用什么用户名!" -非常有创意!
太棒了,ec2-user是用户。
从字面上看,这是Internet上最佳的故障排除步骤。
你太客气了!很高兴它有所帮助!
我认为您可以删除"如果您的网络上没有NAT,则只需使用32作为CIDR(例如?。?。?。?/ 32)"就可以了-不管您是否在NAT后面只关系到您来自哪个公共IP,其中只有一个
还要创建图像只是出于谨慎考虑吗?它与SSH没有关系吗?否则,谢谢!
我是唯一为此不幸的人吗?不起作用?
我在新的SUSE实例中遇到了这个问题。我终于能够使用用户'root'进行连接。它一直拒绝ec2-user。
发现这是一个有用的答案。我选择了Ubuntu 12.04映像,并且不得不使用ubuntu用户而不是ec2-user登录。
这意味着您没有使用正确的用户名登录ec2实例。这是您可以用腻子连接到ec2实例的用户列表
对于Amazon Linux AMI,用户名是ec2-user。
对于RHEL5 AMI,用户名是root或ec2-user。
对于Ubuntu AMI,用户名是ubuntu。
对于Fedora AMI,用户名是fedora或ec2-user。
对于SUSE Linux,用户名是root或ec2-user。
否则,如果ec2-user和root不起作用,请与AMI提供程序联系。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingPuTTY
就我而言,这是"中心"。
由于您的AMI来自社区AMI,而不是正式的公共AMI,因此可能没有在实例启动时设置它来复制ssh密钥,或者它使用了不同的机制来执行此操作。
我的理解是,要在启动时复制ssh密钥,必须在实例本身内部运行一些shell脚本,如此处简要描述。
AMI描述页面提到它已经"启用了cloud-init",因此也许可以通过CloudInit来实现。请参阅此处的文档。
好的,非常感谢大卫的帮助。我将尝试弄清楚还有什么可以做的。
我遇到了这个问题,原来我是ec2-user的时候才输入ec2_user
我一直忘记,有时用户是" centos"而不是" ec2-user"。这虽然使我记忆犹新。
我通过选择用户作为AWS ubuntu machin的ubuntu解决了我的问题。 因此,请验证正确的用户帐户和机器类型。
请查看以下链接:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html
默认情况下,Amazon将在新密钥后添加现有密钥。 我们可以通过将驱动器安装在其他活动实例上来解决该问题,并从文件.ssh / authorized_keys中删除内容,并添加新密钥的pem密钥文件。
仅显示Server Refused我们的密钥只是一个原因。
那就是:服务器的密钥对和用户名组合不正确,我已经遇到很多次了。
这不能解决问题。
我确定您的组合不正确,或者您使用的密钥对不正确
这实际上对我来说是正确的答案,我输入的是ec2_user而不是ec2-user。因此,否决票有点苛刻。