遠端桌面協定疑難排解

在某些情況下,您可能無法透過遠端桌面協定 (RDP) 連線至 Google Compute Engine 上的 Windows 執行個體。這個問題可能是由於任意數量的網路或設定錯誤所致。本頁面介紹疑難排解和解決常見 RDP 問題的一些提示與方法。

確認執行個體已上線且準備就緒

您可以透過序列主控台查看 Windows 執行個體的狀態。請連線至唯讀或互動式序列主控台,確認執行個體是否準備就緒。

  • 序列主控台 1 (唯讀)

    1. 從 Cloud Console 中的「VM instances」(VM 執行個體) 頁面上開啟您的 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. 您可以透過「VM instance」(VM 執行個體) 頁面或使用以下 gcloud SDK 指令,在序列主控台上啟用互動式存取權

      gcloud compute instances add-metadata [INSTANCE_NAME]^
      --metadata=serial-port-enable=1
      
    2. 從 Cloud Console 中的「VM instances」(VM 執行個體) 頁面上開啟您的 Windows 執行個體。

    3. 點選「Connect to serial console」(連線至序列主控台) 旁邊的下拉式箭頭,然後選取 [Serial port 2] (序列埠 2);或執行以下 gcloud SDK 指令:

      gcloud compute connect-to-serial-port [INSTANCE_NAME] --port 2
      
    4. 確認 cmd 程序可供使用。

      SAC cmd 指令可供使用的螢幕擷取畫面

檢查您的虛擬私人雲端防火牆規則

Google Compute Engine 會自動為新專案佈建允許遠端桌面協定流量的防火牆規則。如果您目前已有專案,或已修改過設定,則允許遠端桌面協定的預設防火牆規則可能並不存在。因此,請確認規則是否允許 RDP 流量連線至受影響執行個體所在的網路。

如要檢查您的專案是否有 default-allow-rdp 防火牆規則,請查看「Firewall Rules」(防火牆規則) 頁面,或執行以下 gcloud SDK 指令:

gcloud compute firewall-rules list

如果專案中沒有上述規則,請使用以下指令建立規則:

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

檢查您的 Windows 執行個體密碼

如果 Google Compute Engine 的 Windows 執行個體並未位於網域或自訂映像檔上,則每個執行個體都須設有本機密碼。請透過 gcloud 指令列工具或 GCP 主控台連線至 Windows SAC,確認您已設有正確密碼。

如果無法連線,請嘗試在 Windows 執行個體上建立或重設密碼

驗證外部 IP 位址

確認您是連線至執行個體的正確外部 IP 地址。如要檢查執行個體的 IP,請查看 VM 執行個體頁面,或使用以下 gcloud SDK 指令:

gcloud compute instances list

檢查作業系統設定

如果執行個體的環境和設定都正確,則可能是執行個體的作業系統設定有誤。您可以使用互動式序列主控台連線至執行個體,並排解這個問題。

透過其中一項可用的指令列方法連線至執行個體,然後執行以下指令,確認執行個體會接受連線:

  1. 檢查「遠端桌面服務」是否正在執行:

    • 指令:net start | find "Remote Desktop Services"
    • 通過:Remote Desktop Service
    • 失敗:(輸出結果中沒有 Remote Desktop Service)
    • 解決方案: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)"
    • 通過:Enabled:Yes, Direction: In, Profiles: Public, Grouping: Remote Desktop, LocalIP: Any, RemoteIP: Any, Protocol:TCP, LocalPort: 3389, RemotePort: Any, Edge traversal: No, Action: Allow

    • 失敗:(意外結果,例如 enabled = No)

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

  4. 檢查遠端執行個體上為遠端桌面協定連線設定的通訊埠編號為何:

    • 指令: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, Bytes In 915643107, Bytes Out 681487030, Interface: Ethernet

    • 失敗:(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 說明文件