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

Ansible命令行传递SSH用户名密码执行playbook失败如何解决

根因分析
  1. host_key_checking = false 属于Ansible全局配置文件ansible.cfg的[defaults]段专属配置项,你将它写在了inventory配置hosts.ini中,该配置完全不生效,Ansible默认保持SSH主机密钥校验开启状态。
  2. 你使用的sshpass工具不支持交互式确认未知主机的密钥指纹,在校验开启的场景下用密码走SSH连接,会直接触发本次报错。
  3. 你之前删除错误位置配置、修改密码变量名的操作,均没有解决核心的主机密钥校验开启问题,因此报错持续存在。
解决方案

你可以根据使用场景任选以下任意一种方案解决问题:

  • 方案1:新增ansible.cfg全局关闭校验
    在执行playbook的同级目录下创建ansible.cfg文件,写入以下内容即可,该配置对同目录下所有Ansible命令生效:

    [defaults]
    host_key_checking = false
    

    额外提示:你的hosts.ini里的[defaults]段属于无效配置,可以直接删除避免后续混淆。

  • 方案2:执行命令时临时关闭校验
    无需修改任何配置文件,直接在playbook执行命令中新增SSH参数即可,完整命令参考如下:

    ansible-playbook -i hosts.ini main.yml \
    --extra-vars "ansible_sudo_pass=你的Sudo密码 ansible_user=你的SSH用户名 ansible_password=你的SSH密码" \
    --ssh-common-args='-o StrictHostKeyChecking=no'
    

    注意:你原命令中的$(ansible_password)是从Shell环境变量取值的写法,需确认你提前在当前Shell中导出了对应变量,否则可以直接替换为实际的账号密码值。

  • 方案3:手动添加主机密钥到本地信任列表
    适合长期使用固定目标主机的场景,仅需执行一次以下命令,即可永久将目标主机指纹加入本地信任列表:

    ssh-keyscan 10.1.5.4 >> ~/.ssh/known_hosts
    

    执行完成后再运行playbook即可正常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:36:08