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

无法通过Ansible ping通节点:WSL连接Windows主机失败

Ansible ping Windows主机失败(SSH连接超时)解决方法

问题详情

我正在学习Ansible教程,在WSL中安装了Ansible,已将Windows主机IP添加到/etc/ansible/hosts文件中,执行命令ansible windows -m ping后得到以下错误:

192.168.29.1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.29.1 port 22: Connection timed out",
"unreachable": true
}

期望得到的成功结果:

192.168.29.1 | SUCCESS! => {
"ansible_facts":{
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": pong
}

问题原因

Ansible默认通过SSH协议连接目标主机,但Windows系统默认未开启SSH服务,且Ansible管理Windows主机需要使用WinRM协议而非SSH。

解决步骤

1. 在Windows主机上配置WinRM服务

以管理员身份打开PowerShell,依次执行以下命令:

# 设置WinRM服务为自动启动并启动服务
Set-Service -Name WinRM -StartupType Automatic
Start-Service WinRM

# 快速配置WinRM监听
winrm quickconfig -quiet

# 启用基本认证(测试环境临时配置)
winrm set winrm/config/service/auth '@{Basic="true"}'
# 允许非加密连接(测试环境临时配置)
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

注意:生产环境请使用更安全的认证方式(如NTLM),避免开启非加密连接。

2. 修改Ansible主机清单配置

编辑/etc/ansible/hosts文件,为Windows主机组添加WinRM相关参数:

[windows]
192.168.29.1

[windows:vars]
ansible_connection=winrm
ansible_winrm_transport=basic
ansible_winrm_server_cert_validation=ignore
ansible_user=你的Windows登录用户名
ansible_password=你的Windows登录密码

将上述配置中的用户名和密码替换为Windows主机的实际登录信息。

3. 使用正确的模块执行ping测试

Windows主机需要使用win_ping模块而非默认的ping模块,执行以下命令:

ansible windows -m win_ping

执行成功后即可得到类似期望结果的返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:40:12