sshd: Corrupted MAC on input

本文详细介绍了在SSH连接中遇到的'Corrupted MAC on input'错误,该错误源于服务器在验证客户端数据时MAC校验失败,导致TCP连接被重置。通过分析代码、Wireshark抓包以及使用strace定位问题,可以确定问题发生的具体数据包。文章提供了解决此类问题的方法和思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于csdn,创作页面的搜索功能限制;搜索的范围只是在标题范围。为了方便个人使用,不得不将每一项具体问题都发布成单篇文章。以便搜索;这一篇也是这个目的;

问题描述

https://mzhan017.blog.youkuaiyun.com/article/details/117777292#client_loop_send_disconnect_Broken_pipe_4
在这个链接,我们可以看到,和本文提到的错误相配对的客户端错误;
“sshd Corrupted MAC on input”
这个错误的原因是:检查客户端来的数据时,发现MAC: Message Authentication Check,检查失败,也就是从客户端来的数据有问题。然后回直接RST掉TCP链接,这一就导致了客户端的“Broken Pipe”。
————————————————
版权声明:本文为优快云博主「mzhan017」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_36428903/article/details/117777292

代码

openssh/packet.c ;; ssh_packet_read_poll2;; 根据进来的加密数据,做MAC校验。如果出现验证错误,就RST tcp链接。

	/* EtM: check mac over e
### 错误原因分析 当遇到 `ssh_dispatch_run_fatal: Connection to x.x.x.x port 22: message authentication code incorrect` 或者 `Corrupted MAC on input` 这类错误时,通常意味着消息认证码 (MAC) 验证失败。这可能是由于多种因素引起的: - 客户端和服务端之间的加密算法或MAC不匹配。 - 数据在网络传输过程中被篡改。 - 使用了过期或者损坏的密钥文件[^1]。 对于 SCP 文件传输关闭连接的情况 (`scp connection closed`) ,同样可能是因为上述提到的原因之一导致的数据完整性校验失败而终止会话。 ### 解决方案 #### 方法一:更新SSH配置参数 尝试调整本地 SSH 客户端配置来排除某些可能导致冲突的消息验证机制选项,在用户的 `.ssh/config` 中加入以下设置以禁用特定类型的 MAC 和压缩方式: ```bash Host * Ciphers aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512,hmac-sha2-256,hmac-md5 Compression no ``` 此更改旨在减少潜在兼容性问题并强制使用更稳定可靠的加密组合[^2]。 #### 方法二:升级OpenSSH版本 如果当前使用的 OpenSSH 版本较低,则可能存在已知的安全性和稳定性缺陷。建议检查服务器上安装的是哪个版本,并考虑将其更新至最新稳定版。新版本往往修复了许多旧版本中存在的 bug 并提高了整体性能和安全性。 可以通过包管理器执行相应命令完成升级操作,例如在基于 Debian/Ubuntu 的系统中可以这样做: ```bash sudo apt-get update && sudo apt-get install --only-upgrade openssh-server ``` 而对于 RedHat/CentOS 用户来说则是这样: ```bash yum check-update ; yum upgrade openssh* ``` 确保重启服务使新的软件生效: ```bash service sshd restart ``` #### 方法三:重新生成主机密钥对 有时现有的私钥可能会因为各种原因变得不可靠,这时可以选择删除现有密钥并对每台机器创建一对全新的 RSA/ECC 密钥用于身份验证目的。具体做法是在各节点分别运行下面这条指令: ```bash rm /etc/ssh/*key* # 清除所有现存密钥 dpkg-reconfigure openssh-server # 对于Debian系发行版适用 # 或者 systemctl restart sshd.service # 其他Linux发行版通用的方式重载配置 ``` 之后按照提示完成整个过程即可恢复正常的公钥基础设施(PKI)[^3]。 ### 注意事项 在整个排查期间应当保持耐心细致的态度,逐步测试不同的可能性直到找到最合适的解决方案为止。同时也要注意备份重要数据以防万一出现问题能够及时回滚到之前的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mzhan017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值