一、测试环境
硬件:920BS
BMC: 25.09
二、问题描述
执行”SNMP查询风扇整体状态“用例,报如下错误:
如果将认证改为”SHA256“,snmpget命令就能够正确执行。
这台机器的BMC也是1711的,为什么脚本里没有用”SHA256“呢?
一、测试环境
硬件:920BS
BMC: 25.09
二、问题描述
执行”SNMP查询风扇整体状态“用例,报如下错误:
答案内容由AI生成,仅供参考:
| 项目 | 内容 |
|---|---|
| 问题根源 | 测试脚本默认使用 SHA 认证算法,而目标设备(Hi1711 + master_v3)的实际配置为 SHA256,导致认证失败。 |
| 错误类型 | 并非密码错误,而是 认证算法不匹配,因安全机制限制统一提示为“Authentication failure”。 |
| 根本对策 | 更新测试脚本,在 Hi1711 平台且运行于 master_v3 等版本时,默认启用 -a SHA256。 |
| 长期建议 | 引入动态查询机制,通过接口获取 AuthenticationProtocol 值,实现自适应认证算法选择,提升兼容性与可维护性。 |
建议立即行动:修改 iTestSmart 测试用例逻辑,将
SHA替换为SHA256作为 Hi1711 平台默认值,并加入版本兼容性注释。
在执行“SNMP查询风扇整体状态”用例时,snmpget 命令返回 “Authentication failure (incorrect password, community or key)” 错误,提示认证失败。
经测试发现:
-a SHA(即 SHA1)认证算法时,命令失败;-a SHA256 后,命令可成功执行。系统环境信息如下:
openUBMC 5.****(构建时间为 2026-02-02)ipmcget -d version 输出显示为 openUBMC 架构(与 openUBMC 生态一致)测试脚本中默认使用 SHA(即 SHA1),但实际设备要求 SHA256,导致认证失败。
根据提供的日志信息:
###特性:部分1711机型的SNMP默认认证算法为SHA256,支持版本:['release_650', 'master', 'master_3.5_0', 'master_v3', ...],当前版本:master_v3###
表明:
master_v3 等特定版本分支中,SNMPv3 默认认证算法已从 SHA(SHA1)升级为 SHA256;SHA,导致认证失败。
结论:脚本配置与系统实际安全策略不匹配是问题核心。
AuthenticationProtocol 设置根据知识库内容:
AuthenticationProtocol 是 SnmpUser 对象的一个关键属性,用于定义 SNMPv3 用户的认证算法。CommunityString(v1/v2c)、SHA256(v3)等。SnmpService 组件进行管理。AuthenticationProtocol 配置不一致,将直接返回“Authentication failure”。此外,由于安全设计原则“避免信息泄露”,BMC 不会区分“密码错误”或“算法错误”,统一返回“Authentication failure”,以防止暴力探测。
尽管系统属于 1711 系列且运行在 master_v3 版本,理论上应启用 SHA256,但测试脚本中的默认算法仍为 SHA(SHA1),可能原因如下:
| 原因 | 说明 |
|---|---|
1. 脚本未动态获取设备的 AuthenticationProtocol |
当前脚本使用硬编码的 -a SHA,未通过查询设备实际配置来确定认证算法。理想做法是先调用 GetSnmpUser 或类似方法获取当前用户配置。 |
| 2. 设备版本识别逻辑不完整 | 虽然检测到 master_v3 分支,但脚本中判断逻辑可能存在遗漏,未能覆盖所有适用场景(如构建号、SDK 版本等),导致未触发 SHA256 切换。 |
3. ipmcget -d version 中缺少明确的 SNMPPolicy 标识 |
当前版本信息仅显示 Active openUBMC Version 和 CPU: Hi1711,无明确字段指示 SNMP 安全策略变更,不利于自动化识别。 |
针对 master_v3 及以上版本、Hi1711 芯片平台,将默认认证算法从 -a SHA 改为 -a SHA256:
snmpget -t 10 -v3 -l priv -a SHA256 -x AES \
-u Administrator -A Admin@9000 -X Admin@9000 \
192.168.40.231:161 \
1.3.6.1.4.1.2011.2.235.1.1.8.50.1.4.1.1
在执行命令前,通过查询设备当前 SNMP 用户配置,动态决定使用哪种认证算法:
方法一:通过 IPMI/Redfish 查询 SNMP 用户
若系统支持,可通过 Redfish 接口 GET /redfish/v1/AccountService/Accounts/{id} 或专用 SNMP 配置接口获取 AuthenticationProtocol。
方法二:使用辅助命令探测
先尝试 snmpget 使用 SHA256;失败后再降级尝试 SHA,并记录告警。
方法三:解析 SnmpService 配置
在本地配置表中维护不同 BMC 版本对应的默认算法映射表,例如:
snmp_algo_map = {
"Hi1711": {
"branches": ["master_v3", "master", "tce_25_0"],
"default_auth_proto": "SHA256"
}
}
当前错误日志包含大量 MIB 加载失败信息(如 Cannot find module (IF-MIB)),会干扰问题排查。建议:
-m ALL 参数抑制警告;| 来源 | 内容摘要 |
|---|---|
| Document Chunk 1 | AuthenticationProtocol 控制 SNMP 用户认证算法,SHA256 是合法且推荐选项;PAM 初始化失败也会导致统一返回“Authentication failure”。 |
| Search Result #2 | SNMPv3 使用 securityAuthProto 指定认证算法,由“鉴权密码+鉴权算法”生成 AuthenticationKey;算法变化直接影响密钥生成结果。 |
| Search Result #3 | account 组件管理 SNMP 用户,包括认证与加密属性,说明用户配置与算法绑定。 |
| KG Entity: AuthenticationProtocol | 定义为“读写属性”,支持配置如 SHA256 等算法,应可通过接口查询。 |
| 项目 | 内容 |
|---|---|
| 问题根源 | 测试脚本默认使用 SHA 认证算法,而目标设备(Hi1711 + master_v3)的实际配置为 SHA256,导致认证失败。 |
| 错误类型 | 并非密码错误,而是 认证算法不匹配,因安全机制限制统一提示为“Authentication failure”。 |
| 根本对策 | 更新测试脚本,在 Hi1711 平台且运行于 master_v3 等版本时,默认启用 -a SHA256。 |
| 长期建议 | 引入动态查询机制,通过接口获取 AuthenticationProtocol 值,实现自适应认证算法选择,提升兼容性与可维护性。 |
建议立即行动:修改 iTestSmart 测试用例逻辑,将
SHA替换为SHA256作为 Hi1711 平台默认值,并加入版本兼容性注释。
相关链接:
您好。当前该机型的默认认证算法未在配置文件中进行配置,内部脚本已适配,将在下个月版本带出,敬请期待!
提供下错误日志吧
SNMP_Fan_008_FUNC_1405
10-49-37_202602031049268712018517155953188865.txt (2.5 MB)
您好,这日志打开是乱码了。还有日志吗?
还有version信息的截图能不能提供更加完整的截图,方便我们这边定位下
应该是需要显示文件后缀,然后把文件后缀改成.rar,就可以解压缩了。
好的,改后缀后已成功解压。当前已定位出根因,下次外发版本将解决该问题