You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中为变量生成sha512-pbkdf2加密哈希值

可以实现,目前有两种常用方案可以在Ansible中生成兼容mosquitto的sha512-pbkdf2类型密码哈希:

方案1:使用Ansible内置password_hash过滤器

Ansible 2.7及以上版本内置的password_hash过滤器原生支持pbkdf2_sha512算法,生成的哈希格式和mosquitto_passwd默认输出完全兼容,无需额外转换即可直接写入mosquitto密码文件使用。
使用示例如下:

- name: 生成sha512-pbkdf2密码哈希
  hosts: localhost
  vars:
    # 替换为你的明文密码变量
    plain_password: "your_custom_password"
  tasks:
    - name: 输出计算得到的哈希值
      debug:
        msg: "{{ plain_password | password_hash('pbkdf2_sha512') }}"

如果需要自定义迭代次数、固定盐值,可以传入额外参数:

# rounds指定迭代次数,salt指定固定盐值
{{ plain_password | password_hash('pbkdf2_sha512', rounds=100000, salt='your_custom_salt') }}

方案2:调用本地mosquitto_passwd命令生成

如果使用的Ansible版本较低,或者需要100%对齐mosquitto_passwd的默认生成逻辑,可以直接在Ansible控制节点调用mosquitto_passwd命令生成哈希后提取结果:

- name: 调用mosquitto_passwd生成哈希
  hosts: localhost
  vars:
    plain_password: "your_custom_password"
    mosquitto_username: "test_user"
  tasks:
    - name: 执行mosquitto_passwd生成哈希
      command: mosquitto_passwd -b -c /dev/stdout {{ mosquitto_username }} {{ plain_password }}
      register: passwd_output
      changed_when: false
    - name: 提取纯哈希值(去掉用户名和冒号前缀)
      set_fact:
        pbkdf2_hash: "{{ passwd_output.stdout.split(':')[1] }}"
    - name: 输出哈希值
      debug:
        var: pbkdf2_hash

注意:使用方案2需要提前在Ansible控制节点安装mosquitto_passwd工具,Debian/Ubuntu系统安装包为mosquitto-clients,RHEL/CentOS系统安装包为mosquitto。

内容的提问来源于stack exchange,提问作者SteveM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:45:02