高度な方法によるインスタンスへの接続

自分自身で認証情報を管理する、サードパーティのツールを使用する、または別の接続パスを使用してインスタンスに接続する必要がある場合は、次の高度な方法の方が、インスタンスへの接続で説明されている標準メソッドよりもニーズに合う可能性があります。

Linux および Windows Server インスタンスには、次のようないくつかの高度な方法で接続できます。

始める前に

公開 SSH 認証鍵をインスタンスに渡す

通常、インスタンスへの接続で説明されている方法を使用して接続する場合、Compute Engine ではユーザーの SSH 認証鍵の作成と管理が行われます。

ただし、独自の SSH 認証鍵を使用する必要がある場合(たとえば、サードパーティ ツールを使用して接続する場合)は、独自の SSH 認証鍵ペアを生成し、接続する前にインスタンスに公開 SSH 認証鍵ファイルを渡す必要があります。

独自の SSH 認証鍵ペアを生成する方法と、公開 SSH 認証鍵ファイルの確認方法については、新しい SSH 認証鍵を作成するおよび SSH 認証鍵を探すをご覧ください。

インスタンスに SSH 認証鍵を渡すには、次のいずれかの方法を使用します。

  • (推奨)OS ログインを有効にし、IAM の役割を使用して、Google アカウントまたはマネージド ユーザー アカウントを通して公開 SSH 認証鍵をインスタンスに渡します。これを行うには、OS ログインを使用してインスタンス アクセスを管理するの手順に従って、OS ログインを有効にし、役割を作成します。次に、SSH 認証鍵をユーザー アカウントに追加するセクションを参照して、公開鍵をインスタンスへの接続に使用する役割に追加します。

  • (非推奨)プロジェクトまたはインスタンスのメタデータを編集して、SSH 認証鍵を手動で追加および削除します。メタデータでの SSH 認証鍵の管理をご覧ください。この方法は、不要なリスクと複雑さが増すため、上記の OS ログイン方法で対処できない場合を除きおすすめしません。詳しくは、手動での鍵管理のリスクをご覧ください。

  • インスタンスがすでにアクセス権を持つ他のユーザー(組織のシステム管理者など)によって管理されている場合、SSH 公開鍵ファイルを渡して手動で構成するよう依頼することもできます。通常、インスタンスへの接続、インスタンスのホーム ディレクトリへの公開鍵ファイルのコピー、ファイルのアクセス許可の変更が必要となりますが、これは組織がインスタンスを管理する方法によって異なります。

サードパーティ製ツールを使用した接続

公開 SSH 認証鍵をインスタンスに渡した後、サードパーティ製 SSH ツールを一致する秘密 SSH 認証鍵とともに使用して接続できます。

接続する手順は、ローカル オペレーティング システムのタブをクリックすると表示されます。

Linux / macOS

Linux または MacOS マシンから SSH を使用して接続するには、ローカル ターミナルで組み込みの ssh コマンドを使用します。

  1. まだ行っていない場合は、前述のいずれかの方法で公開 SSH 認証鍵をインスタンスに渡します。公開 SSH 認証鍵をインスタンスに渡していない場合、続行できません。

  2. コンソールで、インスタンス ページに移動(または下のボタンをクリック)して、接続したいインスタンスの外部 IP アドレスを確認します。

    インスタンス ページに移動

  3. ローカル ターミナルでは、秘密 SSH 認証鍵ファイル、SSH 認証鍵に関連付けられたユーザ名、接続するインスタンスの外部 IP アドレスとともに、ssh コマンドを使用します。例:

    ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]

    ここで

    • [PATH_TO_PRIVATE_KEY]秘密 SSH 認証鍵ファイルへのパスです。
    • [USERNAME] は、インスタンスに接続するユーザーのユーザー名です。 SSH 認証鍵を手動で作成した場合、これは SSH 認証鍵を作成するときに指定したユーザー名である必要があります。
    • [EXTERNAL_IP_ADDRESS] はインスタンスの外部 IP アドレスです。

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

Windows(PuTTY)

Windows には組み込みの SSH クライアントは含まれていません。そのため、サードパーティのクライアントをダウンロードしてインストールする必要があります。PuTTY を使用して接続する手順は次のとおりです。

