更换主机后Ssh hosts RSA 主机密钥问题的解决办法

本文介绍了一台主机更换后出现的SSH连接问题及解决方案。由于主机密钥变更,导致原有连接验证失败。文章提供了具体的排查步骤和解决方法,包括删除旧密钥并重新建立信任关系。
 今天有一台主机(IP为10.10.1.1)由于经常死机,头决定让一台新机器来替代它(主要步骤:
1)    更改/etc/sysconfig/network-scripts/eth1文件.
2)    拔掉原1.1网线
3)     重起新主机的network(/etc/init.d/network restart)及相关服务)

验证新主机1.1是否能完全能替换原主机的服务,从1.3通过ssh 连接,结果报错。
[10.10.1.3]root #ssh 
root@10.10.1.1

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3b:51:6e:3e:Array2:8Array:82:fe:e7:a8:ac:44:a0:0a:6e:af.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:10
RSA host key for 10.10.1.1 has changed and you have requested strict checking.
Host key verification failed.

   [10.10.1.3]root # 

系统直接退出了,不让登陆。看了一下报错信息,大概是主机的密钥不对了,需要重新配置。以前还配置过ssh ,可惜好久没配过,忘得差不多了,只得Google了。找到一篇
解决以 root 用户登录时的验证问题
虽然说的系统平台不一致,但大概方法及原理是一致的。
a机通过ssh连接b机时,会把b机的信息保存在a机的root的.ssh/known_hosts文件里,由于b机被重装(本案例是被替换),b机的信息被改变,与a机文件的信息不一致, ssh就不让连接。解决方法也很简单,直接把a机相应文件里的b机信息删掉(报错信息里提示里具体位置 /root/.ssh/known_hosts:10 ,再次连接时系统会提示是否更改b机信息,输入yes 即可。 

在连接前后看/known_hosts文件的日期变化也可以清晰得看出该文件被更改。


转载:http://www.sudu.cn/info/html/edu/20070102/296746.html

<think>嗯,用户需要解决SSH主机密钥验证失败的问题。根据提供的引用资料和我已有的知识,这个问题通常发生在known_hosts文件的密钥记录与远程主机的实际密钥不匹配时。用户可能是在远程服务器密钥变更后遇到了这个错误,比如服务器重装系统或更换密钥。 用户的需求很明确,就是寻找解决方法。从引用[1][2][3][4]来看,核心解决思路都是更新本地的密钥记录。特别注意到引用[3][4]展示了具体的错误提示,其中包含"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"的警告,这正是典型的主机密钥变更提示。 考虑设计解决方案时准备分步骤说明:首先要用ssh-keygen命令删除旧记录,这是最安全的方法。如果用户需要临时解决方案,可以建议关闭严格密钥检查,但必须警告安全风险。文件权限问题虽然较少见,但根据经验,ssh目录权限不正确也可能导致连接问题,所以补充进去。 用户可能是系统管理员或开发人员,ta特意强调"尽可能多参考引用资料",说明需要权威的解决方案。注意到引用[2]提到"大数据技术"场景,可能用户是在集群环境中遇到这个问题,不过解决方案是通用的。 将在回复中强调安全注意事项,因为错误提示明确警告了中间人攻击的可能性。如果用户是企业环境,应该建议ta先联系服务器管理员确认密钥变更是否合法。 </think>以下是解决 SSH 主机密钥验证失败的完整方法,结合安全性和操作效率: ### 🔧 解决方法步骤 1. **删除冲突密钥记录(推荐)** ```bash ssh-keygen -R [主机名或IP地址] # 示例:ssh-keygen -R 192.168.1.100 ``` 此命令精准删除 `~/.ssh/known_hosts` 中指定主机的旧密钥记录,保留其他记录[^1][^3]。 2. **重新连接并接受新密钥** 执行上述命令后再次连接: ```bash ssh user@hostname ``` 出现 `Are you sure you want to continue connecting (yes/no)?` 时输入 `yes`,新密钥将自动记录📝。 3. **替代方案:手动编辑文件** 若需多主机清理: ```bash nano ~/.ssh/known_hosts # 删除对应行后保存 ``` 4. **紧急情况处理(慎用)** **仅在确认服务器安全时**临时关闭验证: ```bash ssh -o StrictHostKeyChecking=no user@hostname ``` ### ⚠️ 关键注意事项 1. **安全警报** `WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED` 可能表示: - 服务器密钥正常变更(如重装系统) - **中间人攻击风险**(需立即联系服务器管理员确认)[^3][^4] 2. **文件权限问题** 检查目录权限(常见于Linux): ```bash chmod 700 ~/.ssh && chmod 600 ~/.ssh/* ``` 3. **密钥类型不匹配** 若提示 `Offending RSA key` 或 `ECDSA key`,需确认服务器启用的密钥类型: ```bash ssh -Q key-sig # 查看支持的密钥类型 ``` ### 🌐 不同系统路径参考 | 系统 | known_hosts 路径 | |-------------|-----------------------------------| | Linux/macOS | `~/.ssh/known_hosts` | | Windows | `C:\Users\[用户名]\.ssh\known_hosts` | > 📌 **最佳实践**:生产环境中建议使用 `ssh-keyscan` 预分发密钥: > ```bash > ssh-keyscan hostname >> ~/.ssh/known_hosts > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值