SSH连接失败,报错Host key verification failed——原理和解决方法

##原因,当时用ssh命令远程连接sshd服务的时候。连接过程是需要认证的,以保证连接的安全和数据传输的加密。

客户端ssh连接服务端sshd时,服务端根据自己的私钥生成公钥 (身份验证使用公钥加密算法实现——公钥加密私钥解密),并传送给客户端ssh。

客户端ssh命令接收服务端的公钥,(第一次连接时,连接发起人需进行确认,你是否信任这台主机。如果信任则可以连接并将此公钥保存在/root/.ssh/known_hosts文件中,不信任则拒绝连接)。如果连接一旦建立,表示你认同你连接的这台主机,客户端ssh命令会随机生成一个对称秘钥(这个秘钥会使用服务端的公钥加密并将这个对称秘钥发送到服务端),之后客户端和服务端就可以用这个对称秘钥进行数据加密传送。

因此如果远程主机发过来的公钥与当前/root/.ssh/known_hosts文件中保存的记录不一致,则认为远程主机有问题,并拒绝连接。“Host key verification failed”。 




##解决方法:
方法一:直接将/root/.ssh/known_hosts 文件删除即可。或者你将对应的记录删除即可(根据ip查就行)。之后再次ssh连接。

方法二:vim /etc/ssh/ssh_config    #修改下方选项,则不再校验服务端主机身份,输入账号密码直接连接。注意这个不建议使用,不安全。
    StrictHostKeyChecking=no

   


###附加,校验级别简介。
SSH对主机的public_key的检查等级是根据
StrictHostKeyChecking变量来配置的。
默认情况下,
StrictHostKeyChecking=ask。
1.
StrictHostKeyChecking=no 
#最不安全的级别。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是/root/.ssh/known_hosts文件中),并且给出一个警告。

2.
StrictHostKeyChecking=ask  #默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。

3.
StrictHostKeyChecking=yes  # 最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值