ssh登录提示RSA Host key认证失败的解决方法

【问题描述】

今天用ssh命令登录一台此前连接过的服务器,失败,出现下面的错误提示


【问题分析】

从提示看,很明显,是RSA key不匹配。


根据提示查看本机/home/user/.ssh/目录下,查看有如下3只文件:

id_rsa

id_rsa.pub

known_hosts


从文件名及查看文件内容可以看出:

1,前两个是用ssh-keygen命令生成的私钥和公钥;

2,known_hosts是ssh访问过的PC的公钥记录,当下次访问相同PC时ssh会核对公钥,如果不同则发出警告,避免受到DNS Hijack攻击;

从我们遇到的错误看,明显是known_hosts出了问题。


【解决方法】

1,删除/home/user/.ssh/目录下的known_hosts文件:

简单粗暴,如果想快速解决这个问题,可以采用


2,修改known_hosts内容:

根据上面截图中的提示

Offending RSA key in /home/user/.ssh/known_hosts:6

意思是,known_hosts文件的第6行发生冲突,因此,有两个方法:

(1)删除此行所记录的公钥:

删除后的效果,其实等同于方法1,删除后再次连接时会记录新的公钥;

(2)将此行所记录的公钥替换为想连接的PC的公钥:

对比了对方PC上的/home/user/.ssh/id_rsa.pub文件,发现和成功连接所生成存放在known_host中的公钥有差异,所以放弃这个方法。

但可以用上述方法(1)中生成的公钥的替换,如果你想来回倒腾下的话,其实结果和方法(1)相同;


其他博客里有介绍修改ssh配置的两种方法,但我尝试下来都失败了,不过,仍然分享在这里,如果有兴趣研究的话,可以研究下失败原因

1,修改/etc/ssh/sshd_config

PermitRootLogin no修改为yes,
PubkeyAuthentication yes修改为no
AuthorizedKeysFile %h .ssh/authorized_keys前面加上#屏蔽掉,
PasswordAuthentication no修改为yes


2,修改/etc/ssh/ssh_config

#  StrictHostKeyChecking ask
改成
StrictHostKeyChecking no


【备注信息】

最后,附上ssh连接的认证原理:

公钥:用于加密,存在于服务器
私钥:用于解密,存在于客户机

认证流程:
1,客户端向服务器发出连接请求
2,服务器查看客户端公钥(~/.ssh/authorized_keys)该客户机(客户机标志:用户@Host)对应的公钥
3,服务器验证公钥合法,则产生一条随机数(challenge),用公钥加密发送给客户端
4,客户端用私钥解密回传服务器端。
5,随机数一致,认证通过

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值