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

如何在Ansible CLI中使用sudo密码哈希运行Playbook?

使用密码哈希设置ansible_sudo_pass并运行Playbook

问题描述

原本通过CLI传入明文密码运行Playbook的命令:

ansible-playbook -i inventory/inventory.yml  playbooks/changedefaults.yml --extra-vars "ansible_sudo_pass=password"

现在需要传入密码的哈希值,但直接使用示例命令会因Shell解析问题导致哈希值被篡改,无法被正确识别。

解决方法

1. 正确传递哈希值(避免Shell解析$符号)

Shell中$是变量引用前缀,哈希值里的$会被Shell尝试解析成变量,导致哈希值损坏。有两种可靠的解决方式:

  • 用单引号包裹整个--extra-vars内容:单引号会阻止Shell解析内部的特殊字符,直接传递原始哈希值:

    ansible-playbook -i inventory/inventory.yml playbooks/changedefaults.yml --extra-vars 'ansible_sudo_pass=$6$rounds=656000$nv6b5eRCf0MA3Uth$YLcyFUT63rTMB8crCejv5IdyOYIpv62l5FVt.jjw4cNuqPX8HyYwmx/w48SFq/LJtYLrEV92mje7jV0Nfm/9g0'
    
  • 转义哈希中的每个$符号:在每个$前添加反斜杠\,让Shell把它当作普通字符处理:

    ansible-playbook -i inventory/inventory.yml playbooks/changedefaults.yml --extra-vars "ansible_sudo_pass=\$6\$rounds=656000\$nv6b5eRCf0MA3Uth\$YLcyFUT63rTMB8crCejv5IdyOYIpv62l5FVt.jjw4cNuqPX8HyYwmx/w48SFq/LJtYLrEV92mje7jV0Nfm/9g0"
    

2. 确认哈希格式有效性

确保你使用的哈希是目标Linux系统sudo命令能识别的格式,比如示例中的SHA-512哈希(以$6$开头)。如果需要生成对应哈希,可以用系统自带的mkpasswd工具:

mkpasswd --method=sha-512

输入密码后即可生成符合要求的哈希值。

3. 检查变量优先级

确认没有其他位置的ansible_sudo_pass变量覆盖CLI传入的值,比如:

  • Inventory文件或host_vars/group_vars中的定义
  • Playbook内部的变量定义
  • Ansible配置文件中的相关设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:40:30