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

已配置connection: local,如何阻止Ansible执行时调用SSH?

解决Ansible本地运行仍调用SSH的问题

问题原因

即便设置了connection: local,Ansible仍会触发SSH,是因为默认会对清单中的非localhost主机执行连通性验证,这个步骤会自动发起SSH尝试,哪怕你没有要执行的远程任务。

解决方案

以下三种方式可以彻底禁用SSH调用:

方式1:在清单中全局设置本地连接变量

直接在inventory.yml里给所有主机添加ansible_connection: local变量,明确告诉Ansible无需使用SSH:

# inventory.yml 示例
all:
  vars:
    ansible_connection: local
  children:
    web_servers:
      hosts:
        web01:
        web02:
    db_servers:
      hosts:
        db01:

方式2:修改Playbook添加SSH禁用参数

在Playbook中补充remote_user(设为本地用户)和ansible_ssh_common_args参数,阻止SSH连接尝试:

- name: 收集主机组信息
  hosts: 'all'
  connection: local
  gather_facts: false
  remote_user: "{{ ansible_user_id }}"
  vars:
    ansible_ssh_common_args: '-o ControlMaster=no'
  tasks:
    - name: 输出主机所属组
      ansible.builtin.debug:
        msg: "{{ inventory_hostname }} {{ group_names | to_json }}"

方式3:直接用ansible-inventory命令导出信息

如果只是需要主机-组对应关系,完全不需要写Playbook,用Ansible自带命令直接导出结构化数据:

ansible-inventory -i inventory.yml --list

该命令全程本地运行,不会触发任何SSH连接,输出的JSON格式可直接用jq等工具处理提取所需信息。

验证

修改后重新运行Playbook或执行ansible-inventory命令,不会再出现SSH密码提示,所有操作均在本地完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:40:33