【SNMP】snmpget接口报错:认证失败,但密码是正确的

发送命令:snmpget -v 3 -l authPriv -a SHA256 -x AES -u test -A -X 1.3.6.1.4.1.2011.2.235.1.1.1.8.0
image
查看日志:

这个错误是什么意思呀

答案内容由AI生成,仅供参考:
根据您提供的上下文信息,SNMPv3 认证失败(Authentication failure)的问题虽然表面上是“密码错误”,但结合日志和系统架构,可以得出以下分析:


错误含义分析

返回错误:

snmpget: Authentication failure (incorrect password, community or key)

这表示 SNMPv3 代理(agent)在验证用户 test 的认证凭据时失败,但您确认密码正确,因此问题并非单纯密码输入错误,可能是系统层面的认证机制未正常工作。


关键线索:日志中的 PAM 错误

您的日志中反复出现以下错误:

pam_tally.ext.c(78): open faillog file failed.
pam_tally.ext.c(152): open_tally error
user_login_lock.c(292): [user login lock] call get_pam_tally failed, ret: -1

这些错误表明:

  • PAM(Pluggable Authentication Modules)系统无法打开用户登录失败记录文件faillog)。
  • 这通常意味着:
    • 文件系统权限异常(如 /var/log/faillog 不存在或不可读)。
    • 文件系统只读或损坏。
    • BMC 系统的 PAM 配置不完整或未正确初始化。
  • PAM 是许多 Linux 系统用于用户认证的核心模块,即使 SNMPv3 使用的是自己的用户数据库(如 usmUser),某些实现仍依赖 PAM 进行用户状态检查(如账户锁定、登录尝试次数等)。

:warning: 重要推断
SNMPv3 的认证流程会间接调用 PAM 来验证用户是否存在或是否被锁定。即使 SNMPv3 使用的是独立的 USM 用户数据库,如果 PAM 无法初始化,整个认证流程可能提前中止,导致返回“Authentication failure”——即使 SNMPv3 密码本身是正确的


从上下文中可确认:

  • Authentication Failure 是一个明确的事件类型,由 SecureErrorHandler 类处理,其设计目标是避免信息泄露(即不明确区分是用户名错误、密码错误还是系统错误)。
  • 因此,当系统内部出现 PAM 初始化失败时,SecureErrorHandler 会统一返回“Authentication failure”,而不是更具体的错误,这符合安全设计原则。

此外:

  • Predefined RoleCustom Role 均可配置 SNMPv3 的认证算法(如 SHA256)和加密密码,说明权限配置本身是支持的。
  • SNMPv3 Authentication Algorithm 支持 SHA256,您使用的 -a SHA256 是合法的。

结论

“Authentication failure” 错误的原因可能不是 SNMPv3 密码错误,而是 BMC 系统的 PAM 认证子系统(pam_tally)因无法打开 /var/log/faillog 文件而崩溃,导致 SNMPv3 认证流程被提前终止。

什么情况下,faillock文件会打开失败?

  1. 是openUBMC哪个版本,对应bmc_sdk的版本是多少的?
  2. 是多台环境有这个问题么?
  3. 使用telnet登录到环境上, 执行ls -lh /dev/shm/tallylog查看目录下 是否有test文件,反馈下截图。
  1. 是openUBMC哪个版本,对应bmc_sdk的版本是多少的?
    答:基于25.09.00.01版本,sdk版本是25.09对应的社区版本,或者是不是可以通过某个文件查看具体的sdk版本号?
  2. 是多台环境有这个问题么?
    答:OpenUBMC目前仅一台环境出现了这个问题,有一台iBMC V3也出现了和OpenUBMC相同的认证失败现象,,但是V3日志没打印相关日志
  3. 使用telnet登录到环境上, 执行ls -lh /dev/shm/tallylog查看目录下 是否有test文件,反馈下截图。
    答:重启BMC之后,可以认证成功,重启之后截图如下

自动化又跑出来了,但是这次日志没有打印faillock,什么东西都没有
image
/dev/shm/tallylog截图:

从你的反馈来看,是不是BMC重启后,使用手动调用snmpget 接口 可以认证成功。 通过自动化脚本跑测试的时候,触发了这个认证失败。

麻烦看下自动化脚本做了哪些步骤,找下手动复现步骤。
另外一键收集下日志,提供一下。

因为信息安全管控,我在浏览器传不了文件,我看了下测试的用例,他只是调了一下snmpget和snmpset命令,其他没有做什么操作

这几行日志的意思是你的账户被锁定了,但是从/dev/shm/tallylog里面获取锁定信息失败,获取锁定信息调用的就是日志里的get_pam_tally函数