Compute Engine での Windows 向け Chrome リモート デスクトップのセットアップ

Last reviewed 2022-11-16 UTC

このチュートリアルでは、Compute Engine の Microsoft Windows 仮想マシン(VM)インスタンスで Chrome リモート デスクトップ サービスを設定する方法について説明します。Linux VM の個別の手順については、Linux 仮想マシンをご覧ください。Chrome リモート デスクトップを使用すると、ローカル パソコンまたはモバイル デバイスからグラフィック ユーザー インターフェースを使用してアプリケーションにリモート アクセスできます。

このチュートリアルに従うと、デフォルトのファイアウォール ルールで Chrome リモート デスクトップ接続が許可されます。ファイアウォール ルールを追加設定する必要はありません。

VM は(外部 IP アドレスで、または Cloud NAT を介して)インターネットにアクセスする必要があり、認証と認可に Google アカウントを使用します。

Chrome リモート デスクトップを設定する 2 つの方法について説明します。

  • Windows リモート デスクトップ プロトコル(RDP)を使用した対話型の方法。

    この方法では、RDP クライアントを使用してローカルマシンから VM に直接アクセスできる必要がありますが、すべての状況で利用できるとは限りません。

  • VM の作成時に起動スクリプトを使用し、Chrome リモート デスクトップをインストールして設定する非対話型の方法。

    この方法は、VM への直接アクセスを防ぐファイアウォールがある場合や、RDP クライアント(ChromeOS 上など)にアクセスできない場合に使用します。

このチュートリアルは、Microsoft Windows と PowerShell コマンドラインに精通していることを前提としています。

仮想ワークステーションを作成するためのその他のオプションについて、詳しくは仮想ワークステーションの作成をご覧ください。

目標

  • Chrome リモート デスクトップを実行する Windows Compute Engine VM インスタンスを作成します。
  • VM インスタンスに Chrome リモート デスクトップ サービスをインストールして構成します。
  • ローカル パソコンから VM インスタンス上のデスクトップ環境に接続します。

費用

このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。

  • Compute Engine

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

  8. このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

  9. Make sure that you have the following role or roles on the project: roles/compute.admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。

    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。
    8. ローカルマシンで Google Chrome ブラウザを使用します。
    9. 対話型の方法を使用する場合は、ローカルマシンに RDP クライアントが必要となり、リモート VM インスタンスに RDP で直接接続できる必要があります。

RDP を使用した対話型インストール

Chrome リモート デスクトップを対話型でインストールするには、RDP クライアントを使用してリモート VM に接続できる必要があります。このチュートリアルでは、デフォルトのファイアウォール ルールを持つデフォルトの VPC で VM を作成します。これにより、RDP ポート 3339 がインターネットに公開されます。

ご使用の環境でこの操作ができない場合は、このドキュメントで後述する非対話型の方法を使用してください。

Compute Engine インスタンスを作成する

このチュートリアルでは、デフォルトのマシンタイプを使用します。独自の環境でこれを使用している場合は、マシンタイプ、名前、リージョン、ブートディスク サイズ、その他の設定を調整できます。

コンソール

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

[VM インスタンス] に移動

  1. [作成] をクリックします。

  2. インスタンス名を crdhost に設定します。

  3. Chrome リモート デスクトップでは Windows VM 上の表示デバイスを必要とするため、[表示デバイスを有効にする] チェックボックスをオンにします。

  4. [ブートディスク] の [変更] をクリックし、[ブートディスク] パネルを開きます。

  5. [オペレーティング システム] リストで [Windows Server] を選択します。

  6. [バージョン] リストから [Windows Server 2022 Datacenter] を選択します。

  7. [選択] をクリックしてパネルを閉じます。

  8. [作成] をクリックします。

Cloud Shell

  1. Cloud Shell を開きます。

    Cloud Shell を開く

  2. 優先ゾーンを設定します。

    ZONE=us-central1-b
    REGION=us-central1
    gcloud config set compute/zone "${ZONE}"
    
  3. Windows Server 2022 Datacenter のアプリイメージを使用して Compute Engine インスタンスを作成します。

    gcloud compute instances create crdhost \
        --machine-type=e2-medium \
        --scopes=cloud-platform \
        --enable-display-device \
        --image-family=windows-2022 \
        --image-project=windows-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=crdhost
    

    このコマンドにより、表示デバイス(Windows VM の Chrome リモート デスクトップに必要)と 50 GB のブートディスクがアタッチされた Windows Server 2022 仮想マシンが作成され、インスタンスに Google Cloud APIs への完全アクセス権が付与されます。

    このチュートリアルでは高いパフォーマンスを必要としないため、ディスク パフォーマンスの警告は無視してください。

