尝试使用Ansible与Windows主机通信时出现401/500错误。
[root@rhel7]# ansible windows -i hosts.ini -m win_ping -vvvv
<192.168.10.10> ESTABLISH WINRM CONNECTION FOR USER: ansibleuser on PORT 5985 TO 192.168.10.10
<192.168.10.10> WINRM CONNECT: transport=plaintext endpoint=http://192.168.10.10:5985/wsman
<192.168.10.10> WINRM CONNECTION ERROR: 401 Unauthorized.
<192.168.10.10> WINRM CONNECT: transport=plaintext endpoint=https://192.168.10.10:5985/wsman
<192.168.10.10> WINRM CONNECTION ERROR: 500 WinRMTransport. [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
192.168.10.10 | FAILED => 500 WinRMTransport. [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
hosts.ini:
[windows]
192.168.10.10
[windows:vars]
ansible_ssh_user=ansibleuser
ansible_ssh_password=password
ansible_ssh_port=5985
ansible_connection=winrm
用户ansibleuser是本地用户,具有本地管理员权限。 Ansible版本是1.9.2
我可以使用RDP成功连接到服务器,winrm设置看起来正确,防火墙已禁用。
我使用tcpdump来获取HTTP头,请求hasn&#39; t授权参数。没有任何想法。
POST /wsman HTTP/1.1
Accept-Encoding: identity
Content-Length: 0
Host: 192.168.10.10:5985
Content-Type: application/soap+xml;charset=UTF-8
Connection: close
User-Agent: Python WinRM client
请帮我解决这个问题,谢谢
答案 0 :(得分:4)
官方Ansible文档中的原因是错误的:ansible_ssh_password是不正确的参数,正确的是ansible_ssh_pass