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

本文介绍通过远程桌面连接Windows实例提示“由于协议错误,会话将被中断。请重新连接到远程计算机。”错误的解决方案。

问题描述

远程连接Windows系统的ECS实例时,提示协议错误。具体的报错显示如下:

116

问题原因

可能导致该问题的部分原因如下:

解决方案

根据实际情况,选择对应方案进行解决。本文以Windows Server 2016操作系统为例。

方案一:修改目标实例的远程会话配置

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过密码认证登录Windows实例

  2. 右键单击Dingtalk_20210510142550.jpg图标,然后单击运行(R),输入gpedit.msc命令,打开本地组策略编辑器

  3. 本地组策略编辑器窗口,选择计算机配置 > 管理模板 > Windows 组件 > 远程桌面服务 > 远程桌面会话主机 > 安全

  4. 安全目录中,双击远程(RDP)连接要求使用指定的安全层

    111
  5. 在弹出对话框中选择已启用 ,在安全层选项中选择RDP,单击确定222

  6. 执行以下命令,完成策略更新,使以上的设置生效。

    1. 右键单击Dingtalk_20210510142550.jpg图标,然后单击运行(R),输入cmd命令,打开命令行。

    2. 执行gpupdate命令,完成策略更新。

      系统显示类似如下图。

  7. 再次进行远程连接,确认问题已经修复。

方案二:修改远程连接端口号

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过密码认证登录Windows实例

  2. 右键单击Dingtalk_20210510142550.jpg图标,然后单击运行(R),输入regedit,打开注册表编辑器

  3. 注册表编辑器窗口,依次进入以下目录。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  4. 双击RDP-Tcp目录中名称为PortNumber的注册表项。112

  5. 在编辑页面中,选择基数选项中的十进制,修改数值数据中的值,该值即为远程桌面使用的端口号。

    113
    说明

    图中的3389端口号为远程连接的默认端口号,仅作为示例。请根据实际情况修改成所需的端口号

  6. 重启Windows实例以更新配置。

    • 方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例

    • 方式二:在远程连接的Windows实例上,选择Dingtalk_20210510142550.jpg > 电源管理 > 重启

      win2016重启服务器

方案三:关闭占用远程连接端口的应用进程

  1. 通过VNC连接Windows实例。

    具体操作,请参见通过密码认证登录Windows实例

  2. 右键单击Dingtalk_20210510142550.jpg图标,然后单击运行(R),输入cmd命令,打开命令行

  3. 执行以下命令,获取占用远程连接端口的进程号(PID)

    netstat -ano |findstr 3389
    说明

    此处以远程连接默认端口号3389为例,需要以实际情况为准。

  4. 执行以下命令,根据PID查看进程对应的应用程序。

    正常情况下,远程连接端口被svchost.exe进程占用。如果远程连接端口被svchost.exe之外的进程占用,则表明远程连接端口的确被其他应用所占用。

    tasklist |findstr [$PID]
    说明

    [$PID]指上一步获取的PID。

  5. 您可以执行以下命令,根据PID关闭指定的进程,释放被占用的远程连接端口。

    重要

    关闭进程属于风险操作,请确保关闭进程后不影响业务运行,方可执行此操作。

    taskkill /f /pid [$PID]
  6. 再次进行远程连接,确认问题已经修复。