インスタンスへの接続


このドキュメントでは、Compute Engine で実行されている Linux インスタンスまたは Windows インスタンスに接続するための基本的な方法について説明します。

PuTTY などのサードパーティ ツールでインスタンスに接続する高度な方法については、高度な方法によるインスタンスへの接続をご覧ください。

始める前に

このドキュメントのコマンドラインの例を使用する場合は、次の操作を行います。

  1. gcloud コマンドライン ツールの最新バージョンをインストールするか、最新バージョンに更新します。
  2. デフォルトのリージョンとゾーンを設定します。

Linux インスタンスへの接続

接続する前に、次の注意事項を確認してください。

  • VM インスタンスに SSH 経由でアクセスできる必要があります。デフォルトでは、Compute Engine はポート 22 経由の TCP 接続を許可するファイアウォール ルールを作成します。これらのファイアウォール ルールが存在するかどうかを確認するには、Cloud Console のファイアウォール ルールのページにアクセスして、tcp:22 接続を許可するファイアウォール ルールを探してください。

  • 必要であれば、Linux インスタンスのゲスト属性としてホストキーを保存し、セキュリティ レイヤを追加することもできます。詳細については、このドキュメントのゲスト属性を有効にしてホストキーを保存するをご覧ください。

Google Cloud Console または gcloud コマンドライン ツールを使用して Linux インスタンスに接続するには、以下のいずれかのタブの操作を行います。

Console

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

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

  2. 仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。

    インスタンス名の横にある SSH ボタン。

gcloud

gcloud compute ssh コマンドを使用して、アクセス権限を持つインスタンスに接続します。

gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME

次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれているプロジェクトの ID
  • ZONE: インスタンスが存在するゾーンの名前
  • VM_NAME: インスタンスの名前

gcloud コマンドライン ツールにデフォルトのプロパティを設定した場合は、このコマンドから --project フラグと --zone フラグを省略できます。例:

gcloud compute ssh VM_NAME

接続に成功したら、ターミナルを使用して Linux インスタンスでコマンドを実行します。終了したら、exit コマンドを使用してインスタンスから切断します。

SSH 認証鍵の保存場所

初めて VM インスタンスに接続すると、Compute Engine によって SSH 認証鍵ペアが生成され、次のいずれかの場所に保存されます。

  • デフォルトでは、生成された鍵ペアはプロジェクトまたはインスタンス メタデータに追加されます。
  • OS Login を使用するようにアカウントを構成している場合、生成された鍵はユーザー アカウントとともに保存されます。

このドキュメントで説明する方法で接続する場合は SSH 認証鍵ペアの保存場所を知る必要はありませんが、高度な方法で接続する場合は SSH 認証鍵ペアの格納場所を知っておく必要があります。

ゲスト属性を有効にしてホストキーを保存する

ホストキーとは、特定のホストまたはマシンを識別する鍵ペアのことです。ホストキーは、リモートホストに接続する際に、目的のマシンに接続していることを確認するために使用されます。

gcloud compute ssh を使用して Linux インスタンスに接続している場合は、ホストキーをゲスト属性として保存することでセキュリティのレイヤを追加できます。

SSH ホストキーをゲスト属性として保存すると、中間者(MITM)攻撃などの脆弱性から保護できるため、接続のセキュリティが向上します。ゲスト属性が有効になっている場合、VM インスタンスの初回起動時に Compute Engine は生成されたホストキーをゲスト属性として保存します。その後、Compute Engine は保存されているホストキーを使用して、VM インスタンスへの以降の接続をすべて検証します。

ホストキーは、次の公開オペレーティング システム イメージのゲスト属性として保存できます。

  • Debian
  • Ubuntu
  • Red Hat Enterprise Linux(RHEL)
  • CentOS
  • SUSE Linux Enterprise Server(SLES)

ゲスト属性にホストキーを書き込むには、VM インスタンスを初めて起動する前にゲスト属性を有効にする必要があります。インスタンスの作成時に選択した VM インスタンスまたはプロジェクト全体でゲスト属性を有効にできます。

プロジェクトまたは VM でゲスト属性を有効にすると、ゲスト OS エージェントはホストキーをゲスト属性として自動的に公開します。プレーン SSH クライアントの代わりに gcloud compute ssh を使用する場合、gcloud ツールが次回接続時に属性を自動的に読み取り、known_hosts ファイルを更新します。

