修改WinRM端口及报错解决
修改WinRM服务监听端口
①. WinRM 2.0 版本以下,WinRM的监听端口为 80(HTTP) 或 443(HTTPS);
②. WinRM 2.0版本以上,WinRM的监听端口为5985(HTTP )和 5986 (HTTPS);
查看WinRm监听端口: 默认http端口5985
winrm enumerate winrm/config/listener
修改WinRM端口:
WinRM默认的http端口是5985,https端口5986
winrm set winrm/config/listener?Address=+Transport=HTTP ‘@{Port=“6008”}’
或 set-item wsman:\localhost\listener\listener\port 6008
如果防火墙开启请修改防火墙配置。
报错:SSL:UNKNOWN_PROTOCOL
描述:ansible管理windows默认使用http端口5985,但生产环境目前没有开放5985端口,开通该端口所需时间较长,所以通过修改windows中WinRM服务的端口为已经开通过的端口来实现功能。
未修改时inventory主机清单文件如下:
[root@localhost awx_telegraf]# cat inventory
[windows]
192.168.6.155
[windows:vars]
ansible_ssh_user=administrator
ansible_ssh_pass="redhat@123"
#ansible_ssh_port=5985
ansible_ssh_port=6008
ansible_connection="winrm"
ansible_winrm_server_cert_validation=ignore
用上面配置执行ansible语句报错信息如下:
#未知的SSL协议
[root@localhost awx_telegraf]# ansible -i inventory windows -m win_ping
192.168.6.155 | UNREACHABLE! => {
"changed": false,
"msg": "ssl: HTTPSConnectionPool(host='192.168.6.155', port=6002): Max retries exceeded with url: /wsman (Caused by SSLError(SSLError(1, '[SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:1129)')))",
"unreachable": true
}
问题解决:
分析:ansible管控windows时,除5985默认为http端口,无论端口号怎么修改默认都为https端口
修改后:
inventory文件,添加 ansible_winrm_scheme=http 参数
[root@localhost awx_telegraf]# cat inventory
[windows]
192.168.6.155
[windows:vars]
ansible_ssh_user=administrator
ansible_ssh_pass="redhat@123"
#ansible_ssh_port=5985
ansible_ssh_port=6008
ansible_connection="winrm"
ansible_winrm_server_cert_validation=ignore
ansible_winrm_scheme=http
执行命令成功:
[root@localhost awx_telegraf]# ansible -i inventory windows -m win_ping
192.168.6.155 | SUCCESS => {
"changed": false,
"ping": "pong"
}
- ansible_connection: 指定调用哪个connection plugin。如不指定,默认是调用ssh的。
- ansible_winrm_scheme:指定用于 WinRM 连接的连接方案(http或)。指定用什么协议访问,默认时https。如果指定为http,默认访问5985端口。当且仅当ansible_ssh_port被设置为5985时,默认走http。
- ansible_ssh_port:默认值5986。当此选项被设置为除5985外的任意值且未指定ansible_winrm_scheme时,默认走https协议。也就是说如果修改了http端口,则必须在调用ansible时显示指定ansible_winrm_scheme为http。
官网链接:https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html#what-is-winrm