RDP を使用して VM インスタンスに接続する

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. crdhost インスタンスの名前の横に、準備完了を表す緑色のチェックマーク が表示されていることを確認します。

  3. インスタンス名 crdhost をクリックして [VM インスタンスの詳細] ページを開きます。

  4. [リモート アクセス] で [Windows パスワードを設定] をクリックし、[設定] をクリックしてリモートマシンにアカウントを作成します。

    この手順ではパスワードが生成されます。パスワードをメモするか、安全な一時ファイルにコピーします。

  5. リモート インスタンスに接続するには、[RDP] ボタンの横にある矢印 をクリックし、[RDP ファイルをダウンロード] を選択します。RDP ファイルは任意の RDP クライアントで開くことができます。

  6. パスワードの入力を求めるメッセージが RDP クライアントに表示されたら、先ほど生成したパスワードを入力します。

  7. 使用中のパソコンをネットワーク上の他のパソコンやデバイスから検出可能にするかどうかを確認するメッセージが表示されたら、[いいえ] をクリックします。

  8. サーバー マネージャーのダッシュボードが開いている場合は閉じます。

Chrome リモート デスクトップ サービスをインストールする

次に、Google Chrome と Chrome リモート デスクトップ サービスを VM インスタンスにインストールします。

  1. RDP セッションで、Windows タスクバーの [スタート] をクリックし、「PowerShell」と入力してから Windows PowerShell アプリを選択します。

  2. PowerShell プロンプトで、Chrome リモート デスクトップ ホスト インストーラをダウンロードして実行します。

      $installer = "$env:TEMP\chromeremotedesktophost.msi"
      $uri = 'https://dl.google.com/edgedl/chrome-remote-desktop/chromeremotedesktophost.msi'
      (New-Object Net.WebClient).DownloadFile($uri,"$installer") && `
        Start-Process $installer -Wait && `
        Remove-Item $installer
    
  3. プロンプトが表示されたら、インストーラによる変更を確認します。

Chrome リモート デスクトップ サービスを設定する