ホストキーをゲスト属性として保存するには、次の手順を行います。

  1. VM インスタンスを初めて起動する前に、インスタンスの作成時に選択した VM インスタンスまたはプロジェクト全体でゲスト属性を有効にします

  2. gcloud compute ssh を使用してインスタンスに接続します。

    1. gcloud コマンドライン ツールの最新バージョンがあることを確認します。

      gcloud components update
      
    2. インスタンスに接続します。

      gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME
      

      次のように置き換えます。

      • PROJECT_ID: インスタンスが含まれているプロジェクトの ID
      • ZONE: インスタンスが存在するゾーンの名前
      • VM_NAME: インスタンスの名前

      gcloud コマンドライン ツールにデフォルトのプロパティを設定した場合は、このコマンドから --project フラグと --zone フラグを省略できます。例:

      gcloud compute ssh VM_NAME
      
    3. 起動メッセージを確認します。たとえば、Debian オペレーティング システムでは次のメッセージが表示される場合があります。

      Writing 3 keys to YOUR_HOME_DIRECTORY/.ssh/google_compute_known_hosts
      Linux host-key-2 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u3 (2019-06-16) x86_64

ホストキーがインスタンスのゲスト属性として保存されていることを確認するには、ホストキーが存在するシリアルポートを確認します(オプション 1)。または、ホストキーの値を調べて、インスタンスのゲスト属性に SSH 認証鍵が書き込まれていることを確認します(オプション 2)。

オプション 1: シリアルポートを確認する

  1. シリアルポート出力を表示します。
  2. [シリアルポート 1] を選択します。
  3. 次のメッセージを検索します。

    INFO Wrote ssh-rsa host key to guest attributes

    サポートされているオペレーティング システムをイメージで使用しているにもかかわらず、VM の初回起動前にゲスト属性の設定が有効になっていない場合、次のメッセージが表示される場合があります。

    Unable to write ssh-rsa host key to guest attributes

    このメッセージは、ホストキーがインスタンスのゲスト属性として保存されていないことを示しています。作成する追加インスタンスのホストキーを保存する場合は、インスタンスを最初に起動する前にゲスト属性を有効にします。

オプション 2: ホストキーの値を確認する

gcloud コマンドライン ツールを使用して、SSH 認証鍵がゲスト属性に書き込まれていることを確認できます。

gcloud compute instances get-guest-attributes VM_NAME \
    --query-path="hostkeys/" \
    --zone=ZONE

次のように置き換えます。

  • VM_NAME: インスタンスの名前
  • ZONE: インスタンスが存在するゾーンの名前

出力は次のようになります。

NAMESPACE  KEY                  VALUE
hostkeys   ecdsa-sha2-nistp256  AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBJAGpTm
                                V3mFxBTHK1NIu9a7kVQWaHsZVaFUsqF8cLxQRQ+N96/Djiiuz1tucHQ8vBTJI=
hostkeys   ssh-ed25519          AAAAC3NzaC1lZDI1NTE5AAAAIM/WYBn3jIEW5t3BZumx0X/Htm61J6S9FcU8L
hostkeys   ssh-rsa              AAAAB3NzaC1yc2EAAAADAQABAAABAQDU3jReR/MoSttlWYfauW6qEqS2dhe5
                                Zdd3guYk2H7ZyxblNuP56nOl/IMuniVmsFa9v8W6MExViu6G5Cy4iIesot09
                                1hsgkG0U7sbWrXM10PQ8pnpI3B5arplCiEMhRtXy64rlW3Nx156bLdcxv5l+
                                7Unu4IviKlY43uqqwSyTv+V8q4ThpQ9dNbk1Gg838+KzazljzHahtbIaE1rm
                                I0L1lUqKiKLSLKuBgrI2Y/WSuqvqGEz+bMH7Ri4ht+7sAwykph6FbOgKqoBI
                                hVWBo38/Na/gEuvtmgULUwK+xy9zWg9k8k/Qtihc6El9GD9y

Windows インスタンスへの接続