PuTTY を使用して Windows からインスタンスに接続するには、次の操作を行います。

  1. まだ行っていない場合は、前述のいずれかの方法で公開 SSH 認証鍵をインスタンスに渡します。公開 SSH 認証鍵をインスタンスに渡していない場合、続行できません。

  2. コンソールで、インスタンス ページに移動(または下のボタンをクリック)して、接続したいインスタンスの外部 IP アドレスを確認します。後の手順で使用するため、いつでも利用できるように保管してください。

    インスタンス ページに移動

  3. まだダウンロードしていない場合は、putty.exe をダウンロードします。

  4. putty.exe を起動して PuTTY を開きます。接続構成ウィンドウが開きます。

  5. 接続設定ページの [Host Name] フィールドに、SSH 認証鍵に関連付けられているユーザー名と、接続するインスタンスの外部 IP アドレスを以下の形式で入力します。

    [USERNAME]@[EXTERNAL_IP_ADDRESS]

    ここで

    • [USERNAME] は、インスタンスに接続するユーザーのユーザー名です。 これは、SSH 認証鍵を作成するときに指定したユーザー名である必要があります。
    • [EXTERNAL_IP_ADDRESS] は接続するインスタンスの外部 IP アドレスです。

      たとえば、次のスクリーンショットをご覧ください。

      [Host Name] フィールドでの jane_doe@203.0.113.2 の設定

  6. 左側の [Category] メニューで、[Connection] > [SSH] > [Auth] に移動します。

  7. [Private key file for authentication] フィールドで、秘密鍵ファイルの場所を参照します。

    たとえば、次のスクリーンショットをご覧ください。

    秘密鍵ファイルのフィールドでの my-ssh-key.ppk ファイルへのパスの設定

  8. [Open] をクリックし、インスタンスに接続するターミナルを開きます。

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

Chrome(SSH アプリ)

Chromebook または Chrome がインストールされたオペレーティング システムは、SSH クライアントとして Secure Shell App を使用します。Secure Shell App からインスタンスに接続する手順は次のとおりです。

  1. まだ行っていない場合は、前述のいずれかの方法で公開 SSH 認証鍵をインスタンスに渡します。公開 SSH 認証鍵をインスタンスに渡していない場合、続行できません。

  2. Chromebook または Chrome ブラウザに Secure Shell App をまだインストールしていない場合は、インストールします。

  3. コンソールで、インスタンス ページに移動(または下のボタンをクリック)して、接続したいインスタンスの外部 IP アドレスを確認します。後の手順で使用するため、いつでも利用できるように保管してください。

    インスタンス ページに移動

  4. Chrome ブラウザのタブで Secure Shell App を開きます。

  5. 次の形式で、接続するインスタンスの SSH 認証鍵ペアに関連付けられたユーザー名と外部 IP アドレスを入力します。

    [USERNAME]@[EXTERNAL_IP_ADDRESS]

    ここで

    • [USERNAME] は、インスタンスに接続するユーザーのユーザー名です。これは、SSH 認証鍵を作成するときに指定したユーザー名である必要があります。
    • [EXTERNAL_IP_ADDRESS] は接続するインスタンスの外部 IP アドレスです。
  6. [ID] フィールドで、インスタンスへの接続に使用する秘密鍵ファイルを選択します。必要に応じて、[インポート] をクリックして、ローカル ワークステーションから秘密鍵ファイルを選択します。

  7. [接続] をクリックして、インスタンスに接続します。

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

その他の SSH オプション

上記の他に、以下の方法で SSH を使用してインスタンスに接続できます。

外部 IP アドレスを持たないインスタンスに接続する

外部 IP アドレスを持たない分離されたインスタンス(外部ネットワークから意図的に分離されたインスタンスなど)がある場合、次の方法で、Google Cloud Virtual Private Cloud(VPC)ネットワークの内部 IP アドレスを使用して接続できます。

VPN を介した接続

バーチャル プライベート ネットワーク(VPN)を使用して外部 IP アドレスなしでインスタンスに接続するには、使用するインスタンスと同じ VPN にすでに接続されているパソコンが必要です。たとえば、ローカルのオンプレミス ネットワークが Google Cloud VPC と共有する VPN がある場合、gcloud コマンドライン ツール、SSH(Linux および macOS の場合)、PuTTY などのサードパーティの SSH クライアント(Windows の場合)を使用してインスタンスに接続します。