これで、Chrome リモート デスクトップ サービスを開始して Google アカウントにリンクする Windows コマンドが生成されるようになりました。

  1. ローカル パソコンで、Chrome ブラウザを使用して、Chrome リモート デスクトップのコマンドライン設定ページに移動します。

  2. まだログインしていない場合は、Google アカウントでログインします。これは、リモート アクセスの承認に使用されるアカウントです。

  3. [別のパソコンを設定] ページで [開始]、[次へ] の順にクリックします。

  4. [承認] をクリックします。

    Chrome リモート デスクトップにアカウントへのアクセスを許可する必要があります。承認すると、ページにいくつかのコマンドラインが表示されます。そのうちの 1 つは、次のような Windows(Powershell)用です。

    & "${Env:PROGRAMFILES(X86)}\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe" `
    --code="4/ENCODED_AUTHENTICATION_TOKEN" `
    --redirect-url="https://remotedesktop.google.com/_/oauthredirect" `
    --name=$Env:COMPUTERNAME
    
  5. [コピー] をクリックして、クリップボードにコマンドラインをコピーします。

  6. RDP セッションで、PowerShell プロンプトにて、先ほどコピーしたコマンドラインを貼り付けて Enter キーを押します。

  7. プロンプトが表示されたら、アプリケーションによる変更を確認します。

  8. プロンプトが表示されたら、6 桁の PIN を入力してください。この番号は、後で接続するときの新たな認可に使用されます。

    コマンドが完了すると、リモート デスクトップ サービスが開始されます。

  9. Powershell ウィンドウを閉じます。

  10. RDP セッションを閉じます。

これで、Chrome リモート デスクトップを使用して VM に接続できるようになりました。

非対話型インストール

このアプローチでは、VM の作成時に起動スクリプトを実行するように VM インスタンスを構成します。

このアプローチでは、インターネットにアクセスする必要はありますが、インターネットから直接アクセスされる必要はありません。

Chrome リモート デスクトップ サービスを承認する

これで、後で専用スクリプトで使用する Windows コマンドが生成されるようになりました。ここでは、コマンドに含まれる認可情報を指定します。

  1. ローカル パソコンで、Chrome ブラウザを使用して、Chrome リモート デスクトップのコマンドライン設定ページに移動します。

  2. まだログインしていない場合は、Google アカウントでログインします。これは、リモート アクセスの承認に使用されるアカウントです。

  3. [開始] をクリックしてから、[次へ] をクリックします。

  4. [承認] をクリックします。

  5. Chrome リモート デスクトップにアカウントへのアクセスを許可します。

    このページにはいくつかのコマンドラインが含まれています。そのうちの 1 つは、次のような Windows(Cmd)用のコマンドラインです。

    "%PROGRAMFILES(X86)%\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe"
    --code="4/ENCODED_AUTHENTICATION_TOKEN"
    --redirect-url="https://remotedesktop.google.com/_/oauthredirect"
    --name=%COMPUTERNAME%
    

    --code フラグには、一意の有効期間が短い OAuth トークンが含まれています。

    コマンドライン上の認証コードは数分間のみ有効であり、1 回のみ使用できます。

    このページは閉じないでください。

起動コマンドを Cloud Shell にコピーする

次のステップでは、生成したばかりの起動コマンドを含むファイルを Cloud Shell インスタンスに作成します。

  1. Cloud Shell を開きます。

    Cloud Shell を開く

  2. 起動コマンド用のファイルを作成します。

    cat  > crd-auth-command.txt
    
  3. Chrome リモート デスクトップの起動コマンドが表示されているページに移動し、Windows(Cmd)コマンドラインをコピーします。

  4. Cloud Shell で、コマンドを貼り付けてファイルに追加します。

  5. Enter キーを押して行を終了し、Ctrl+D キーを押してファイルを閉じます。

起動スクリプトを作成する

  • 次のコードブロックをコピーして Cloud Shell に貼り付けます。

    cat << "EOF" > crd-sysprep-script.ps1
    <#
        .SYNOPSIS
        GCESysprep specialize script for unattended Chrome Remote Desktop installation.
    #>
    $ErrorActionPreference = 'stop'
    
    function Get-Metadata([String]$metadataName) {
      try {
        $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/$metadataName")
      }
      catch {
        # Report but ignore REST errors.
        Write-Host $_
      }
      if ($value -eq $null -or $value.Length -eq 0) {
        throw "Metadata value for ""$metadataName"" not specified. Skipping Chrome Remote Desktop service installation."
      }
      return $value
    }
    
    # Get config from metadata
    #
    $crdCommand = Get-Metadata('crd-command')
    $crdPin = Get-Metadata('crd-pin')
    $crdName = Get-Metadata('crd-name')
    
    if ($crdPin -isNot [Int32] -or $crdPin -gt 999999 -or $crdPin -lt 0) {
      throw "Metadata ""crd-pin""=""$crdPin"" is not a 6 digit number. Skipping Chrome Remote Desktop service installation."
    }
    # Prefix $crdPin with zeros if required.
    $crdPin = $crdPin.ToString("000000");
    
    # Extract the authentication code and redirect URL arguments from the
    # remote dekstop startup command line.
    #
    $crdCommandArgs = $crdCommand.Split(' ')
    $codeArg = $crdCommandArgs | Select-String -Pattern '--code="[^"]+"'
    $redirectArg = $crdCommandArgs | Select-String -Pattern '--redirect-url="[^"]+"'
    
    if (-not $codeArg) {
      throw 'Cannot get --code= parameter from crd-command. Skipping Chrome Remote Desktop service installation.'
    }
    if (-not $redirectArg) {
      throw 'Cannot get --redirect-url= parameter from crd-command. Skipping Chrome Remote Desktop service installation.'
    }
    
    Write-Host 'Downloading Chrome Remote Desktop.'
    $installer = "$env:TEMP\chromeremotedesktophost.msi"
    $uri = 'https://dl.google.com/edgedl/chrome-remote-desktop/chromeremotedesktophost.msi'
    (New-Object Net.WebClient).DownloadFile($uri,"$installer")
    Write-Host 'Installing Chrome Remote Desktop.'
    & msiexec.exe /I $installer /qn /quiet | Out-Default
    Remove-Item $installer
    
    Write-Host 'Starting Chrome Remote Desktop service.'
    & "${env:ProgramFiles(x86)}\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe" `
        $codeArg $redirectArg --name="$crdName" -pin="$crdPin" | Out-Default
    
    Write-Host 'Downloading Chrome.'
    $installer = "$env:TEMP\chrome_installer.exe"
    $uri = 'https://dl.google.com/chrome/install/latest/chrome_installer.exe'
    (New-Object Net.WebClient).DownloadFile($uri,"$installer")
    Write-Host 'Installing Chrome.'
    & $installer /silent /install | Out-Default
    Remove-Item $installer
    
    EOF
    

    このコードブロックは、VM の作成時に実行される PowerShell スクリプトです。次の操作を行います。

    • Chrome リモート デスクトップ ホストサービスをダウンロードしてインストールします。
    • 次のメタデータ パラメータを取得します。
      • crd-command - Windows 認証と起動コマンド。
      • crd-pin - 追加の認証に使用される 6 桁の PIN。
      • crd-name - このインスタンスの名前。
    • Chrome リモート デスクトップ ホストサービスを構成して起動します。
    • Chrome ブラウザをダウンロードしてインストールします。

