WinRM 远程连接 IDA PC(2026-08-01 决策)
背景
Sozo PC 需要远程操控 IDA PC(DESKTOP-GKHUGAD, 100.103.118.9)。原计划用 OpenSSH,但 SSH 在 Tailscale 网络下 preauth 阶段反复卡死(客户端显示 “Server accepts key” 后无下文,ETW 日志显示 [preauth] 断开)。
根因分析(IDA 侧 Antigravity 诊断)
- SSH 密钥交换发大包,经 Tailscale UDP 隧道时 MTU 超限被静默丢弃(PMTUD 黑洞)
- 尝试过:MTU 1280→1200、压缩 -C、aes128-gcm、新密钥、Run unattended + 重启 → 均无效
- 双方配置 100% 正确(公钥、sshd_config、DefaultShell)
解决方案:WinRM
用 Windows 原生 WinRM(HTTP 5985)替代 SSH,一次成功:
| 项 | 值 |
|---|---|
| 端点 | http://100.103.118.9:5985/wsman |
| 用户 | IDA |
| 密码 | 用户提供的 IDA 登录密码 |
| 认证 | NTLM |
IDA 侧配置(Antigravity 执行):
Enable-PSRemoting -Force -SkipNetworkProfileCheckSet-Service WinRM -StartupType AutomaticSet-Item WSMan:\localhost\Client\TrustedHosts -Value "100.83.112.84" -Force- 防火墙规则 WinRM-In (TCP 5985)
验证(Sozo 侧)
import winrm
s = winrm.Session('http://100.103.118.9:5985/wsman', auth=('IDA','密码'), transport='ntlm')
r = s.run_cmd('cmd /c hostname') # → DESKTOP-GKHUGAD✅ 远程执行命令、写文件、读系统信息全部成功
权限对比
- WinRM 直接以 Windows 用户身份运行(IDA = Administrators 组成员 = 管理员权限)
- 比 SSH 的”映射用户”更直接,能调 PowerShell 全能力(WMI/注册表/服务)
教训
在 Tailscale/WireGuard 等 VPN 环境下,SSH 大包握手容易卡死,WinRM(HTTP)更稳。Windows 远程管理优先考虑 WinRM。
相关
- skill:
winrm-remote-control - 脚本:
D:\hermes\hsdesign_work\winrm_cmd.py