本文介绍通过远程桌面连接Windows实例提示“由于协议错误,会话将被中断。请重新连接到远程计算机。”错误的解决方案。
问题描述
远程连接Windows系统的ECS实例时,提示协议错误。具体的报错显示如下:
问题原因
可能导致该问题的部分原因如下:
- 目标实例的远程会话配置错误。当远程会话配置错误,远程连接时会出现协议错误的提示。
- 目标实例的远程连接端口被其他应用占用。Windows系统默认远程桌面连接端口号为3389,当该端口被其他程序占用时,远程连接服务将无法正常运行。
解决方案
根据实际情况,选择对应方案进行解决。本文以Windows Server 2016操作系统为例。
方案一:修改目标实例的远程会话配置
- 通过VNC连接Windows实例。
- 右键单击
图标,然后单击运行(R),输入gpedit.msc
命令,打开本地组策略编辑器。
- 在本地组策略编辑器窗口,选择计算机配置 > 管理模板 > Windows 组件 > 远程桌面服务 > 远程桌面会话主机 > 安全。
- 在安全目录中,双击远程(RDP)连接要求使用指定的安全层。
-
- 在弹出对话框中选择已启用 ,在安全层选项中选择RDP,单击确定。
- 执行以下命令,完成策略更新,使以上的设置生效。
- 右键单击
-
图标,然后单击运行(R),输入cmd
命令,打开命令行。 - 执行
gpupdate
命令,完成策略更新。
系统显示类似如下图。
- 再次进行远程连接,确认问题已经修复。
方案二:修改远程连接端口号
- 通过VNC连接Windows实例。
- 右键单击
图标,然后单击运行(R),输入regedit
,打开注册表编辑器。
- 在注册表编辑器窗口,依次进入以下目录。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
- 双击RDP-Tcp目录中名称为PortNumber的注册表项。
- 在编辑页面中,选择基数选项中的十进制,修改数值数据中的值,该值即为远程桌面使用的端口号。
说明
- 图中的3389端口号为远程连接的默认端口号,仅作为示例。请根据实际情况修改成所需的端口号
- 重启Windows实例以更新配置。
- 方式一:在ECS控制台上重启Windows实例,具体操作,请参见重启实例。
- 方式二:在远程连接的Windows实例上,选择
>
> 重启。
方案三:关闭占用远程连接端口的应用进程
- 通过VNC连接Windows实例。
- 右键单击
图标,然后单击运行(R),输入cmd
命令,打开命令行。
执行以下命令,获取占用远程连接端口的进程号(PID)。
netstat -ano |findstr 3389
说明
- 此处以远程连接默认端口号3389为例,需要以实际情况为准。
- 执行以下命令,根据PID查看进程对应的应用程序。
正常情况下,远程连接端口被svchost.exe进程占用。如果远程连接端口被svchost.exe之外的进程占用,则表明远程连接端口的确被其他应用所占用。
tasklist |findstr [$PID]
- 说明
[$PID]指上一步获取的PID。 - 您可以执行以下命令,根据PID关闭指定的进程,释放被占用的远程连接端口。
重要
- 关闭进程属于风险操作,请确保关闭进程后不影响业务运行,方可执行此操作。
taskkill /f /pid [$PID]
- 再次进行远程连接,确认问题已经修复。