接続する前に、次の注意事項を確認してください。

  • VM インスタンスに RDP 経由でアクセスできる必要があります。デフォルトでは、Compute Engine は TCP ポート 3389 で RDP アクセスを許可するファイアウォール ルールを作成します。これらのファイアウォール ルールが存在するかどうかを確認するには、Cloud Console のファイアウォール ルールのページにアクセスして、tcp:3389 接続を許可するファイアウォール ルールを探してください。

Compute Engine では、複数の方法で Windows インスタンスに接続できます。

Windows インスタンスへの接続。

リモート デスクトップ

Windows インスタンスのリモート デスクトップに接続する最適な方法は、いくつかの要因によって異なります。

  • 公共のインターネット(上の図の > の任意の場所)から接続している場合は、プロジェクトで Identity-Aware Proxy TCP 転送を有効にすることをおすすめします。次に、IAP Desktop(Windows の場合)を使用するか、gcloud コマンドライン ツールをネイティブ RDP クライアントと一緒に使用して、Windows インスタンスに接続します。Identity-Aware Proxy TCP 転送を使用できない場合は、Chrome リモート デスクトップを使用します。
  • VM インスタンスにパブリック IP アドレスがあり、ファイアウォール ルールで RDP アクセスが許可されている場合は、Chrome RDP for Google Cloud ブラウザ プラグインを使用するか、Microsoft リモート デスクトップ接続アプリなどのネイティブ RDP クライアントを使用します。
  • VM インスタンスにパブリック IP がなく、Cloud VPN または Cloud Interconnect を使用して接続している場合は、Microsoft リモート デスクトップ接続アプリなどのネイティブ RDP クライアントを使用して VM のプライベート IP アドレスに接続できます。

RDP で接続できない場合は、RDP のトラブルシューティングをご覧ください。リモート デスクトップを使用して Windows インスタンスに接続できない場合は、このドキュメントの Special Administrative Console(SAC)をご覧ください。

Windows インスタンスのリモート デスクトップに接続するには、次のいずれかの手順を使用します。

IAP Desktop

IAP Desktop は、Windows VM インスタンスに対する複数のリモート デスクトップ接続を管理できる Windows アプリケーションです。IAP Desktop は、Identity-Aware Proxy TCP 転送を使用して VM インスタンスに接続します。VM インスタンスにパブリック IP アドレスは必要ありません。

IAP Desktop を使用して接続する前に、次の前提条件を満たしていることを確認してください。

IAP Desktop を使用して VM インスタンスに接続するには、次の操作を行います。

  1. IAP Desktop で、[File] > [Add Google Cloud project] の順に選択します。

  2. プロジェクトの ID または名前を入力して、[OK] をクリックします。

  3. [Project Explorer] ウィンドウで、接続する VM インスタンスを右クリックして、[Connect] を選択します。

    IAP Desktop。

IAP デスクトップの詳細については、GitHub プロジェクトのページをご覧ください。

リモート デスクトップ接続アプリ

Windows の一部である Microsoft リモート デスクトップ接続アプリを使用して、Windows インスタンスに接続できます。

Microsoft リモート デスクトップ接続アプリで接続する前に、次のいずれかの前提条件を満たしていることを確認します。

  • VM インスタンスにパブリック IP アドレスが設定されており、ファイアウォール ルールで、ポート 3389 を使用して、クライアントのパブリック IP アドレスからインスタンスへの TCP の上り(内向き)トラフィックを許可している。
  • ローカル ネットワークが Cloud VPN または Cloud Interconnect を通じて VPC に接続されており、ファイアウォール ルールで、ポート 3389 を使用して、クライアントのプライベート IP アドレスからインスタンスへの TCP の上り(内向き)トラフィックを許可している。