新しい Windows 仮想マシンを作成する

先ほど作成したファイルを使用して新しい Windows VM を作成し、Chrome リモート デスクトップを構成して設定します。

このチュートリアルでは、e2-medium マシンタイプを使用します。独自の環境でこれを使用している場合は、マシンタイプ、名前、リージョン、ブートディスク サイズ、その他の設定を調整できます。

  1. Cloud Shell で、優先ゾーンを設定します。

    ZONE=us-central1-b
    REGION=us-central1
    gcloud config set compute/zone "${ZONE}"
    
  2. Chrome リモート デスクトップの追加認証用に 6 桁の PIN を設定します。

    CRD_PIN=your-pin
    

    your-pin は、6 桁の数字に置き換えてください。

  3. この VM インスタンスの名前を設定します。

    INSTANCE_NAME=crdhost
    
  4. インスタンスを作成します。

    gcloud compute instances create ${INSTANCE_NAME} \
        --machine-type=e2-medium \
        --scopes=cloud-platform \
        --enable-display-device \
        --image-family=windows-2022 \
        --image-project=windows-cloud \
        --boot-disk-size=50GB \
        --boot-disk-device-name=${INSTANCE_NAME} \
        --metadata=crd-pin=${CRD_PIN},crd-name=${INSTANCE_NAME} \
        --metadata-from-file=crd-command=crd-auth-command.txt,sysprep-specialize-script-ps1=crd-sysprep-script.ps1
    

    このコマンドにより、表示デバイス(Windows VM の Chrome リモート デスクトップに必要)と 50 GB のブートディスクがアタッチされたデフォルト VPC の Windows Server 2022 仮想マシンが作成され、インスタンスに Google Cloud APIs への完全アクセス権が付与されます。

    メタデータ値で、Chrome リモート デスクトップ サービスの起動に必要な専用スクリプト、Windows 起動コマンドライン、パラメータを指定します。

VM の起動をモニタリングする

起動スクリプトが正常に作成されているかどうかを確認するために、VM の作成中に VM のシリアルポートに記録されたメッセージをチェックします。

  1. Cloud Shell で、VM の起動時にログに記録されたメッセージを表示します。

    gcloud compute instances tail-serial-port-output ${INSTANCE_NAME}
    

    Chrome リモート デスクトップの構成が成功すると、次のログ行が表示されます。

    Found sysprep-specialize-script-ps1 in metadata.
    sysprep-specialize-script-ps1: Downloading Chrome Remote Desktop.
    sysprep-specialize-script-ps1: Installing Chrome Remote Desktop.
    sysprep-specialize-script-ps1: Downloading Chrome.
    sysprep-specialize-script-ps1: Installing Chrome.
    sysprep-specialize-script-ps1: Starting Chrome Remote Desktop service.
    Finished running specialize scripts.
    

    また、次の行が表示される場合もあります。

    sysprep-specialize-script-ps1: ... Failed to read 'C:\ProgramData\Google\Chrome Remote Desktop\host_unprivileged.json'.: The system cannot find the path specified. (0x3)
    

    これは正常です。無視してもかまいません。

    Chrome リモート デスクトップ サービスの起動に失敗すると、問題を示すエラー メッセージが表示されます。次に例を示します。

    sysprep-specialize-script-ps1: Couldn't start host: OAuth error.
    

    このエラーは、Chrome リモート デスクトップ認証ページの OAuth トークンがすでに使用されているか期限切れになっているために、無効になったことを示しています。

    このエラーを修正するには、RDP を使用して接続し、前述のように対話型で設定を行うか、VM を削除して設定プロセスを再試行します。

    シリアルポート モニターに次のメッセージが表示されたら、VM の準備は完了です。

    GCEInstanceSetup: ------------------------------------------------------------
    GCEInstanceSetup: Instance setup finished. crdhost is ready to use.
    GCEInstanceSetup: ------------------------------------------------------------
    
  2. Control+C キーを押して、起動メッセージの表示を停止します。

