通过远程桌面连接Windows实例提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?

问题原因

  • 端口冲突:RDP默认端口3389被其他应用占用。

  • 安全协议协商失败:客户端与服务器无法完成RDP安全协议协商。

解决方案

重要

修复方案需要修改默认端口或安全协议,为防止配置错误导致无法登录,请先为系统盘手动创建单个快照对配置数据进行备份。

步骤一:检查并解决端口冲突

远程桌面服务 (RDP) 的默认端口3389可能被其他程序占用。

  1. 通过VNC连接登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。

  2. 检查端口占用情况。

    1. 在任务栏搜索框,输入PowerShell并打开。查找占用远程连接端口(默认3389)的进程PID。

      netstat -ano | findstr :3389
    2. <PID>替换为进程号,查看该进程对应的应用程序。

      tasklist |findstr <PID>
  3. 分析并处理。

    • 正常情况:占用进程为svchost.exe,说明端口未被异常占用。请直接跳至步骤二:检查并调整安全协议

    • 异常情况:占用进程为其他应用程序,需要修改RDP默认端口。

  4. 修改RDP默认端口。

    1. 选择新端口:建议在10000-65535范围内选择一个未被占用的端口。可以在PowerShell中执行命令netstat -ano | findstr :端口检查目标端口是否被占用。

    2. 修改注册表

      1. 在任务栏搜索框,输入regedit并打开注册表编辑器

      2. 在左侧导航栏中,依次展开HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Terminal Server > WinStations > RDP-Tcp。在右侧列表中,找到并双击PortNumber

      3. 选择基数选项中的十进制,将数值数据改为选择的新端口号。

    3. 重启并测试

      1. 进入目标实例详情页,单击重启,使修改生效。重启成功后,单击远程连接,选择通过Workbench远程连接

      2. 登录实例窗口中选择终端连接,单击完整选项,在端口上填写新端口号。

        重要

        修改RDP默认端口后,每次连接都需手动指定新端口。如果占用端口的进程可以安全关闭,且风险可控,可使用taskkill /f /pid <PID>关闭进程,避免每次连接都手动指定新端口。

步骤二:检查并调整安全协议

  1. 搜索gpedit.msc并打开本地组策略编辑器

  2. 依次展开计算机配置 > 管理模板 > Windows 组件 > 远程桌面服务 > 远程桌面会话主机 > 安全。在右侧列表中,找到并双击远程(RDP)连接要求使用指定的安全层

  3. 远程(RDP)连接要求使用指定的安全层对话框中,选择已启用。在下方的安全层属性,选择RDP

  4. 单击确定保存设置,然后尝试重新连接。