You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pywinrm连接可RDP访问的Windows主机时报WinError 10061被拒求助

WinRM连接报错排查方案

报错原因

WinError 10061为目标主机主动拒绝连接,本质是目标Windows主机的WinRM服务未配置、对应端口未开放导致。RDP远程桌面走3389端口,和WinRM服务使用的5985(HTTP)、5986(HTTPS)端口完全独立,因此RDP可访问不代表WinRM可用。

具体排查步骤

  • 目标主机配置WinRM服务
    登录目标Windows主机,以管理员身份运行PowerShell,依次执行以下命令完成WinRM配置:
    # 启用WinRM远程管理服务
    Enable-PSRemoting -Force
    # 配置HTTPS类型的WinRM监听,对应5986端口
    winrm quickconfig -transport:https -Force
    # 添加入站防火墙规则,开放5986端口
    New-NetFirewallRule -Name "WinRM_HTTPS_In" -DisplayName "WinRM HTTPS 入站" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow -Enabled True
    # 开启NTLM认证支持,和代码中的transport参数匹配
    winrm set winrm/config/service/auth '@{NTLM="true"}'
    # 测试阶段可配置信任所有主机,避免拦截
    winrm set winrm/config/client '@{TrustedHosts="*"}'
    
  • 验证端口连通性
    在运行Python代码的设备上,执行以下命令验证5986端口连通性:
    # PowerShell环境执行
    Test-NetConnection 10.XX.XX.XX -Port 5986
    
    返回结果中TcpTestSucceeded为True说明端口连通正常,否则需要检查目标主机防火墙、网络ACL策略是否放行5986端口。
  • 代码适配调整
    可以在连接地址中明确指定协议与端口,避免默认配置出错:
    import winrm
    # HTTPS协议使用如下地址格式
    session = winrm.Session('https://10.XX.XX.XX:5986/wsman', auth=('admin','xxxxxx'), transport='ntlm', server_cert_validation='ignore')
    is_shell=True 
    while is_shell:
        is_dir_get_or_create = session.run_cmd(r'if exist "C:\Temp\" (echo yes) else (echo no && mkdir C:\Temp)')
        # 可输出执行结果排查命令执行问题
        print("命令输出:", is_dir_get_or_create.std_out.decode('gbk'))
        print("错误输出:", is_dir_get_or_create.std_err.decode('gbk'))
        is_shell=False
    
    如果不需要HTTPS加密,也可以改用HTTP协议的5985端口,地址改为http://10.XX.XX.XX:5985/wsman即可。

内容的提问来源于stack exchange,提问作者Rajarshi Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:24:04