Ansible 默认通过22端口连接被控主机,若SSH端口变更(如2222),需在主机清单中指定:单机可用“IP:端口”或“IP ansible_port=端口”;主机组用“[组名:vars] ansible_port=端口”;全局统一则用“[all:vars] ansible_port=端口”,优先级为主机变量>组变量>all:vars。

Ansible 默认使用 SSH 的 22 端口连接被控主机,但实际环境中常因安全策略将 SSH 端口改为非标准值(如 2222、2022 等)。要让 Ansible 正确连接,必须在主机清单中明确指定该端口。
在 INI 格式清单中直接写端口
这是最常用、最直观的方式。支持两种写法:
-
行末冒号后写端口:适用于单台主机,简洁明了
192.168.10.14:2222 -
用变量 ansible_port 指定:更灵活,便于后续扩展变量管理
192.168.10.14 ansible_port=2222
两者效果完全等价,Ansible 都会通过 2222 端口建立 SSH 连接。
为整个主机组统一设置端口
若组内所有主机使用相同非标端口,推荐用组变量方式,避免重复书写:
- 先定义主机组,例如:
[webservers]
192.168.10.11
192.168.10.12 - 再在下方添加组变量块:
[webservers:vars]
ansible_port=2222
这样组内所有主机自动继承该端口,无需逐行配置。
全局端口设置(影响所有主机)
如果全环境 SSH 端口都已统一变更(比如全部改成了 2022),可在清单顶部使用 [all:vars] 统一声明:
- [all:vars]
- ansible_port=2022
该设置会被所有主机继承,但可被主机或组级别的 ansible_port 覆盖,优先级:主机变量 > 组变量 > all:vars。
验证端口是否生效
执行 ping 测试时加上 -v 参数,可看到实际连接详情:
- ansible webservers -m ping -i /etc/ansible/hosts -v
输出中若出现 SSH connection to 192.168.10.11:2222,说明端口已正确应用。


