Microsoft Windows リモート デスクトップで接続するには、次の手順に従います。

  1. まだ作成していない場合は、Windows アカウントとパスワードを作成します。

  2. インターネット経由で接続するには、外部 IP アドレスを使用します。VPN または Cloud Interconnect を使用して接続するには、内部 IP アドレスを使用します。

    次のいずれかの方法で、Windows インスタンスの外部 IP アドレスと内部 IP アドレスを特定します。

    • Google Cloud Console で、[VM インスタンス] ページに移動します。

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

    • gcloud ツールを使用して、gcloud compute instances list を実行します。

      gcloud compute instances list
  3. Windows マシン上で Microsoft Windows リモート デスクトップ接続を開きます。この実行ファイルは %systemroot%\system32\mstsc.exe にあります。

    リモート デスクトップ接続のダイアログ。

  4. [コンピューター] ボックスに IP アドレスを入力します。

    RDP に別のポート番号を使用するようにインスタンスを構成した場合は、IP アドレスの後にその番号を追加します(例: 1.2.3.4:3389)。

  5. [接続] をクリックします。

  6. ユーザー名とパスワードを入力し、[OK] をクリックします。

    パスワードを忘れた場合は再設定できます。

Chrome リモート デスクトップ

Chrome リモート デスクトップは、ウェブブラウザを使用して別のパソコンにリモートからアクセスできるサービスです。Chrome リモートデスクトップは Windows、macOS、Linux で動作します。VM インスタンスにパブリック IP アドレスは必要ありません。

Chrome リモート デスクトップで接続する前に、次の前提条件を満たしていることを確認してください。

Chrome リモート デスクトップを使用して VM インスタンスに接続するには、次の操作を行います。

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

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

  3. 接続するインスタンスを選択します。

  4. メッセージが表示されたら、Chrome リモート デスクトップ サービスのインストール時に作成した PIN を入力し、矢印ボタン()をクリックして接続します。

Chrome RDP プラグイン

Chrome RDP for Google Cloud はサードパーティ製のプラグインで、Chrome ブラウザから Windows インスタンスに接続できます。このプラグインは Google Cloud Console と統合されています。プラグインをインストールしたら、Cloud Console で [RDP] ボタンを使用して Windows Server インスタンスに接続します。

Chrome RDP for Google Cloud で接続する前に、次の前提条件を満たしていることを確認してください。

  • VM インスタンスにパブリック IP アドレスが設定されている。
  • ファイアウォール ルールで、ポート 3389 を使用して、クライアントのパブリック IP アドレスからインスタンスへの TCP の上り(内向き)トラフィックを許可している。
  • Chrome RDP for Google Cloud 拡張機能がインストールされている。

  • Chrome OS から Windows VM に接続する場合は、Chromebook の [表示サイズ] を 100% に設定します。

Chrome RDP プラグインを使用して接続するには、次の操作を行います。

  1. Cloud Console で [VM インスタンス] ページに移動し、接続する Windows インスタンスを探します。

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

  2. 接続したいインスタンスの [RDP] ボタンをクリックします。Chrome RDP 拡張機能が開きます。

  3. ドメイン、ユーザー名、パスワードを入力し、[OK] をクリックして接続します。

    インスタンスの作成ウィンドウ。

    インスタンスにドメインが構成されていない場合は、[ドメイン] を空白のままにできます。

  4. プロンプトが表示されたら、[続行] を押して証明書を受け入れます。

その他

Android、iOS、Mac 向けに開発されたクライアントなど、他の RDP クライアントを使用して、Windows VM インスタンスに接続できます。公式にサポートされているクライアントの一覧については、Microsoft のリモート デスクトップ クライアントのドキュメントをご覧ください。

接続する前に、次の前提条件のいずれかを満たしていることを確認してください。

  • VM インスタンスにパブリック IP アドレスが設定されており、ファイアウォール ルールで、ポート 3389 を使用して、クライアントのパブリック IP アドレスからインスタンスへの TCP の上り(内向き)トラフィックを許可している。
  • ローカル ネットワークが VPN または Cloud Interconnect を通じて VPC に接続されており、ファイアウォール ルールで、ポート 3389 を使用して、クライアントのプライベート IP アドレスからインスタンスへの TCP の上り(内向き)トラフィックを許可している。

他の RDP を使用して接続するには、次の手順に従います。

  1. インターネット経由で接続するには、外部 IP アドレスを使用します。VPN または Cloud Interconnect を使用して接続するには、内部 IP アドレスを使用します。

    次のいずれかの方法で、Windows インスタンスの外部 IP アドレスと内部 IP アドレスを特定します。

    • Google Cloud Console で、[VM インスタンス] ページに移動します。

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

    • gcloud ツールを使用して、gcloud compute instances list を実行します。

      gcloud compute instances list
  2. クライアントのインストール手順に従って、サポートされているクライアントをインストールします。

  3. インスタンスの IP アドレスを使用して接続し、インスタンスのユーザー名とパスワードで認証します。

