rsync报错解决
问题说明
[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 | 提前获取并信任远程主机密钥 |
操作流程图
通过以上步骤,可安全解决主机密钥变更导致的连接问题。