遠端桌面協定疑難排解

在某些情況下,您可能無法透過遠端桌面協定連線至 Compute Engine 上的 Windows 執行個體。這可能是因為設定錯誤、網路錯誤或啟動程序未完成所致。

本頁面介紹疑難排解和解決常見遠端桌面協定問題的一些提示與方法。

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

當啟動程序完成後 (可能需要幾分鐘),您才能透過序列主控台輸出內容查看 Windows 執行個體的狀態。請連線至唯讀或互動式序列主控台,查看執行個體是否準備就緒。

  • 序列主控台 1 (唯讀)

    1. 在 Google Cloud Platform Console 的「VM instances」(VM 執行個體) 頁面中開啟 Windows 執行個體。
    2. 按一下「Connect to serial console」(連線至序列主控台) 旁的下拉式箭頭,然後選取 [Serial port 1] (序列埠 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. 在 Google Cloud Platform 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 指令可供使用的螢幕截圖

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

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

如要檢查您的專案是否有 default-allow-rdp 防火牆規則,請查看「Firewall rules」(防火牆規則) 頁面,或執行以下 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 地址。如要查看執行個體的 IP,請前往「VM instances」(VM 執行個體) 頁面,或使用以下 gcloud SDK 指令:

gcloud compute instances list

使用 Windows 遠端桌面服務 (RDS)

如果您的執行個體上已安裝 Windows 遠端桌面服務 (先前稱為終端機服務),則系統會強制執行用戶端存取使用權 (CAL)。若是具有 CAL,則遠端桌面協定連線會在發生以下任一情況時失敗:

  • 您的可用授權已全數用盡
  • 您的 RDS 試用期已到期

為了進行管理,若您的遠端桌面協定連線失敗,可使用 /admin 參數連線至執行個體。您可以使用原生遠端桌面連線用戶端在 Windows 機器完成這項作業。

%systemroot%/system32/mstsc.exe /admin

如要解決遠端桌面協定連線相關問題,請為您的執行個體購買新授權。如要進一步瞭解 CAL,請參閱 Microsoft 說明文件。或者,如果不需要遠端桌面服務,請解除安裝服務並使用一般遠端桌面協定連線。

檢查作業系統設定

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

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

  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 說明文件