Memecahkan masalah RDP


Dalam beberapa situasi, Anda mungkin tidak dapat terhubung ke instance virtual machine (VM) Compute Engine Windows dengan RDP. Hal ini mungkin disebabkan oleh error konfigurasi, error jaringan, atau proses booting mungkin belum selesai.

Dokumen ini menjelaskan sejumlah tips dan pendekatan untuk memecahkan serta menyelesaikan masalah umum RDP.

Pastikan VM online dan siap

Setelah VM selesai booting, yang mungkin memerlukan waktu beberapa menit, konfirmasi statusnya menggunakan salah satu metode berikut:

Port serial 1

Port serial 1 digunakan untuk mencatat log aktivitas aplikasi dan sistem. Lihat outputnya untuk menentukan bahwa VM Anda telah selesai melakukan booting dan apakah layanan telah dimulai dengan benar.

  1. Di Konsol Google Cloud, buka halaman VM instances.

    Buka instance VM

  2. Klik nama VM yang ingin Anda lihat log-nya. Halaman detail instance VM akan terbuka.

  3. Di bagian logs, pilih Serial port 1.

  4. Tinjau output port serial 1 dan cari output yang mirip dengan yang berikut ini:

    BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    
    UEFI: Attempting to start image.
    Description: Windows Boot Manager
    FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    OptionNumber: 3.
    
    2021/04/13 10:50:22 GCEGuestAgent: GCE Agent Started (version 20210128.00)
    2021-04-13T10:50:23.4621Z OSConfigAgent Info: OSConfig Agent (version 20210217.00.0+win@1) started.
    2021/04/13 10:50:42 GCEMetadataScripts: Starting startup scripts (version 20200129.00).
    2021/04/13 10:50:42 GCEMetadataScripts: No startup scripts to run.
    

Output yang berisi GCEGuestAgent atau GCEMetadataScripts mengonfirmasi bahwa Windows telah berhasil dimulai. Coba hubungkan kembali ke VM Anda menggunakan RDP.

Port serial 2

Port serial 2 menyediakan koneksi interaktif ke VM dan juga menampilkan output Special Administrative Console (SAC) . Anda dapat menggunakan konsol serial 2 untuk menentukan apakah layanan sistem telah berhasil dimulai.

  1. Di Konsol Google Cloud, buka halaman VM instances.

    Buka instance VM

  2. Klik nama VM yang ingin Anda lihat log-nya. Halaman detail instance VM akan terbuka.

  3. Di bagian logs, luaskan More, lalu klik Serial port 2 (console).

  4. Tinjau output port serial 2 dan cari output yang mirip dengan berikut ini:

    BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    
    UEFI: Attempting to start image.
    Description: Windows Boot Manager
    FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    OptionNumber: 3.
    
    <machine-info>
    <name>WINDOWS</name>
    <guid>b7ab5000-4000-e000-e000-bc5a738da000</guid>
    <processor-architecture>AMD64</processor-architecture>
    <os-version>10.0</os-version>
    <os-build-number>17763</os-build-number>
    <os-product>Windows Server 2019 Datacenter</os-product>
    <os-service-pack>None</os-service-pack>
    </machine-info>
    Computer is booting, SAC started and initialized.
    Use the "ch -?" command for information about using channels.
    EVENT: The CMD command is now available.
    SAC>
    

Output yang berisi SAC started and initialized atau CMD command is now available mengonfirmasi bahwa Windows telah berhasil dimulai. Coba hubungkan kembali ke VM Anda menggunakan RDP.

Screenshot VM

Screenshot VM memberikan representasi visual status VM, mirip dengan monitor komputer.

  1. Sebelum dapat mengambil screenshot VM, Anda harus mengaktifkan tampilan virtual VM. Jika Anda belum mengaktifkan tampilan virtual, lihat Mengaktifkan tampilan virtual.

  2. Ambil tangkapan layar. Untuk mengetahui informasi selengkapnya, baca Mengambil screenshot dari VM.

  3. Tinjau screenshot untuk melihat apakah instance sudah siap.

Bandingkan screenshot Anda dengan yang berikut ini untuk menentukan status saat ini:

  • Layar login Windows mengonfirmasi bahwa OS berhasil dimulai. Kini Anda dapat mencoba terhubung melalui RDP.
  • Layar progres Windows Update menunjukkan bahwa VM belum siap, beri waktu lebih lama untuk menyelesaikan update.
  • Layar pemuatan layanan menunjukkan bahwa VM belum siap, sehingga memberikan lebih banyak waktu bagi VM untuk memulai layanan yang diperlukan.
  • Layar pemuatan UEFI dapat menunjukkan file/catatan booting yang tidak ada atau sektor/pengelola booting rusak.
  • Error layar biru Windows mungkin bersifat sementara atau memerlukan pemecahan masalah lebih lanjut.

Jika Windows tidak berhasil dimulai setelah beberapa menit, baca panduan Pemecahan Masalah Windows.

Memeriksa konektivitas antara workstation Anda dan instance VM

Jika Anda mengalami masalah saat menghubungkan VM Windows, sebaiknya identifikasi apakah masalahnya ada pada workstation yang Anda gunakan untuk terhubung, atau VM yang Anda hubungkan. Periksa konektivitas antara workstation dan VM dengan menjalankan perintah berikut dari workstation Linux, macOS, atau Windows:

curl -v telnet://DESTINATION_IP_ADDRESS:PORT

Ganti kode berikut:

  • DESTINATION_IP_ADDRESS: alamat IP VM Windows Anda
  • PORT: port yang dikonfigurasi untuk terhubung melalui RDP pada VM Windows Anda

Anda juga dapat menggunakan Uji Konektivitas untuk verifikasi konektivitas lebih lanjut antara instance VM dan produk serta layanan Google Cloud lainnya. Selain itu, ada baiknya Anda juga menyiapkan bastion host pada subnetwork yang sama untuk mengisolasi masalah konektivitas RDP pada instance VM.

Memeriksa sandi instance Windows

Setiap instance Windows Compute Engine harus memiliki sandi lokal yang ditetapkan jika belum ada di domain atau image kustom. Pastikan Anda telah menetapkan sandi yang benar dengan terhubung ke VM melalui alat command line Google Cloud CLI atau konsol Google Cloud. Untuk mengetahui informasi selengkapnya, lihat Menghubungkan ke VM Windows menggunakan SAC.

Jika Anda mengalami masalah saat menghubungkan, coba buat atau reset sandi. Untuk informasi selengkapnya, lihat Membuat sandi untuk VM Windows.

Memeriksa apakah Anda menggunakan Windows Server Core

Saat terhubung menggunakan RDP, jika Anda menerima jendela Command Prompt pada latar belakang kosong, ini kemungkinan menunjukkan bahwa Anda menggunakan Windows Server Core. Untuk mengonfirmasi bahwa Anda menjalankan perintah di bawah ini:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType

Server Core dalam output mengonfirmasi bahwa Anda menggunakan edisi Windows Core.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    InstallationType    REG_SZ    Server Core

Jika Anda memerlukan antarmuka pengguna grafis untuk workload Anda, lihat cara membuat instance Windows yang berisi Desktop Experience, bukan Server Core. Atau, Anda dapat meninjau dokumentasi Microsoft untuk mengelola server Windows Core.

Periksa aturan firewall VPC Anda

Compute Engine otomatis menyediakan project baru dengan aturan firewall yang mengizinkan traffic RDP. Jika Anda sudah memiliki project, atau telah mengubah konfigurasi, aturan firewall default yang mengizinkan RDP mungkin tidak ada. Pastikan aturan mengizinkan traffic RDP untuk terhubung ke jaringan tempat instance yang terpengaruh aktif.

Untuk memeriksa apakah aturan firewall default-allow-rdp ada pada project Anda, periksa halaman aturan Firewall, atau jalankan perintah gcloud CLI berikut:

gcloud compute firewall-rules list

Untuk membuat aturan baru jika tidak ada, buat aturan dengan perintah berikut:

gcloud compute firewall-rules create allow-rdp --allow tcp:3389

Memverifikasi alamat IP eksternal

Pastikan Anda menghubungkan ke alamat IP eksternal yang benar untuk instance. Lihat IP untuk instance dari halaman instance VM atau dengan menggunakan perintah gcloud CLI berikut:

gcloud compute instances list

Penggunaan Layanan Windows Desktop Jarak Jauh (RDS)

Jika Anda telah menginstal Windows Remote Desktop Services (sebelumnya dikenal sebagai Terminal Services) pada instance Anda, persyaratan Client Access Licenses (CALs) akan diberlakukan. Dengan CAL ini, koneksi RDP akan gagal karena salah satu kondisi berikut:

  • Anda telah menggunakan semua lisensi yang tersedia
  • Lisensi Anda telah diinstal, tetapi tidak dikonfigurasi atau diaktifkan dengan benar
  • Periode uji coba RDS Anda selama 180 hari telah berakhir

Tanda bahwa Anda mungkin tidak memiliki cukup lisensi yang valid meliputi pesan seperti:

  • Sesi jarak jauh ini terputus karena tidak ada Server Lisensi Desktop Jarak Jauh yang tersedia untuk memberikan lisensi.
  • Sesi jarak jauh terputus karena terjadi error yang terkait dengan pemberian lisensi di server terminal.
  • Sesi jarak jauh terputus karena tidak ada lisensi akses klien Desktop Jarak Jauh yang tersedia untuk komputer ini.

Jika koneksi RDP gagal, Anda dapat menggunakan tombol admin untuk terhubung ke instance untuk tujuan administratif. Ini dapat dilakukan pada komputer Windows dengan menggunakan klien Koneksi Desktop Jarak Jauh asli.

%systemroot%/system32/mstsc.exe /admin

Dua sesi desktop jarak jauh serentak untuk administrasi disertakan dengan Windows Server dan image SQL Server on demand.

Untuk mengatasi masalah terkait koneksi RDP, beli lisensi RDS baru untuk instance Anda. Untuk detail selengkapnya tentang CAL, tinjau dokumentasi Microsoft. Atau, jika Layanan Desktop Jarak Jauh tidak diperlukan, uninstal layanan dan gunakan koneksi RDP reguler.

Memvalidasi resource dan konfigurasi tingkat OS

Jika lingkungan dan konfigurasi tamu untuk instance sudah benar, sistem operasi pada instance mungkin salah dikonfigurasi. Selain itu, tanpa sumber daya yang memadai, koneksi RDP mungkin akan gagal dibuat. Untuk memvalidasi konfigurasi tingkat OS, hubungkan ke SAC Windows:

Memastikan VM memiliki resource yang memadai

Pastikan CPU, memori, penggunaan disk, dan kapasitas disk yang tersedia tidak mencapai batasnya. Data ini dapat diperiksa dengan melihat metrik kemampuan observasi di konsol Google Cloud. Beberapa metrik hanya tersedia untuk VM yang telah menginstal Agen Operasional. Atau, jika Agen Operasional tidak diinstal, gunakan perintah berikut saat terhubung ke SAC:

Penggunaan CPU, penggunaan memori, penggunaan disk, dan kapasitas disk

  • Penggunaan CPU:
    typeperf "\Processor(_Total)\% Processor Time" -sc 5
  • Penggunaan memori:
    typeperf "\Memory\% Committed Bytes In Use" -sc 5
  • Penggunaan {i>disk<i}:
    typeperf "\LogicalDisk(*)\% Idle Time" -sc 5
  • Kapasitas Disk:
    fsutil volume diskfree C:

Berikut adalah penggunaan resource yang direkomendasikan untuk koneksi RDP, tetapi hal ini hanya merupakan perkiraan, dan mungkin berbeda antar-instance.

  • CPU: <80%
  • Memori: <80%
  • Ruang disk: >20%
  • Disk tidak ada aktivitas: >50%

Jika salah satu estimasi yang disarankan mencapai batasnya, Anda dapat mengubah resource tersebut untuk instance VM. Untuk mengedit properti VM, lihat cara mengedit jenis mesin instance VM dan meningkatkan ukuran persistent disk.

Periksa konfigurasi OS

Hubungkan ke instance melalui SAC dan jalankan perintah berikut untuk memastikan bahwa instance menerima koneksi:

  1. Periksa untuk melihat apakah adaptor ethernet diaktifkan:

    • Perintah:
      netsh interface show interface
    • Lulus: Status Admin ditetapkan ke Enabled pada Nama Antarmuka yang berlabel Ethernet
    • Gagal: Status Admin ditetapkan ke Nonaktif pada Nama Antarmuka yang diberi label Ethernet
    • Solusi: Aktifkan adaptor ethernet:
      netsh interface set interface Ethernet admin=enabled
  2. Periksa apakah instance memiliki konfigurasi IP yang valid:

    • Perintah:
      ipconfig /all
    • Lulus: Ethernet Adaptor Ethernet akan menampilkan Alamat IPv4 subnet tempat instance ditetapkan.
    • Gagal: Tidak ada alamat IPv4, atau alamat yang tidak cocok dengan yang ditampilkan di Konsol Google Cloud.
    • Solusi: Lanjutkan ke langkah berikutnya.
  3. Periksa apakah DHCP telah diaktifkan pada instance:

    • Perintah:
      netsh interface ipv4 show addresses
    • Lulus: Output pada bagian Ethernet berisi DHCP Enabled: Ya.
    • Gagal: Output pada bagian Ethernet berisi DHCP Enabled: Tidak.
    • Solusi: Aktifkan DHCP pada adaptor ethernet:
      netsh interface ipv4 set address Ethernet dhcp
  4. Periksa apakah 'Remote Desktop Service' sedang berjalan:

    • Perintah:
      net start | find "Remote Desktop Services"
    • Lulus: Layanan Desktop Jarak Jauh
    • Gagal: (Layanan Desktop Jarak Jauh tidak ada di output)
    • Solusi: Mulai Layanan Desktop Jarak Jauh:
      net start "Remote Desktop Services"
  5. Periksa apakah Koneksi Jarak Jauh sudah diaktifkan:

    • Perintah:
      reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
    • Lulus: fDenyTSConnections REG_DWORD 0x0
    • Gagal: fDenyTSConnections REG_DWORD 0x1
    • Solusi: Aktifkan koneksi desktop jarak jauh dalam registry:
      reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 0
  6. Pastikan firewall Windows mengaktifkan Koneksi Desktop Jarak Jauh:

    • Perintah:
      netsh advfirewall firewall show rule name="Remote Desktop -User Mode (TCP-In)"
    • Lulus: Enabled:Ya, Arah: Di, Profil: Publik, Pengelompokan: Remote Desktop, LocalIP: Apa Saja, RemoteIP: Apa Saja, Protokol:TCP, LocalPort: 3389, RemotePort: Apa pun, Edge traversal: Tidak, Tindakan: Izinkan

    • Gagal: (hasil yang tidak diharapkan, seperti diaktifkan = Tidak)

    • Solusi: Aktifkan aturan firewall "Remote Desktop" default dalam Windows Firewall:

      netsh advfirewall firewall set rule group="remote desktop" new enable=Yes

  7. Periksa nomor port yang dikonfigurasi untuk koneksi RDP pada instance jarak jauh:

    • Perintah:
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
    • Lulus: PortNumber REG_DWORD [PORT NUMBER]
    • Gagal: (nomor port yang tidak diharapkan)
    • Solusi: Konfigurasikan nomor port dalam registry yang diperlukan untuk RDP:

      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /f /v PortNumber /t REG_DWORD /d [PORT NUMBER]

  8. Pastikan aplikasi lain tidak mencoba menggunakan port yang sama:

    • Perintah:
      netstat -ano | find "3389"
    • Lulus: Cari entri untuk port RDP yang ditetapkan dengan status Listening. Layanan yang cocok dapat ditemukan menggunakan ID proses (PID) dengan menggunakan perintah berikut:
      tasklist /svc | find ""
      di mana PID adalah pengenal dari perintah sebelumnya. Output hanya boleh menampilkan Termservice.
    • Gagal: Apa pun kecuali Termservice yang menggunakan port yang ditetapkan.
    • Solusi: Konfigurasikan aplikasi/layanan untuk menggunakan nomor port lain.
  9. Pastikan akun pengguna yang terhubung memiliki izin untuk koneksi jarak jauh:

    • Perintah:
      net localgroup "Remote Desktop Users"
    • Lulus: (targetkan nama pengguna lokal/domain dalam daftar yang dihasilkan)
    • Gagal: (nama pengguna lokal/domain target tidak ada)
    • Solusi: Tambahkan aturan "Pengguna Desktop Jarak Jauh" ke pengguna di domain:

      net localgroup "Remote Desktop Users" /add [DOMAIN\USERNAME]

      Domain diperlukan hanya untuk akun pengguna di sistem yang digabungkan ke domain lain. Untuk akun lokal, tentukan nama pengguna saja.

  10. Pastikan bahwa negosiasi keamanan klien/server ditetapkan ke nilai default:

    • Perintah:
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer
    • Lulus: SecurityLayer REG_DWORD 0x1
    • Gagal: SecurityLayer REG_DWORD 0x0 (atau 0x2)
    • Solusi: Tetapkan nilai negosiasi keamanan dalam registry:
      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 1 /f
  11. Jika instance Anda terhubung ke domain Active Directory, tetapi koneksi tidak dapat dibuat, Anda mungkin akan menerima error berikut saat mencoba mengakses instance:

    The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA.
    

    Pastikan bahwa Network Level Authentication (NLA) pengguna ditetapkan ke nilai defaultnya:

    • Perintah:
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication
    • Lulus: UserAuthentication REG_DWORD 0x0
    • Gagal: UserAuthentication REG_DWORD 0x1
    • Solusi: Tetapkan nilai Autentikasi Tingkat Jaringan dalam registry:
      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
  12. Pastikan ukuran MTU Anda tidak lebih besar dari MTU jaringan:

    • Perintah:
      netsh interface ipv4 show subinterfaces
    • Lulus: Jika angka setelah MTU cocok dengan MTU jaringan VPC.
    • Gagal: Saat angka setelah MTU lebih besar dari MTU jaringan VPC.
    • Solusi: Setel MTU antarmuka ke MTU jaringan VPC:

      netsh interface ipv4 set subinterface Ethernet mtu=MTU_OF_VPC_NETWORK

      Untuk informasi selengkapnya tentang inkompatibilitas ukuran MTU, lihat dokumentasi fragmentasi paket kami.

  13. Jika mencoba terhubung ke VM menggunakan RDP dan VM menampilkan layar tata letak keyboard, Anda harus memilih bahasa dengan menghubungkan ke SAC Windows. Untuk memilih bahasa, selesaikan langkah-langkah berikut:

    1. Hubungkan ke SAC.
    2. Buka Powershell dengan mengetik powershell.
    3. Mendapatkan string bahasa yang benar.

      Get-WinUserLanguageList
    4. Atur tata letak yang diinginkan. Ganti LANGUAGE_TAG dengan tata letak bahasa yang Anda inginkan (misalnya, en-US).

      Set-WinUserLanguageList -LanguageList LANGUAGE_TAG -force
    5. Mulai ulang instance Anda.

      shutdown -r -t 0
  14. Untuk error RDP di layar login yang menyebutkan you need the right to sign in through Remote Desktop Services atau you must be granted the Allow log on through Terminal Services right, grup Remote Desktop Users atau Administrator telah dihapus dari setelan Local Computer Policy yang ada di Izinkan login melalui Layanan Desktop Jarak Jauh atau SeRemoteInteractiveLogonRight.

  15. Pastikan tidak ada izin yang memblokir autentikasi sertifikat:

    • Perintah:
      icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"
    • Lulus: Output akan menyerupai Everyone:(R,W) BUILTIN\Administrators:(F)
    • Gagal: Output tidak cocok dengan Everyone:(R,W) BUILTIN\Administrators:(F)
  16. Pastikan setelan klien perlindungan antivirus/endpoint Anda mengizinkan layanan dan nomor port yang dikonfigurasi.

Memverifikasi batas waktu tunggu sesi

Jika Anda dapat membuat koneksi RDP, tetapi setelah beberapa saat koneksinya terputus setelah beberapa waktu dengan pesan yang menyebutkan bahwa Timer Berakhir, pastikan nilai berikut sesuai dengan yang diharapkan:

Jalur Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Registry Keys:

  • MaxDisconnectionTime
  • MaxIdleTime
  • MaxConnectionTime
  • MaxDisconnectionTime
  • RemoteAppLogoffTimeLimit

Nilai ini ditetapkan dalam milidetik. Jika kunci ini tidak ada di registry Anda, maka tidak ada batas sesi pada instance VM Anda. Jika kunci ini ada dalam registry Anda, tetapi nilainya ditetapkan ke 0, sesi Anda tidak akan pernah berakhir.

Memecahkan masalah startup Windows

Jika langkah-langkah pemecahan masalah di atas belum menyelesaikan masalah koneksi RDP, instance Windows Anda mungkin tidak melakukan booting atau berjalan dengan benar. Dalam hal ini, baca panduan kami untuk memecahkan masalah Windows.

Langkah selanjutnya