【问题标题】:Why does Net::SNMP give errors when I use -privkey with SNMPv3?当我将 -privkey 与 SNMPv3 一起使用时,为什么 Net::SNMP 会出错?
【发布时间】:2016-01-07 10:27:59
【问题描述】:

我正在尝试使用 Net::SNMP 模块修改使用 SNMPv2 的脚本以改用 SNMPv3。

#Define SNMP session
($session, $error) = Net::SNMP->session(
 -hostname     => shift || $hostname,
 -version      => "snmpv3",
 -username     => "user",
 -authprotocol => "md5",
 -authkey      => "password123",
 -privprotocol => "des",
 -privkey      => "password123"
);

当我执行上述操作时,我收到一条抱怨说私钥不是十六进制的:

The privKey "password123" is expected in hexadecimal format

所以我做了一个十六进制转换:

$privkey = unpack "H*", "password123";

但后来我收到关于字符串长度的投诉:

The CBC-DES privKey length of 10 is invalid, expected 16

有人给点建议吗?我正在努力提高安全意识并使用 SNMPv3,但它引起了如此多的头痛,以至于我很想能够做到这一点并回到 2c。

哦,当使用完全相同的凭据执行 snmpwalk/snmpget 时,这在 CLI 上也能完美运行。

【问题讨论】:

  • $privkey = unpack "H16", "password123"; 有什么不同吗?
  • 类似错误:CBC-DES privKey 长度为 8 无效,预期为 16

标签: perl snmp


【解决方案1】:

来自Net::SNMP documentation

可选地,可以使用-authkey 参数,这样就不必在脚本中指定纯文本密码。 -authkey 参数需要一个十六进制字符串,该字符串是通过使用特定目标设备的 authoritativeEngineID 本地化密码生成的。分发中包含的 snmpkey 实用程序可用于创建十六进制字符串(请参阅snmpkey)。

[...]

-privkey-privpassword 参数分别期望与 -authkey-authpassword 参数相同的输入。

snmpkey 实用程序使用密码一个 SNMPEngineID(与每个 SNMP 实体关联的标识符)来创建密钥,因此简单地将密码转换为十六进制是行不通的。 p>

【讨论】:

    【解决方案2】:

    只需使用 -authpassword、-privpassword 代替 -authkey、-privkey

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 2019-10-25
      • 2021-12-08
      • 2021-08-28
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多