GCP VPN场景下WinRM无法通过内网IP访问GCP Windows VM问题
故障根因
这个报错和GCP防火墙规则、VPN链路连通性没有关系,是WinRM客户端默认安全策略的拦截逻辑导致:
- 你用公网IP能连接成功,本质是之前测试公网访问时,已经把公网IP加入过本地客户端的TrustedHosts列表,或者公网IP匹配了已有的信任规则
- 访问内网IP时,该地址不在本地WinRM的信任主机清单内,且当前连接既没有使用Kerberos域认证、也没有走HTTPS加密传输,直接被客户端本地策略拦截,请求根本没发送到目标GCP虚拟机侧。
排查&修复步骤
- 先验证网络层连通性,彻底排除网络侧问题
在接入VPN的本地设备上执行端口探测命令,确认到内网IP的WinRM默认端口连通性正常:
返回结果中Test-NetConnection -ComputerName 10.xxx.x.xx -Port 5985TcpTestSucceeded为True即可确认网络层无拦截。 - 将目标内网IP加入本地WinRM信任主机列表
以管理员权限启动PowerShell,执行以下命令添加信任规则,-Concatenate参数会保留原有已配置的信任地址,不会覆盖原有列表:
配置完成后执行以下命令确认规则已生效:# 仅添加单个目标内网IP Set-Item WSMan:\localhost\Client\TrustedHosts -Value "10.xxx.x.xx" -Concatenate # 如果需要信任整个GCP VPC内网段,可直接配置通配符,例如VPC网段为10.128.0.0/16时可写 # Set-Item WSMan:\localhost\Client\TrustedHosts -Value "10.*" -ConcatenateGet-Item WSMan:\localhost\Client\TrustedHosts - 重新执行原远程命令验证即可
Invoke-Command -ComputerName 10.xxx.x.xx -ScriptBlock {Get-UICulture} -Credential $credential
生产环境可选优化方案
TrustedHosts配置不会校验目标主机身份,存在中间人攻击风险,生产场景建议改用以下两种方案之一,无需配置TrustedHosts即可正常连接:
- 将本地访问端和GCP侧Windows虚拟机接入同一AD域,使用Kerberos认证完成WinRM连接
- 在GCP Windows虚拟机上配置WinRM HTTPS监听,绑定可信CA签发的证书,连接时追加
-UseSSL参数走加密传输
内容的提问来源于stack exchange,提问作者user1258028
相关产品推荐
相关产品推荐

