RDP 问题排查

在某些情况下,您可能无法通过 RDP 连接 Compute Engine Windows 实例。导致此问题的原因可能包括配置错误、网络错误或者启动过程尚未完成。

本页面介绍了排查和解决常见 RDP 问题的一些提示和方法。

确保实例已联机并准备就绪

启动过程可能需要几分钟的时间,完成后,您便可以通过串行控制台输出获得 Windows 实例的状态。连接到只读或交互式串行控制台以检查实例是否已准备就绪。

  • 串行控制台 1(只读)

    1. 从 Google Cloud Platform Console 中的“虚拟机实例”页面打开 Windows 实例。
    2. 点击连接到串行控制台旁边的下拉箭头,选择串行端口 1,或使用下面的 gcloud SDK 命令:

      gcloud compute connect-to-serial-port [INSTANCE_NAME] --port 1
      
    3. 确认该实例已启动并尝试运行启动脚本。

      Booting from Hard Disk 0...
      GCEWindowsAgent: GCE Agent Started (version x.x.x@x)
      GCEMetadataScripts: No startup scripts to run.
      
  • 串行控制台 2(交互式)

    1. 通过“虚拟机实例”页面或以下 gcloud SDK 命令,启用对串行控制台的交互式访问

      gcloud compute instances add-metadata [INSTANCE_NAME]^
      --metadata=serial-port-enable=1
      
    2. 从 Google Cloud Platform Console 中的“虚拟机实例”页面打开 Windows 实例。

    3. 点击连接到串行控制台旁边的下拉箭头,然后选择串行端口 2。您也可以运行以下 gcloud SDK 命令:

      gcloud compute connect-to-serial-port [INSTANCE_NAME] --port 2
      
    4. 确认 cmd 进程可以使用。

      可用的 SAC cmd 命令的屏幕截图

检查您的 VPC 防火墙规则

Compute Engine 会自动使用允许 RDP 流量的防火墙规则来预配新项目。如果您使用已有项目或已修改过配置,则允许 RDP 的默认防火墙规则可能不存在。因此,请确认防火墙规则允许 RDP 流量连接到受影响实例所在的网络。

如需检查您的项目中是否存在 default-allow-rdp 防火墙规则,请查看“防火墙规则”页面或运行以下 gcloud SDK 命令:

gcloud compute firewall-rules list

如需创建新的防火墙规则(如果不存在),请使用以下命令:

gcloud compute firewall-rules create allow-rdp --allow tcp:[PORT_NUMBER]

检查 Windows 实例密码

每个 Compute Engine Windows 实例都必须在网域或自定义映像中设置本地密码(如果尚未设置)。请使用 gcloud 命令行工具或 GCP Console 连接到 Windows SAC,确认已设置正确的密码。

如果在连接时遇到问题,请尝试在该 Windows 实例上创建或重置密码

验证外部 IP 地址

确保您连接的是实例的正确外部 IP 地址。您可以从“虚拟机实例”页面或使用以下 gcloud SDK 命令查看实例的 IP 地址:

gcloud compute instances list

使用 Windows 远程桌面服务 (RDS)

如果您的实例上安装了 Windows 远程桌面服务(以前称为“终端服务”),则系统会强制执行客户端访问许可 (CAL) 的条件。使用这些 CAL 时,RDP 连接将在以下任何条件下失败:

  • 您用完了所有可用许可
  • 您的 RDS 试用期已结束

如果您的 RDP 连接失败,可以使用 admin 开关连接到实例以进行管理。您可以在 Windows 机器上通过使用远程桌面连接原生客户端执行此操作。

%systemroot%/system32/mstsc.exe /admin

如需解决 RDP 连接问题,请为您的实例购买新的许可。如需详细了解 CAL,请参阅 Microsoft 文档。或者,如果不需要使用远程桌面服务,请卸载该服务并使用常规 RDP 连接。

检查操作系统配置

如果实例的环境和配置都正确,则实例上的操作系统可能未正确配置。您可以使用互动式串行控制台连接到实例并排查问题。

通过一种可用的命令行方法连接到实例,并运行以下命令以确保实例接受连接:

  1. 检查“远程桌面服务”是否正在运行:

    • 命令:net start | find "Remote Desktop Services"
    • 通过:远程桌面服务
    • 未通过:(输出中缺少远程桌面服务)
    • 解决方案:net start "Remote Desktop Services"
  2. 检查远程连接是否已启用:

    • 命令:reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
    • 通过:fDenyTSConnections REG_DWORD 0x0
    • 未通过:fDenyTSConnections REG_DWORD 0x1
    • 解决方案:reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 0
  3. 确保 Windows 防火墙已启用远程桌面连接:

    • 命令:netsh advfirewall firewall show rule name="Remote Desktop - User Mode (TCP-In)"
    • 通过:已启用:是;方向:输入;配置文件:公共;分组:远程桌面;LocalIP:任意;RemoteIP:任意;协议:TCP;LocalPort:3389;RemotePort:任意;边缘遍历:否;操作:允许

    • 未通过:(出现意外结果,例如 enabled = No)

    • 解决方案:netsh firewall set service remotedesktop enable

  4. 查看在远程实例上为 RDP 连接配置的端口号:

    • 命令:reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
    • 通过:PortNumber REG_DWORD [PORT NUMBER]
    • 未通过:(出现意外的端口号)
    • 解决方案:reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /f /v PortNumber /t REG_DWORD /d [PORT NUMBER]

  5. 确保已连接的用户帐号有权进行远程连接:

    • 命令:net localgroup "Remote Desktop Users"
    • 通过:(结果列表中有目标本地/网域用户名)
    • 未通过:(结果列表中缺少目标本地/网域用户名)
    • 解决方案:net localgroup "Remote Desktop Users" /add [DOMAIN\USERNAME]

  6. 确认您的 MTU 大小不超过 1460:

    • 命令:netsh interface ipv4 show subinterfaces
    • 通过:MTU 1460,MediaSenseState 1,字节输入 915643107,字节输出 681487030,接口:以太网

    • 未通过:(MTU 设置大于 1460)

    • 解决方案:netsh interface ipv4 set subinterface Ethernet mtu=1460

  7. 确保您的防病毒/端点防护客户端设置允许使用已配置的端口号和服务。

在新实例上使用磁盘

如果其他问题排查步骤无法解决连接问题,您可以删除现有实例并保留永久性磁盘。然后将该磁盘重新装载到新实例并再次尝试进行问题排查,或者只通过磁盘恢复现有数据。

gcloud compute instances delete [INSTANCE_NAME] --keep-disks=boot
gcloud compute instances create [NEW_INSTANCE_NAME] --disk name=[DISK_NAME],boot=yes,auto-delete=no
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档