今天用ssh命令登录一台此前连接过嘚服务器失败,出现下面的错误提示
从提示看很明显,是RSA key不匹配
根据提示查看本机/home/user/.ssh/目录下,查看有如下3只文件:
从文件名及查看文件内容可以看出:
1前两个是用ssh-keygen命令生成的私钥和公钥;
2,known_hosts是ssh访问过的PC的公钥记录当下次访问相同PC时ssh会核对公钥,如果不同则发出警告避免受到DNS Hijack攻击;
从我们遇到的错误看,明显是known_hosts出了问题
简单粗暴,如果想快速解决这个问题可以采用
意思是,known_hosts文件的第6行发生冲突因此,有两个方法:
(1)删除此行所记录的公钥:
删除后的效果其实等同于方法1,删除后再次连接时会记录新的公钥;
(2)将此行所記录的公钥替换为想连接的PC的公钥:
对比了对方PC上的/home/user/.ssh/id_rsa.pub文件发现和成功连接所生成存放在known_host中的公钥有差异,所以放弃这个方法
但可以用仩述方法(1)中生成的公钥的替换,如果你想来回倒腾下的话其实结果和方法(1)相同;
其他博客里有介绍修改ssh配置的两种方法,但我嘗试下来都失败了不过,仍然分享在这里如果有兴趣研究的话,可以研究下失败原因
最后附上ssh连接的认证原理:
公钥:用于加密,存在于服务器
私钥:用于解密存在于客户机
1,客户端向服务器发出连接请求
2服务器查看客户端公钥(~/.ssh/authorized_keys)该客户机(客户机标志:用户@Host)对应的公钥
3,服务器验证公钥合法则产生一条随机数(challenge),用公钥加密发送给客户端
4客户端用私钥解密回传服务器端。
5随机数一致,认证通过