詳細については、以下のタブをご覧ください。

gcloud

--internal-ip フラグを指定して gcloud compute ssh コマンドを実行し、外部 IP アドレスを使用せずにインスタンスに接続します。

gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip

[INTERNAL_INSTANCE_NAME] は接続するインスタンスの名前です。

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

Linux / macOS

Linux または macOS ワークステーションから外部 IP アドレスを持たないインスタンスに接続するには、次の操作を行います。

  1. 前述のいずれかの方法で公開 SSH 認証鍵をインスタンスに渡します。公開 SSH 認証鍵をインスタンスに渡していない場合、続行できません。

  2. ローカルマシンで、SSH 認証鍵管理のために ssh-agent を開始します。

    $ eval ssh-agent $SHELL
    
  3. ssh-add コマンドを使用して、ローカルのパソコンからエージェントに秘密 SSH 認証鍵を読み込み、すべての SSH コマンドの認証に秘密 SSH 認証鍵が使われるようにします。

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    ここで、[PRIVATE_KEY] は秘密鍵ファイルのファイル名です。

  4. コンソールで、インスタンス ページに移動(または下のボタンをクリック)して、接続したいインスタンス内部 IP アドレスを確認します。

    インスタンス ページに移動

  5. ローカル ターミナルでは、秘密 SSH 認証鍵に関連付けられたユーザー名、接続するインスタンスの内部 IP アドレスとともに、ssh コマンドを使用します。例:

    $ ssh [USERNAME]@[INTERNAL_INSTANCE_IP_ADDRESS]

    ここで

    • [USERNAME] は、インスタンスに接続するユーザーのユーザー名です。これは、SSH 認証鍵を作成するときに指定したユーザー名である必要があります。
    • [INTERNAL_INSTANCE_IP_ADDRESS] は接続するインスタンスの内部 IP アドレスです。

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

Windows(PuTTY)

Windows ワークステーションから外部 IP アドレスを持たないインスタンスに接続するには、次の操作を行います。

  1. まだ行っていない場合は、前述のいずれかの方法で公開 SSH 認証鍵をインスタンスに渡します。公開 SSH 認証鍵をインスタンスに渡していない場合、続行できません。

  2. コンソールで、インスタンス ページに移動(または下のボタンをクリック)して、接続したいインスタンス内部 IP アドレスを確認します。

    インスタンス ページに移動

  3. 外部 IP アドレスを指定する代わりに、接続するインスタンスの内部アドレスを指定する場合を除いて、Windows から PuTTY を使用してインスタンスに接続します。

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

踏み台インスタンスを介した接続

外部 IP アドレスを持たないインスタンスに接続する別の方法として、踏み台インスタンスを介して接続できます。踏み台インスタンスを使用して、他のピアリングされた VPC ネットワーク上のインスタンスに接続することもできます。

Linux と macOS から踏み台インスタンスを介してインスタンスに接続するには、gcloud コマンドライン ツールまたは SSH を使用します。Windows から接続するには、PuTTY などのサードパーティの SSH クライアントを使用します。

他の方法と同様に、踏み台インスタンスから他のインスタンスに接続するには秘密 SSH 認証鍵が必要です。これを管理する方法は、以下のとおりいくつかあります。

  • gcloud コマンドライン ツールをインストールして、ユーザーの秘密鍵を管理するように設定します。
  • SSH クライアントのエージェント転送を有効にして、秘密鍵を踏み台インスタンスに転送します。

gcloud

gcloud コマンドライン ツールを使用すると、SSH 秘密鍵を踏み台インスタンスに転送せずに、外部 IP アドレスを持たないインスタンスに接続できます。これを行うには、gcloud がローカル ワークステーションと踏み台インスタンスの両方にまだインストールされていない場合は、インストールします。