公式にサポートされているクライアントの一覧については、Microsoft のリモート デスクトップ クライアントをご覧ください。

RDP で接続できない場合は、RDP のトラブルシューティングをご覧ください。RDP ライセンスの詳細については、Microsoft ライセンスに関するよくある質問をご覧ください。

Special Administrative Console

このセクションでは、インタラクティブ シリアル コンソールを使用して、Windows インスタンスの Windows Special Administrative Console(SAC)に接続する方法について説明します。リモート デスクトップを使用して Windows インスタンスに接続できない場合は、SAC を使用して Windows インスタンスのトラブルシューティングを行うことができます。

接続する前に、Windows インスタンスのパスワードを作成して準備しておく必要があります。

インタラクティブ シリアル コンソールを使用して Windows インスタンスに接続するには、次のいずれかのタブに示されている手順を実行します。

Console

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

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

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

  3. [編集] をクリックします。[リモート アクセス] セクションで、[シリアルポート接続を有効化] を選択します。これにより、このインスタンスのインタラクティブ シリアル コンソールが有効になります。

    編集インスタンスの詳細画面の設定。

    インスタンス メタデータの更新について詳しくは、インスタンス メタデータの格納と取得をご覧ください。

    プロジェクト内のすべてのインスタンスにこの設定を適用する場合は、プロジェクト全体のカスタム メタデータを設定します。

  4. [保存] をクリックし、ページの先頭に戻ります。

  5. [リモート アクセス] で、[シリアル コンソールに接続] の横にあるプルダウンをクリックし、[シリアルポート 2] を選択します。SAC が開きます。

  6. SAC> プロンプトで、cmd を実行して新しいチャネルを作成します。SAC によって、Cmd001 などのチャネル名が返されます。

  7. ch -sn CHANNEL_NAME を実行し、任意のキーを押してチャネルに接続します。例:

    SAC> cmd
    The Command Prompt session was successfully launched.
    SAC>
    EVENT:   A new channel has been created.  Use "ch -?" for channel help.
    Channel: Cmd0001
    SAC> ch -sn cmd0001
    Press any key to confirm connection to the channel.
  8. 接続するインスタンスのユーザー名、ドメイン、パスワードを入力します。

gcloud

  1. ローカル オペレーティング システム用の Cloud SDK をまだダウンロードしていない場合は、ダウンロードしてインストールします。

  2. 次のコマンドを実行して、シリアルポートへの接続を有効にするようにインスタンスを構成します。

    gcloud compute instances add-metadata VM_NAME \
       --zone=ZONE \
       --metadata=serial-port-enable=1

    次のように置き換えます。

    • VM_NAME: VM インスタンスの名前
    • ZONE: VM インスタンスがあるゾーン

    インスタンス メタデータの更新について詳しくは、インスタンス メタデータの更新をご覧ください。

    (省略可)プロジェクトのすべてのインスタンスに設定を適用する場合は、代わりに次の Cloud SDK コマンドを実行します。

    gcloud compute project-info add-metadata \
        --metadata=serial-port-enable=1

    プロジェクト全体のカスタム メタデータについて詳しくは、プロジェクト全体のカスタム メタデータの設定をご覧ください。

  3. 次の gcloud コマンドを実行して、インタラクティブ セッションに入ります。

    gcloud compute connect-to-serial-port VM_NAME \
        --port=2

    VM_NAME は実際のインスタンス名に置き換えます。

    SAC インタラクティブ セッション。

  4. SAC> プロンプトで、cmd を実行して新しいチャネルを作成します。SAC によって、Cmd001 などのチャネル名が返されます。

  5. ch -sn CHANNEL_NAME を実行し、任意のキーを押してチャネルに接続します。例:

    SAC> cmd
    The Command Prompt session was successfully launched.
    SAC>
    EVENT:   A new channel has been created.  Use "ch -?" for channel help.
    Channel: Cmd0001
    SAC> ch -sn cmd0001
    Press any key to confirm connection to the channel.
  6. 接続するには、インスタンスのユーザー名、ドメイン、パスワードを入力します。

次のステップ