一、问题描述
在部署OpenStack环境的时候,配置的静态IP是192.168.5.1,删除了这台虚拟机.
重新板建一个虚拟机,IP配置也配置为192.168.5.1.
使用真机连接 ssh 192.168.5.1出现如下报错
报错的大概意思是192.168.5.1的ECDSA主机密钥已更改,并且您已请求严格检查,远程主机发送的ECDSA密钥指纹信息是和本机的密钥指纹信息不一致
ssh链接的时候首先会验证公钥,如果公钥不对,那么就会报错,
二、解决办法
我们需要删除真机 ~/.ssh/known_hosts文件的192.168.5.1[需要远程的主机IP] 公钥信息
2.1 known_hosts是记录远程主机的公钥的文件
1. 第一次连接远程主机192.168.4.1,真机会把远程主机的ECDSA公钥信息添加到本机的 ~/.ssh/known_hosts文件中
Warning: Permanently added ‘192.168.4.1’ (ECDSA) to the list of known hosts.
三、扩展知识
3.1 id_rsa 本机生成的私钥文件
3.2 id_rsa.pub 本机生成的公钥文件
3.3 authorized_keys 这个文件存放的是可以免密登录本机的远程主机公钥信息
3.1.1 模型分析
假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;
为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作
要达到的目的:
A机器ssh登录B机器无需输入密码; 加密方式选 rsa|dsa均可以,默认dsa 单向登陆的操作过程(能满足上边的目的): 1、登录A机器 2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub 3、ssh-copy-id B机器IP地址 [本质是将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys] 4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.4.50 ).ssh]# ssh B主机IP