gcloud コマンドライン ツールを使用して外部 IP アドレスを持たないインスタンスに接続するには、次の手順を行います。

  1. --scopes compute-rw をコマンドに含めることにより、読み取り / 書き込み Compute Engine API のアクセス スコープを踏み台インスタンスのサービス アカウントに設定します。詳細については、インスタンスのサービス アカウントとアクセス スコープの変更をご覧ください。

  2. OS ログイン(推奨)またはプロジェクト メタデータのいずれかを使用して、踏み台インスタンスが公開 SSH 認証鍵にアクセスできるように、必要な IAM 権限を付与します。

    これで、踏み台インスタンスのサービス アカウントが公開 SSH 認証鍵を適用できるようになりました。

  3. Linux 踏み台インスタンスに接続します。

    gcloud compute ssh [EXTERNAL_INSTANCE_NAME]
    

    [EXTERNAL_INSTANCE_NAME] は、内部ネットワークへのアクセスに使用する踏み台インスタンスの名前です。

  4. Linux の踏み台インスタンスから、gcloud compute ssh コマンドを --internal-ip フラグとともに使用して、内部 IP アドレスを介してインスタンスに接続します。

    gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip
    

    ここで、[INTERNAL_INSTANCE_NAME] は接続するインスタンスの名前です。

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

Linux / macOS

秘密鍵を踏み台インスタンスに転送する必要がある場合は、鍵を ssh-agent に追加してください。次に、gcloud compute ssh コマンドまたは ssh コマンドを使用して、踏み台インスタンスへの最初の接続を確立し、SSH エージェントに鍵を転送します。このプロセスは、Linux および macOS ワークステーションでのみ機能します。秘密鍵を Windows ワークステーションから踏み台インスタンスに転送する必要がある場合は、代わりに PuTTY の手順を使用します。

Linux または macOS ワークステーションから外部 IP アドレスを持たないインスタンスに接続するには:

  1. 前述のいずれかの方法で公開 SSH 認証鍵を渡します。公開 SSH 認証鍵は、必ず Linux 踏み台インスタンスと外部 IP アドレスを持たないインスタンスの両方に渡してください。

  2. ローカルマシンで、SSH 認証鍵管理のために ssh-agent を開始します。

    $ eval ssh-agent $SHELL
    
  3. ssh-add コマンドを使用して、ローカルのパソコンからエージェントに秘密 SSH 認証鍵を読み込み、すべての SSH コマンドの認証に秘密 SSH 認証鍵が使われるようにします。

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    ここで、[PRIVATE_KEY] は秘密鍵ファイルのファイル名です。

  4. Linux 踏み台インスタンスの外部 IP アドレスと、接続する内部インスタンスの内部 IP アドレスを確認します。インスタンス ページの [外部 IP] 列と [内部 IP] 列にアドレスが表示されます。

    インスタンス ページに移動

  5. ssh または gcloud compute ssh を使用して、Linux 踏み台インスタンスに接続します。どちらの場合も、-A 引数を指定して、認証エージェントの転送を可能にします。

    ssh を使用して、Linux 踏み台インスタンスに接続し、秘密鍵を転送します。

    $ ssh -A [USERNAME]@[BASTION_HOST_EXTERNAL_IP_ADDRESS]

    ここで

    • [USERNAME] は SSH 認証鍵に付けられた名前です。
    • [BASTION_HOST_EXTERNAL_IP_ADDRESS] は、内部ネットワークへのアクセスに使用している踏み台インスタンスの外部 IP アドレスです。

    また、gcloud compute ssh コマンドを使用して踏み台インスタンスに接続し、秘密鍵を転送できます。このオプションを使用すると、gcloud コマンドライン ツールを使用して踏み台インスタンスに接続できます。内部 IP アドレスに接続する際には転送された認証情報で通常の ssh を使用することが可能になります。

    gcloud compute ssh --ssh-flag="-A" [BASTION_HOST_INSTANCE_NAME]
    

    ここで、[BASTION_HOST_INSTANCE_NAME] は内部ネットワークへのアクセスに使用する踏み台インスタンスの名前です。

  6. Linux 踏み台インスタンスから、SSH を使用して外部 IP アドレスを持たないインスタンスに接続します。

    $ ssh [USERNAME]@[INTERNAL_INSTANCE_IP_ADDRESS]

    ここで

    • [USERNAME] は SSH 認証鍵に付けられた名前です。
    • [INTERNAL_INSTANCE_IP_ADDRESS] は接続するインスタンスの内部 IP アドレスです。

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

Windows(PuTTY)

