rsync报错解决

发布于:2025-07-23 ⋅ 阅读:(12) ⋅ 点赞:(0)

问题说明

[root@localhost shyn]# rsync -avz --checksum "root@192.168.159.133:/tmp/shyn" "/tmp                                                                                         /shyn"
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:dU0gIAFptmBkxpnuKlblOTFH8VIwKPHzdJRaqrMVzSM.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /root/.ssh/known_hosts:1
ED25519 host key for 192.168.159.133 has changed and you have requested strict chec                                                                                         king.
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.3]

问题解决

这个错误表明远程主机(192.168.159.133)的SSH密钥已变更,导致本地主机的 known_hosts 文件中的记录不匹配。以下是解决方案:

1. 问题原因

  • 远程主机的SSH密钥因重装系统、IP冲突或人为修改而变更。
  • 本地主机的 ~/.ssh/known_hosts 仍保存旧密钥,触发安全警告。

2. 解决方法

方法 1:删除旧密钥记录(推荐)
ssh-keygen -R 192.168.159.133
  • 作用:从 known_hosts 中移除该IP的所有旧密钥。
  • 后续操作:下次连接时会自动添加新密钥。
方法 2:手动编辑 known_hosts 文件
sed -i '/192.168.159.133/d' ~/.ssh/known_hosts
方法 3(不安全,仅限信任网络):临时跳过密钥检查
rsync -avz --checksum -e "ssh -o StrictHostKeyChecking=no" root@192.168.159.133:/tmp/shyn /tmp/shyn

警告:此方法会禁用主机密钥验证,存在中间人攻击风险,仅用于测试环境。


3. 验证解决

重新执行rsync命令,系统会提示接受新密钥:

rsync -avz --checksum root@192.168.159.133:/tmp/shyn /tmp/shyn

输入 yes 确认后,新密钥将自动存入 known_hosts


4. 预防措施

场景 操作
频繁重装虚拟机 使用固定IP和SSH密钥对,避免密钥变更。
多主机共用IP 为每台主机分配唯一IP,或使用主机名而非IP连接。
自动化脚本 在脚本中添加密钥清理步骤:`ssh-keygen -R

附:SSH密钥管理常用命令

命令 用途
ssh-keygen -R <IP> 删除指定IP的旧密钥
ssh-keygen -F <IP> 检查密钥是否已存在
ssh-keyscan -H <IP> >> ~/.ssh/known_hosts 提前获取并信任远程主机密钥

操作流程图

rsync报密钥错误
是否信任该主机?
删除旧密钥
终止连接
重新执行rsync接受新密钥
成功同步

通过以上步骤,可安全解决主机密钥变更导致的连接问题。


网站公告

今日签到

点亮在社区的每一天
去签到