今天重装了一台服务器,由debian改为ubuntu,使用阿里云重新绑定了密钥对,导致服务器连接失败。错误信息如下:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
……
Host key verification failed.
这个报错信息说明 服务器的主机密钥(Host Key)发生了变化,SSH 客户端发现和之前保存的不一致,所以拒绝连接。常见原因有:
- 服务器重装过系统,SSH 的 host key 变了。
- 更换了 IP 或 DNS 指向,连接到的机器其实不是原来的。
- 安全风险:如果不是你自己操作导致的变动,有可能存在中间人攻击(MITM)。
解决办法
如果你确认这是自己的服务器(比如你刚刚重装了系统或者更换了 SSH 配置),可以安全地删除旧的 key 再重新连接。
执行命令:
ssh-keygen -R server-ip
注意把server-ip改为你的服务器ip地址。这个命令是从~/.ssh/known_hosts文件中删除之前的连接记录,也可以直接编辑这个文件删除。
然后再次连接,会提示你保存新的主机指纹,输入 yes 即可。
如果提示Permissions 0644 for ....... are too open.这是证书文件的权限太大了,SSH 要求私钥文件必须 仅自己可读写,不能被其他用户访问。
执行下面的命令,修改私钥文件权限(只允许自己读写):
chmod 600 /Users/wujie/.ssh/aliyun99.pem
注意改为你自己的密钥路径,最后再次连接应该就可以了。