Windows ワークステーションから外部 IP アドレスを持たないインスタンスに接続するには:

  1. 前述のいずれかの方法で公開 SSH 認証鍵を渡します。公開 SSH 認証鍵は、必ず Linux 踏み台インスタンスと外部 IP アドレスを持たないインスタンスの両方に渡してください。

  2. Linux 踏み台インスタンスの外部 IP アドレスと、接続する内部インスタンスの内部 IP アドレスを確認します。インスタンス ページの [外部 IP] 列と [内部 IP] 列にアドレスが表示されます。

    インスタンス ページに移動

  3. PuTTY を使用して Linux 踏み台インスタンスに接続します[Allow agent forwarding]{} 設定をオンにして秘密 SSH 認証鍵を踏み台インスタンスに渡します。

    接続しているインスタンスのエージェント転送を許可。

  4. SSH を使用して、Linux 踏み台インスタンスから、外部 IP アドレスを持たないインスタンスに接続します。

    $ ssh [USERNAME]@[INTERNAL_IP_ADDRESS]
    

    ここで

    • [USERNAME] は、インスタンスに接続するユーザーのユーザー名です。 これは、SSH 認証鍵を作成するときに指定したユーザー名である必要があります。
    • [INTERNAL_IP_ADDRESS] は接続するインスタンスの内部 IP アドレスです。

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

IAP を介して接続する

SSH と IAP の TCP 転送機能を使用すると、SSH 接続が HTTPS にラップされます。IAP の TCP 転送機能は、それをリモート インスタンスに送信します。

IAP を使用してリモート インスタンスに接続する方法については、IAP を TCP 転送に使用するをご覧ください。

root ユーザーとしてインスタンスに接続する

公開イメージや一般的なオペレーティング システムでは SSH を使用した root でのログインはデフォルトで許可されません。SSH を使用してインスタンスに root として接続するには、このような操作を許可するようにインスタンスを構成する必要があります。

/etc/ssh/sshd_config SSH 構成ファイルの PermitRootLogin パラメータを no に設定するのがおすすめの方法です。パラメータをこのように設定すると、プロジェクトまたはインスタンスのメタデータで root の SSH 認証鍵を指定しても、root ユーザーとしてインスタンスに接続できなくなります。root 権限が必要なユーザーは、sudo を使用してコマンドを実行することでその権限を取得できます。

root ユーザーとして SSH を使用できるようにインスタンスを構成し、そのインスタンスで root ユーザーの SSH 認証鍵を構成した場合、インスタンス名の前に root@ を指定して gcloud compute ssh コマンドを実行すると、root として接続できます。

gcloud compute ssh --project [PROJECT_ID] --zone [ZONE] root@[INSTANCE_NAME]

ここで

  • [PROJECT_ID] は、インスタンスが含まれているプロジェクトの ID です。
  • [ZONE] は、インスタンスが存在するゾーンの名前です。
  • [INSTANCE_NAME] は、インスタンスの名前です。

PowerShell を使用して Windows インスタンスに接続する

PowerShell を備えた Windows ワークステーションがある場合は、リモート PowerShell セッションを介して Windows Server インスタンスに接続できます。このプロセスは、SSH を使用して Linux インスタンスに接続する場合に似ています。

  1. リモート Windows インスタンスでユーザー名とパスワードをまだ作成していない場合は、Windows パスワードを作成またはリセットします

  2. ファイアウォール ルールを追加して、Windows Server インスタンスが存在する Google Cloud VPC ネットワーク上のポート 5986 を開くようにこのルールを設定します。

  3. ローカル ワークステーションで、PowerShell ターミナルを開きます。

  4. ユーザーの認証情報を変数に初期設定することもできます。これにより、インスタンスに接続するたびに、認証情報を入力する必要がなくなります。この手順をスキップすると、ユーザー名とパスワードを要求するプロンプトが後で表示されます。

    PS C:\> $credentials = Get-Credential
    
  5. Enter-PSSession コマンドを使用してリモート PowerShell セッションを開始します。その際、SSL を使用するフラグと認証情報の確認をスキップするフラグを指定します。

    PS C:\> Enter-PSSession -ComputerName [IP_ADDRESS] -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials
    

    ここで [IP_ADDRESS] は、接続するインスタンスの IP アドレス、DNS 名または Windows コンピュータ名です。

    インスタンス ページに移動

