WinRM 的加密通道
5986 是 WinRM 的 HTTPS 端口:Windows 的远程管理协议 WS-Management 在这条通道上跑 TLS,用证书校验替代 5985 的明文协商。跨网段、跨信任边界的 PowerShell 远程管理应当走它,Ansible 的 winrm 连接插件也默认使用 5986。
基本信息
| 服务 | WinRM over HTTPS(WS-Management TLS) |
|---|---|
| 协议 | TCP/TLS |
| 对应明文口 | 5985(WinRM HTTP) |
| 用途 | 加密的 PowerShell 远程管理、Ansible 纳管 Windows |
| 安全等级 | 仅管理网段,必要时才对公网开放 |
典型使用场景
- 跨网段用 Enter-PSSession 管理主机,需要加密通道
- Ansible 通过 winrm 插件批量纳管 Windows 主机
- 合规要求禁止明文远程管理时替代 5985
- 排查远程管理失败时把网络、TLS 与凭据三类问题分层定位
- 对公网开放管理入口时用证书与来源限制加固
创建 HTTPS 监听
创建 HTTPS 监听
winrm quickconfig -transport:https
winrm enumerate winrm/config/listener
# 或手工创建 HTTPS 监听
New-WSManInstance -ResourceURI winrm/config/Listener -SelectorSet @{Address='*';Transport='HTTPS'}
Get-ChildItem Cert:\LocalMachine\My | Format-Table Subject, Thumbprint
New-NetFirewallRule -DisplayName 'WinRM HTTPS' -Direction Inbound -Protocol TCP -LocalPort 5986 -Action AllowTLS 问题排查对照
| 现象 | 常见原因 | 处置方向 |
|---|---|---|
| TLS 握手失败 | 自签证书未被客户端信任 | 导入 CA;仅在测试环境考虑忽略校验 |
| 证书主机名不匹配 | SAN 不含实际连接的地址 | 按访问用的域名或 IP 重签并重绑监听 |
| 客户端缓存旧凭据 | 主机重建后证书指纹变化 | 清除客户端缓存后重试 |
| 只有 5985 能通 | 5986 未单独放行 | 为 HTTPS 另建入站规则,两条规则互不替代 |
客户端验证顺序:先用 Test-NetConnection 测端口,再用 Test-WSMan -UseSSL 验证协议与 TLS,最后才用 Enter-PSSession -UseSSL 验证凭据。按这个顺序走,网络、证书、账号三类问题立刻能分开。
与明文端口的关系:5985 与 5986 是两个独立监听器,也对应两条独立防火墙规则。启用 HTTPS 不会自动停用 HTTP,要求纯加密管理的环境必须显式禁用 HTTP 监听,否则明文入口依然可用。
不要为了方便在客户端关闭证书校验:通道仍然是加密的,但对端身份无法确认,风险从被窃听换成了被冒充。自签证书应通过导入 CA 或配置受信主机列表的方式解决,而不是一刀切跳过验证。