我的环境
host machine(宿主机) windows10
distance host(远程主机) CentOS Linux release 8.0.1905 (Core)
ssh(终端工具) cmder
今天重新安装了Centos8.0但是在使用ssh协议连接的时候出现了一下的报错信息:
λ ssh -p22 root@192.168.80.128
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
SHA256:+ZQle4gOP2UW/WsURz/Mbt6x3cTtiWXON/z0Iz7Z7eQ.
Please contact your system administrator.
Add correct host key in C:\\Users\\Machenike/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\Machenike/.ssh/known_hosts:3
ECDSA host key for 192.168.80.128 has changed and you have requested strict checking. Host key verification failed.
大致意识就是远程主机标识已经更改,而且远程主机192.168.80.128的ECDSA主机密钥已更改,并且您已请求严格检查,远程主机发送的ECDSA密钥指纹信息是和本机的密钥指纹信息不一致,导致主机校验秘钥校验失败。
我们在使用ssh连接远程主机的时候, 本地的宿主机会把远程主机的EDSA公钥信息添加到宿主机的家目录下的.ssh/known_hosts
文件中.当下次访问的时候,OpenSSH就会去核对公钥, 而我们重装了系统, 就会这种情况。
打开家目录下的.ssh
文件夹, 如果是windows一般都在C:\Users\<用户名>\.ssh
, 在这个里目录下有三个文件
id_rsa id_rsa.pub known_hosts
id_rsa
存放的是本机生成的私钥文件
id_rsa_pub
存放的是本机生成的公钥文件
known_hosts
存放的是访问过的主机公钥信息.
解决办法一:
最为简单粗暴的办法就是直接将known_hosts
文件直接删除, 但是如果我们下次连接以前已经认证过的主机的时候, 就需要重新认证。
解决办法二:
我们进入到known_hosts
文件中, 删除对应ip的rsa信息,例如我的就只需要删除192.168.80.128
即可。
192.168.80.128 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMEp5oIsPl+mkI7T0qAJ6IbDNCzaipuw1aFq......
解决办法三:
使用命令清除对应IP的旧的公钥信息, 其实这个和第二种方法是一样,不过这个是以命令行的形式,他们都是删除对应ip的公钥信息。例如我们删除192.168.80.128
旧的公钥信息。
λ ssh-keygen -R 192.168.80.128
# Host 192.168.80.128 found: line 3
C:\Users\Machenike/.ssh/known_hosts updated.
Original contents retained as C:\Users\Machenike/.ssh/known_hosts.old
λ ssh -p22 root@192.168.80.128
The authenticity of host '192.168.80.128 (192.168.80.128)' can't be established.
ECDSA key fingerprint is SHA256:+ZQle4gOP2UW/WsURz/Mbt6x3cTtiWXON/z0Iz7Z7eQ.
Are you sure you want to continue connecting (yes/no)?
我们使用ssh登录的时候,由于我们本机已经没有了关于192.168.80.128
对应的公钥信息,所以提示我们重新建立公钥信息, 我们输入yes再输入远程主机的密码就可以了。
root@192.168.80.128's password:
Activate the web console with: systemctl enable --now cockpit.socket
Last failed login: Mon Mar 30 07:00:51 CST 2020 from 192.168.80.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Mar 30 06:37:58 2020 from 192.168.80.1
Activate the web console with: systemctl enable --now cockpit.socket