接続後、コマンド プロンプトにリモート Windows インスタンスの IP アドレスが表示されます。これで、ターミナルからリモートの Windows Server インスタンスで PowerShell コマンドを実行できます。

Enter-PSSession コマンドの代わりに、-ScriptBlock フラグを指定して Invoke-Command を実行すると、インタラクティブ セッションを確立せずにリモート インスタンスで PowerShell コマンドを実行できます。

PS C:\> Invoke-Command -ComputerName [IP_ADDRESS] -ScriptBlock { [SCRIPT] } -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials

ここで

  • [IP_ADDRESS] は、接続するインスタンスの IP アドレス、DNS 名または Windows コンピュータ名です。
  • [SCRIPT] は、リモート インスタンスで実行するコマンドです。たとえば、ログイベントのリストを表示するには、Get-EventLog -log "Windows PowerShell" を指定します。

サービス アカウントとしてインスタンス間を手動で接続する

状況によっては、インスタンスのサービス アカウントの権限でインスタンスに接続して、コマンドを実行したい場合があります。gcloud compute ssh コマンドを使用すると、サービス アカウントの SSH 認証情報を使用して、あるインスタンスから別のインスタンスに接続し、2 つ目のインスタンスでサービス アカウントとしてコマンドを実行できます。

gcloud コマンドライン ツールにより、SSH 認証鍵ペアが自動的に生成され、インスタンス上のサービス アカウントに関連付けられます。サービス アカウントとして別のインスタンスに接続した後は、そのサービス アカウントの IAM 権限を使用して別の gcloud コマンドを実行できます。

たとえば、次のような環境について考えてみましょう。

  • インスタンス A:
    • インスタンス A にはサービス アカウントが関連付けられています。
    • インスタンス A のサービス アカウントには、プロジェクト レベルまたはインスタンス B のリソース用に必要な OS ログイン役割が構成されています。
    • サービス アカウントは、インスタンス A に https://www.googleapis.com/auth/cloud-platform プラットフォーム全体のスコープを設定しています。
  • インスタンス B:
    • インスタンス B は、インスタンス A と同じ内部ネットワーク上に存在するか、インスタンス A からの SSH 接続を許可するファイアウォール ルールが設定されているネットワーク上に存在します。
    • プロジェクトまたはインスタンス B で OS ログイン機能が有効になっています。
  • 個人ユーザー アカウント:
    • ユーザーのアカウントには、インスタンス A のサービス アカウントに対する roles/iam.serviceAccountUser 役割が設定されています。
    • ユーザーのアカウントはインスタンス A に SSH で接続できます。
    • ユーザーのアカウントはインスタンス B にアクセスできません。サービス アカウントは、インスタンス B との接続に必要な OS ログイン役割を持つ唯一のアカウントです。

インスタンス A に接続し、そのサービス アカウントとしてコマンドを実行します。この操作を行うには、サービス アカウントに対する roles/iam.serviceAccountUser 役割が必要です。

  1. roles/iam.serviceAccountUser 役割を持つユーザーとして、インスタンス A に接続します。たとえば、gcloud コマンドライン ツールを使用して SSH 接続を確立できます。

    my-username@localworkstation:~$ gcloud compute ssh instance-a --project my-project --zone us-east1-d
    
  2. インスタンス A に SSH 接続した後は、roles/iam.serviceAccountUser 役割が付与されている間はそのサービス アカウントとしてコマンドを実行できます。この例では、インスタンス A 上で gcloud コマンドライン ツールを使用して、インスタンス B へのチェーン SSH 接続を作成します。gcloud コマンドライン ツールによって、インスタンス B で OS Login が使用可能になっていること、および、サービス アカウントにインスタンス B への SSH 接続を確立するために必要な IAM の役割が付与されていることを識別します。

    my-username@instance-a:~$ gcloud compute ssh instance-b --project my-project --zone us-east1-d
    
    WARNING: Using OS Login user [sa_113491385848438711199] instead of default user [my-username]
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64
    ⋮
    
    
  3. これで、インスタンス B にサービス アカウントとして接続し、そのサービス アカウントの権限でコマンドを実行できます。

    sa_113491385848438711199@instance-b:~$ uname -a
    
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64 GNU/Linux
    
    

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント