RDP を使用して Compute Engine の Windows インスタンスに接続できないことがあります。この原因として、構成エラー、ネットワーク エラー、ブートプロセスの未完了などが考えられます。
このページでは RDP に関する一般的な問題をトラブルシューティングして解決するヒントと方法を紹介します。
インスタンスがオンラインであり使用準備ができていることを確認する
ブートプロセスが完了すると(数分かかる場合があります)、Windows インスタンスのステータスがシリアル コンソールの出力で確認できるようになります。インスタンスの使用準備ができているか確認するには、読み取り専用またはインタラクティブ シリアル コンソールに接続します。
シリアル コンソール 1(読み取り専用)
- Google Cloud Console の [VM インスタンス] ページで Windows インスタンスを開きます。
[シリアル コンソールに接続] の横にあるプルダウン矢印をクリックして [シリアルポート 1] を選択するか、次の
gcloud
SDK コマンドを実行します。gcloud compute connect-to-serial-port [INSTANCE_NAME] --port 1
インスタンスが起動されていて、起動スクリプトの実行が試行されたことを確認します。
Booting from Hard Disk 0... GCEWindowsAgent: GCE Agent Started (version x.x.x@x) GCEMetadataScripts: No startup scripts to run.
シリアル コンソール 2(対話型)
[VM インスタンス] ページ、または次の
gcloud
SDK コマンドを使用して、シリアル コンソールでインタラクティブ アクセスを有効にします。gcloud compute instances add-metadata [INSTANCE_NAME]^ --metadata=serial-port-enable=1
Google Cloud Console の [VM インスタンス] ページで Windows インスタンスを開きます。
[シリアル コンソールに接続] の横にあるプルダウン矢印をクリックして、[シリアルポート 2] を選択します。または、次の
gcloud
SDK コマンドを実行します。gcloud compute connect-to-serial-port [INSTANCE_NAME] --port 2
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
コマンドライン ツールか Cloud Console を使用して Windows SAC に接続し、正しいパスワードが設定されていることを確認してください。
接続に問題がある場合は、Windows インスタンスでパスワードの作成またはリセットを試してみてください。
外部 IP アドレスを検証する
対象のインスタンスへの接続に正しい外部 IP アドレスを使用していることを確認してください。インスタンスの IP を表示するには、[VM インスタンス] ページを参照するか、以下の gcloud
SDK コマンドを使用します。
gcloud compute instances list
Windows リモート デスクトップ サービス(RDS)を使用する
インスタンスに Windows リモート デスクトップ サービス(旧称ターミナル サービス)がインストールされている場合、クライアント アクセス ライセンス(CAL)の条件が適用されます。これらの CAL を使用すると、次のいずれかの条件で RDP 接続が失敗します。
- 使用可能なすべてのライセンスを使用した
- ライセンスはインストールされているが、正しく設定または有効化されていない
- RDS の 180 日の試用期間が終了した
有効なライセンスが不足している可能性がある場合は、次のようなメッセージを受け取ります。
- ライセンスを提供できるリモート デスクトップ ライセンス サーバーがないため、このリモート セッションは切断されました。
- ターミナル サーバーのライセンスに関連するエラーが発生したため、リモート セッションが切断されました。
- このパソコンで使用できるリモート デスクトップ クライアント アクセス ライセンスがないため、リモート セッションが切断されました。
RDP 接続が失敗した場合、管理スイッチを使用して、管理を目的としてインスタンスに接続できます。これは、ネイティブのリモート デスクトップ接続クライアントを使用して、Windows マシンで実行できます。
%systemroot%/system32/mstsc.exe /admin
RDP 接続の問題を解決するには、インスタンスの新しいライセンスを購入します。CAL の詳細については、Microsoft のドキュメントをご覧ください。または、リモート デスクトップ サービスが必要ない場合は、サービスをアンインストールし、通常の RDP 接続を使用します。
OS の構成を確認する
インスタンスの環境と構成が正しい場合は、インスタンスのオペレーティング システムが正しく構成されていない可能性があります。インスタンスに接続して問題をトラブルシューティングするには、インタラクティブ シリアル コンソールを使用します。
用意されているコマンドライン メソッドのいずれかを使用してインスタンスに接続し、以下の各コマンドを実行してインスタンスが接続を受け入れていることを確認します。
「リモート デスクトップ サービス」が実行されていることを確認する場合:
- コマンド: net start | find "Remote Desktop Services"
- 問題がない場合: Remote Desktop Service
- 問題がある場合: (リモート デスクトップ サービスが出力に含まれていない)
- 解決策: net start "Remote Desktop Services"
リモート接続が有効になっているか確認する場合:
- コマンド: 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
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
リモート インスタンスで 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]
接続されたユーザー アカウントにリモート接続の権限があることを確認します。
- コマンド: net localgroup "Remote Desktop Users"
- 問題がない場合: (結果リストにターゲットのローカル / ドメイン ユーザー名がある)
- 問題がある場合: (ターゲットのローカル / ドメイン ユーザー名がない)
解決策: net localgroup "Remote Desktop Users" /add [DOMAIN\USERNAME]
MTU サイズがネットワーク MTU 以下であることを確認します。
- コマンド: netsh interface ipv4 show subinterfaces
- 成功: MTU に続く数字が VPC ネットワークの MTU と一致する。
- 失敗: MTU に続く数字が VPC ネットワークの MTU より大きい。
解決策: netsh interface ipv4 set subinterface Ethernet mtu=MTU_OF_VPC_NETWORK
Note: VPC networks have a default maximum transmission unit (MTU) of1460
bytes. However, the network MTU can be set to1500
bytes. See Maximum transmission unit for background on network MTUs.
使用しているウイルス対策やエンドポイント保護のクライアント設定で、構成されたポート番号とサービスが許容されるかどうかを確認します。
ディスクを新しいインスタンスで使用する
さまざまなトラブルシューティング手順を行っても接続の問題が解決しない場合、既存のインスタンスを削除して永続ディスクを保存する方法も可能です。そのディスクを新しいインスタンスにマウントし直してから再度トラブルシューティングを行うか、単純にそのディスクから既存のデータを復元します。
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