远程登录Windows实例发生端口冲突如何解决?

本文介绍远程登录Windows实例时,发生端口冲突导致无法登录的解决办法。

问题现象

当您在本地使用Windows操作系统自带的远程桌面连接工具MSTSC远程登录Windows实例,或在ECS控制台上使用Workbench远程登录Windows实例时,如果出现会话中断的相关提示,您将无法远程登录Windows实例。以MSTSC方式为例,提示如下:端口冲突

问题原因

Windows实例操作系统的远程连接端口(默认为3389)被其他进程或服务占用。

解决方案

您可以通过结束占用远程桌面进程的服务,或修改远程桌面默认的端口号进行处理,具体操作步骤如下:

重要
  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。建议您提前创建快照,快照相关信息,请参见快照概述
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改相关安全信息。
  1. 使用VNC连接Windows实例。

    具体操作,请参见使用VNC连接Windows实例

  2. 查看远程端口占用进程。示例操作系统:Windows Server 2022。

    1. 打开cmd命令提示符。

    2. 在命令行窗口,执行netstat -ano|findstr "3389"命令,获取远程端口占用进程。

      查看端口占用进程

    3. 执行tasklist /FI "PID eq <替换为上一步获取到的PID>"命令,查看进程详情。本示例命令为tasklist /FI "PID eq 4176"tasklist /FI "PID eq 7164"。其中返回的svchost.exe为远程桌面的进程,python.exe为占用远程桌面端口的进程。image

  3. 方式一:结束占用远程桌面端口的进程。

    1. 执行taskkill /PID <替换为要结束的进程PID> /F本示例命令为taskkill /PID 4176 /F

      重要

      为了避免对您的业务造成影响,阿里云强烈建议您在结束某一进程之前,务必充分了解该进程的具体作用,停止关键的业务进程或系统进程可能会导致业务中断,系统崩溃,实例无法连接等多种问题。

    2. 结束进程后,重新尝试使用MSTSCWorkbench远程登录Windows实例。

  4. 方式二:更改远程桌面端口。

    1. 打开regedit注册表编辑器。

      注册表编辑器

    2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp路径下,选中PortNumber,然后单击鼠标右键,将数值数据(V)修改为您需要的端口号。tcp修改PortNumber

    3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp路径下,选中PortNumber,然后单击鼠标右键,将数值数据(V)修改为您需要的端口号。

      说明

      tcpRDP-TcpPortNumber数值数据(V)必须相同。

      RDP-Tcp修改PortNumber设置完毕,Windows操作系统将自动识别新的远程服务端口号。

    4. 打开服务应用。

    5. 选中Remote Desktop Services,单击鼠标右键,然后单击重新启动(E)重启RDP服务

    6. 在安全组配置中添加新的远程服务端口号。

      具体操作,请参见添加安全组规则

    7. 重新尝试使用MSTSCWorkbench远程登录Windows实例。