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

Ansible WinRM连接Windows:管理员可用其他账号失败

问题描述

已在Windows机器上配置WinRM,执行命令如下:

New-SelfSignedCertificate -DnsName "EC2-KI33TN5" -CertStoreLocation Cert:\LocalMachine\My

winrm create winrm/config/Listener?Address=*+Transport=HTTPS  '@{Hostname="EC2-KI33TN5";CertificateThumbprint="9885C91EFSDFEWFSFWAWFEWFWEFFW61FEC661C5253"}'

自签名证书已添加至Windows根证书存储,Ansible Linux服务器可正常管理其他Linux节点。当前问题:使用默认管理员账号通过win_ping模块连接Windows机器正常,但使用**已加入管理员组的自定义账号ansibleadmin**连接失败,报错:

<10.10.10.245> ESTABLISH WINRM CONNECTION FOR USER: ansibleadmin on PORT 5986 TO 10.10.10.245
fatal: [WINDOWS_TEST]: UNREACHABLE! => {
    "changed": false,
    "msg": "ntlm: the specified credentials were rejected by the server",
    "unreachable": true
}

WinRM监听器已验证正常运行:

PS C:\Windows\system32> WinRM e winrm/config/listener
Listener
    Address = *
    Transport = HTTP
    Port = 5985
    Hostname
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint
    ListeningOn = 10.10.10.245, 127.0.0.1, ::1, 2001:0:34f1:8072:34f7:a78:f5f5:f508, fe80::5efe:10.10.10.245%7, fe80::34
f7:a78:f5f5:f508%8, fe80::dca2:59f6:8dd1:e2d0%6

Listener
    Address = *
    Transport = HTTPS
    Port = 5986
    Hostname = EC2-KI33TN5
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint = 9885C91EFSDFEWFSFWAWFEWFWEFFW61FEC661C5253
    ListeningOn = 10.10.10.245, 127.0.0.1, ::1, 2001:0:34f1:8072:34f7:a78:f5f5:f508, fe80::5efe:10.10.10.245%7, fe80::34
f7:a78:f5f5:f508%8, fe80::dca2:59f6:8dd1:e2d0%6
排查与解决方案

1. 检查自定义账号的本地安全策略权限

WinRM需要账号拥有特定远程登录权限,即使在管理员组也可能被默认策略限制:

  • 打开本地安全策略(secpol.msc)
  • 进入本地策略 > 用户权限分配
  • 确认允许通过远程桌面服务登录和从网络访问此计算机列表中包含ansibleadmin账号或其所在的管理员组
  • 若未添加,补充后重启WinRM服务:
    Restart-Service WinRM -Force
    

2. 验证WinRM的NTLM认证配置

确保WinRM允许NTLM认证,无针对自定义账号的限制:

  • 执行命令检查WinRM认证配置:
    winrm get winrm/config/service/auth
    
  • 确保输出中NTLM = true,若为false,执行:
    winrm set winrm/config/service/auth @{NTLM="true"}
    

3. 检查账号密码策略与状态

  • 确认ansibleadmin账号未过期、未被锁定,密码符合本地复杂度要求
  • 尝试在Windows本地用该账号登录,验证密码正确性与账号状态
  • 域环境需额外检查域账号的权限与策略(非域机器可忽略)

4. 配置WinRM允许非内置管理员账号访问

默认WinRM可能限制非内置管理员账号的访问,需显式配置:

  • 执行命令将账号加入远程管理用户组:
    net localgroup "Remote Management Users" ansibleadmin /add
    
  • 重启WinRM服务:
    Restart-Service WinRM -Force
    

5. 检查Ansible配置中的认证参数

确保Ansible inventory或playbook的Windows节点配置正确:

[WINDOWS_TEST]
10.10.10.245

[WINDOWS_TEST:vars]
ansible_user=ansibleadmin
ansible_password=YourPassword
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_winrm_server_cert_validation=ignore  # 自签名证书需忽略验证

注:域账号需添加ansible_domain=YOURDOMAIN配置,本地账号无需此参数。

6. 本地测试WinRM连接

在Windows机器上用ansibleadmin账号本地测试WinRM,定位问题节点:

$cred = Get-Credential ansibleadmin
Invoke-Command -ComputerName localhost -Credential $cred -ScriptBlock { Get-ChildItem C:\ }

若本地测试失败,问题出在Windows账号或权限配置;若本地成功,再排查Ansible端的网络与配置细节。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:56:05