无法连接远程Windows服务器:Ansible连接超时与Kerberos报错求助
Ansible连接Windows服务器报错解决方案
一、解决NTLM连接超时问题
首先修正变量拼写错误:ansible_user: Adminstrator 应为 ansible_user: Administrator(缺失字母d),拼写错误可能引发认证环节异常。
接下来排查以下核心点:
- 测试网络连通性:在Ansible控制节点执行命令验证5985端口是否可达:
若不通,检查:nc -zv win_servername 5985 # 或用telnet测试 telnet win_servername 5985- Windows服务器防火墙是否启用"Windows Remote Management (HTTP-In)"入站规则
- 中间网络的防火墙/安全组是否放行5985端口
- 检查WinRM服务配置:在Windows服务器执行以下命令确认配置合规:
# 查看当前WinRM服务配置 winrm get winrm/config/service # 启用NTLM认证,允许非加密连接(适配HTTP 5985端口) winrm set winrm/config/service/auth @{NTLM="true"} winrm set winrm/config/service @{AllowUnencrypted="true"} - 验证主机名解析:在控制节点ping
win_servername,确认能解析到正确IP;若解析失败,直接改用IP地址作为主机名测试。
二、解决Kerberos库缺失问题
切换到ansible_winrm_transport: kerberos时,需在Ansible控制节点安装Kerberos相关依赖:
- Debian/Ubuntu系统:
sudo apt update && sudo apt install krb5-user python3-kerberos - RHEL/CentOS系统:
sudo yum install krb5-workstation python3-kerberos - 用pip安装Python库:
pip install pykerberos
此外,Kerberos需正确配置域信息:
- 编辑
/etc/krb5.conf文件,填入你的域控制器信息(示例):[libdefaults] default_realm = YOUR_DOMAIN.COM dns_lookup_kdc = true [realms] YOUR_DOMAIN.COM = { kdc = dc.your_domain.com admin_server = dc.your_domain.com } - 确保Windows服务器已加入域,且控制节点能访问域控制器的88端口(Kerberos默认端口)。
补充:win_copy模块的参数问题
你的win_copy任务中remote_src: yes表示从远程服务器复制文件,但未指定src参数,会触发模块报错。根据需求调整:
- 若要创建空文件,改用
win_file模块:- name: create empty txt file win_file: path: C:\Users\Desktop\check.txt state: touch - 若要从控制节点复制文件到Windows服务器,去掉
remote_src: yes并指定src:- name: copy file to remote server win_copy: src: ./local_file.txt dest: C:\Users\Desktop\check.txt
内容的提问来源于stack exchange,提问作者Jahanvi J
相关产品推荐
相关产品推荐