Windows ユーザー アカウントを作成する

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. インスタンス名 crdhost をクリックして [VM インスタンスの詳細] ページを開きます。

  3. [リモート アクセス] で [Windows パスワードを設定] をクリックし、[設定] をクリックしてリモートマシンにアカウントを作成します。

    この手順ではパスワードが生成されます。ユーザー名とパスワードをメモするか、安全な一時ファイルにコピーします。

Chrome リモート デスクトップを使用した VM インスタンスへの接続

Chrome リモート デスクトップ ウェブ アプリケーションを使用して VM インスタンスに接続できます。

  1. ローカルのパソコンから Chrome リモート デスクトップのウェブサイトにアクセスします。

  2. [パソコンにアクセス] をクリックします。

  3. まだ Google にログインしていない場合は、Chrome リモート デスクトップ サービスの設定で使用した Google アカウントでログインします。

    新しい VM インスタンス crdhost が [リモート デバイス] リストに表示されます。

  4. リモート デスクトップ インスタンスの名前をクリックします。

  5. プロンプトが表示されたら、前に作成した PIN を入力し、矢印 ボタンをクリックして接続します。

    これで、リモートの Compute Engine インスタンスの Windows ログイン画面に接続されました。

  6. プロンプトが表示されたら、常にリモート デスクトップ アプリケーションにクリップボードの読み取りを許可し、ローカル アプリケーションとリモート アプリケーションの間でコピーして貼り付けできるようにします。

  7. 任意のキーを押して、前に生成した Windows ユーザーのパスワードを入力します。デフォルトのリモート キーボードは英語(米国)のレイアウトになっているため、入力した文字がローカル キーボードの文字と一致しない場合があります。パスワードをコピーして貼り付けることもできません。

これで、リモートの Windows デスクトップに接続してログインできました。

リモート デスクトップ エクスペリエンスを向上させる

このセクションでは、リモート デスクトップ エクスペリエンスを向上させるために設定を変更する手順について説明します。

リモート デスクトップ Chrome アプリをインストールする

リモート デスクトップ Chrome アプリでは、個別のウィンドウが開き、通常は Chrome がインターセプトするキーボード ショートカットをリモート システムで使用できます。

このアプリがインストールされていない場合は、次の操作を行います。

  1. マウスをウィンドウの端に移動すると表示されるボタン を使用して、[セッションのオプション] パネルを開きます。
  2. [アプリをインストール] セクションで [開始] をクリックします。
  3. [インストール] をクリックします。

リモート デスクトップ セッションが、専用のアプリケーション ウィンドウで再度開かれます。

アドレスバーの [アプリで開く] アイコンをクリックすると、リモート デスクトップ セッションを Chrome のタブからアプリのウィンドウに移動できます。

画面解像度を改善する

デフォルトのリモート デスクトップの解像度は、ローカル コンピュータのデスクトップの解像度に合わせて変更できます。

  1. リモート デスクトップの背景を右クリックし、[ディスプレイ設定] を選択します。
  2. [解像度] プルダウン リストで、別の画面解像度を選択します。
  3. ダイアログで新しい画面解像度を確認します。

サービスを再度有効にする

クライアント アプリでリモート インスタンスへの接続を誤って無効にした場合は、Chrome リモート デスクトップ サービスの設定の手順でサービスを再構成して、再度有効にできます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Compute Engine インスタンスの削除

プロジェクト全体を削除する代わりに、このチュートリアル用に作成した VM インスタンスを削除することもできます。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 作成したインスタンス名(crdhost)の横にあるチェックボックスをオンにします。

  3. ページ上部にある [削除] ボタンをクリックします。

    VM インスタンスの削除

    インスタンスの削除には少し時間がかかります。

インスタンスに対する Chrome リモート デスクトップの承認を解除する

VM インスタンスに接続する必要がなくなった場合は、インスタンスを無効にして、[リモート デバイス] リストから削除できます。

  1. ローカル パソコンから Chrome リモート デスクトップのリモート デバイスリストのウェブサイトにアクセスします。
  2. インスタンス名 crdhost の横にある をクリックします。
  3. [OK] をクリックして、リモート デバイス接続を無効にする必要があります。

次のステップ