主机密钥验证失败 - 亚马逊EC2

时间:2015-03-17 17:15:56

标签: ssh amazon-ec2 git-bash

我正在使用win 7和git bash以及亚马逊EC2实例。我试着登录我的实例:

$ ssh -i f:mykey.pem ubuntu@ec2-52-10-**-**.us-west-2.compute.amazonaws.com
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
 Someone could be eavesdropping on you right now (man-in-the-middle attack)!
 It is also possible that a host key has just been changed.
 The fingerprint for the ECDSA key sent by the remote host is
 71:00:d7:d8:a------------------26.
 Please contact your system administrator.
 Add correct host key in /m/.ssh/known_hosts to get rid of this message.
 Offending ECDSA key in /m/.ssh/known_hosts:27
 ECDSA host key for ec2-52-10-**-**.us-west-2.compute.amazonaws.com has changed and you have request
 ed strict checking.
 Host key verification failed.

这样登录过去运行良好,但是在我重新启动EC2实例后,这个问题就开始了。我怎样才能再次使用它?

编辑:

$ ssh -i f:tproxy.pem ubuntu@ec2-52-10-**-**.us-west-2.compute.amazonaws.com
ssh: connect to host ec2-52-10-**-**.us-west-2.compute.amazonaws.com port 22: Bad file number

enter image description here

再次尝试:

The authenticity of host 'ec2-52-10-**-**.us-west-2.compute.amazonaws.com (52.10.**-**)' can't be
established.
ECDSA key fingerprint is d6:c4:88:-----------fd:65.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'ec2-52-10-**-**.us-west-2.compute.amazonaws.com,52.10.**-**' (ECDSA) t
o the list of known hosts.
Permission denied (publickey).

我现在该怎么办?

4 个答案:

答案 0 :(得分:7)

主机名有一个新的ssh密钥,因此ssh告诉你一些已经改变的东西。 提示在这里:

Offending ECDSA key in /m/.ssh/known_hosts:27

如果您确定另一方的服务器是可信的,则应删除/m/.ssh/known_hosts中的第27行。

答案 1 :(得分:5)

此错误表示自您上次登录此服务器后已更改的内容以及您尝试ssh到的服务器可能不是您认为的服务器。

有一点需要注意......
创建EC2实例时,没有为此实例分配固定IP 当您启动此实例时,它将获得(动态)IP号和基于该IP的DNS名称 如果关闭实例并在几小时后再次启动它,可能会获得新的IP和新的DNS名称

如果您仍尝试访问旧DNS名称/ IP ,则实际上是在尝试访问可能不属于您的服务器。
这将以您所拥有的相同的错误信息结束 (这可能是因为您将DNS条目指向旧IP,或者您正在使用尝试访问旧DNS名称/ IP的脚本,或者只是从历史记录中重复ssh命令...)

如果是这种情况,解决方案是使用弹性IP 您可以将弹性IP分配给您的服务器,这将强制它在重新启动之间保持其IP地址。

当您的(附加)服务器启动时,弹性IP是免费的 但是当连接的服务器关闭时,它会花费你一些小费用 这样做是为了确保您在不使用/不需要时“保留”IP

答案 2 :(得分:1)

在BeanStalk环境中,问题在于它引用了来自known_hosts中相应IP的密钥。但这已经改变了。因此,使用相同的键将不起作用。

~/.ssh/known_hosts删除IP密钥,然后通过ssh进行连接即可。

(基本上,~/.ssh/known_hosts中没有该条目时,它将创建一个新条目,从而解决冲突)

答案 3 :(得分:0)

键入以下命令来设置权限。将〜/ mykeypair.pem替换为密钥对私钥文件的位置和文件名。

chmod 400 ~/mykeypair.pem

在您的情况下,mykeypair.pem是tproxy.pem

我遇到了同样的问题,将pem文件设为私有后,它已修复。

有关SSH Key Permissions

的更多信息