snmp概率性认证失败问题分析
更新时间: 2026/06/02
在Gitcode上查看源码问题背景
- 单板类型:NA;
- 软件版本:openUBMC 25.09;
- 涉及功能:白牌包导入ssl证书;
- 触发条件:按照社区白牌包制作流程,制作的白牌包在web页面进行升级,升级完成后app.log查看日志。
- 业务表现:预期SNMP 命令应成功执行并返回对应 MIB 节点信息;实际命令返回 Authentication failure 错误,即使凭据正确也无法通过认证。
问题复现步骤
重启 BMC 系统;
立即或稍后执行 SNMPv3 的 snmpwalk 命令;
textsnmpwalk -v3 -l priv -a SHA256 -x AES -u Administrator -A [模糊字符] -X [糊字符] 1.[模糊数字].6.1.2.1.4.20 snmpwalk: Authentication failure (incorrect password, community or key)概率性出现认证失败错误;
关键日志信息
查看app.log日志,确认报错如下:
text
pam_tally_ext.c(78): open faillog file failed.
user_login_lock.c(152): open tally file error
[user login lock] call get_pam_tally failed, ret: -1定位过程
日志中反复出现以下关键错误信息:
textpam_tally_ext.c(78): open faillog file failed. user_login_lock.c(152): open tally file error [user login lock] call get_pam_tally failed, ret: -1进一步排查发现 /dev/shm/tallylog 目录权限异常:
text# 原始状态(错误) drwxrwxrwt 19 secoxx root 640 ... /dev/shm/tallylog/ # snmpd 进程运行身份 ps aux | grep snmpd snmpd_u+ 50469 ... -g snmpd_user -u snmpd_user说明:
- snmpd 守护进程以用户 snmpd_user 和组 snmpd_user 运行;
- /dev/shm/tallylog 的属组为 root,而非 snmpd_user,导致进程无权访问该目录下的认证状态记录文件。
问题原因
有组件比account先以sec_box用户去创建了/dev/shm/tallylog目录。
- 正常情况下/dev/shm/tallylog目录用户组是snmpd_user,异常情况是sec_box,导致snmp命令打开文件失败,改成snmpd_user之后就发送成功了。
解决方案
修改 /dev/shm/tallylog 目录的属组为 snmpd_user:
text
# 修改目录属组
chown -R :snmpd_user /dev/shm/tallylog
# 或指定用户和组
chown secoxx:snmpd_user /dev/shm/tallylog