Linux インスタンスへの接続

このガイドでは、Linux、macOS、Windows ワークステーションで共通の SSH ツールを使用して Linux インスタンスに接続する方法について説明します。Windows インスタンスに接続する必要がある場合は、Windows インスタンスへの接続をご覧ください。

Linux インスタンスに接続する最も簡単な方法は、Compute Engine ツールを使用して接続することです。Compute Engine ツールを使用して接続する場合、Linux インスタンスにアクセスできるかどうかは Identity and Access Management(IAM) の役割によって決まります。適切な IAM 役割がある場合は、Compute Engine ツールを使用してプロジェクト内の任意の Linux インスタンスに接続できます。

また、サードパーティ製ツールを使用して Linux インスタンスに接続することもできます。サードパーティ製ツールを使用して接続する場合は、SSH 認証鍵ペアを管理することによって Linux インスタンスへのアクセスを制御します。Compute Engine プロジェクトにユーザーを追加せずにそのユーザーがアクセスできるインスタンスを指定する場合や、ユーザーにアクセス権を付与する場合は、サードパーティ製ツールを使用して Linux インスタンスに接続してください。

使用するツールに関係なく、外部 IP アドレスを持たない Linux インスタンスに接続する場合は、特別な手順に従う必要があります。また、root ユーザーとして Linux インスタンスに接続することはできません。

始める前に

Compute Engine ツールを使用した接続

Linux VM インスタンスに接続するには、SSH 認証鍵ペアが必要です。ブラウザ経由で(Google Cloud Platform Console を使用)、または gcloud コマンドライン ツールを使用してユーザーが Linux インスタンスに接続するたびに、Compute Engine が SSH 認証鍵を管理し、必要に応じて SSH 認証鍵ペアを作成して適用します。

ブラウザまたは gcloud コマンドライン ツールから接続する場合、使用される SSH 認証鍵の管理にはユーザー アクセス制御は含まれていません。代わりに、Identity and Access Management(IAM)役割によってブラウザと gcloud コマンドライン ツールから接続するユーザーのアクセスを制御します。プロジェクトのメンバーと IAM 役割は、Cloud Platform Console の [IAM] ページから表示できます。

[IAM] ページに移動

ブラウザまたは gcloud コマンドライン ツールを使用して接続するには、Compute インスタンス管理者役割のプロジェクト メンバーである必要があります。インスタンスをサービス アカウントとして実行する場合は、サービス アカウント アクターの役割も付与されている必要があります。ブラウザまたは gcloud コマンドライン ツールを使用して接続するためのアクセス権がない場合は、自分をプロジェクトに追加してアクセス権を付与するようプロジェクト オーナーに依頼してください。

アクセス権が付与されたユーザーは、ブラウザから Linux インスタンスに接続できます。また、ターミナルから行う場合は、gcloud コマンドライン ツールを使用して接続します。

ブラウザからのインスタンスへの接続

プロジェクトへのアクセス権が付与されると、Google Cloud Platform Console から Linux インスタンスに接続できます。

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

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

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

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

コマンドラインを使用したインスタンスへの接続

プロジェクトへのアクセス権が付与されたユーザーは、gcloud コマンドライン ツールをインストールして、ローカル ワークステーションのターミナルから gcloud compute ssh コマンドを使用して Linux インスタンスに接続できます。

gcloud compute ssh [INSTANCE_NAME]

ここで、[INSTANCE_NAME] はインスタンスの名前です。

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

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

Linux VM インスタンスに接続するには、独自の SSH 認証鍵ペアが必要です。この鍵ペアは、一意の秘密 SSH 認証鍵ファイルと、一致する公開 SSH 認証鍵ファイルで構成されています。SSH 認証鍵ペアは、Compute Engine ツールに接続するたびに作成されて管理されます。ただし、サードパーティ製ツールを使用して接続するには、自分で SSH 認証鍵ペアを作成して管理する必要があります。

SSH 認証鍵ペアを取得し、接続するインスタンスに公開 SSH 認証鍵を適用した後、サードパーティ製ツールから秘密 SSH 認証鍵ファイルをインスタンスに提示してアクセスできます。Linux または macOS ワークステーションを使用している場合は、ssh コマンドを使用して接続できます。ただし、Windows ワークステーションを使用している場合は、秘密 SSH 認証鍵ファイルを提示するためのツールが含まれていないため、PuTTY などの外部ツールをダウンロードする必要があります。

SSH(Linux と macOS)

ssh を使用してインスタンスに接続するには:

  1. Cloud Platform Console プロジェクトまたはインスタンスに公開鍵を適用していない場合は、SSH 認証鍵ペアを取得して公開 SSH 認証鍵ファイルを適用します。

  2. Console で、接続するインスタンスの外部 IP アドレスを確認します。インスタンスのリストに移動します。

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

  3. ターミナルで ssh コマンドと秘密 SSH 認証鍵ファイルを使用し、インスタンスに接続します。ユーザー名と、接続するインスタンスの外部 IP アドレスを指定します。

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

    ここで:

    • [PATH_TO_PRIVATE_KEY]秘密 SSH 認証鍵ファイルのパスです。
    • [USERNAME] はインスタンスに接続するユーザーの名前です。この SSH 認証鍵ペアのユーザー名は、SSH 認証鍵ペアの作成時に指定されたものです。インスタンスがそのユーザーの有効な公開 SSH 認証鍵を持っていて、それに一致する秘密 SSH 認証鍵を自分が持っていれば、そのユーザーとしてインスタンスに接続できます。
    • [EXTERNAL_IP_ADDRESS] はインスタンスの外部 IP アドレスです。

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

PuTTY(Windows)

PuTTY を使用してインスタンスに接続するには:

  1. Cloud Platform Console プロジェクトまたはインスタンスに公開鍵を適用していない場合は、SSH 認証鍵ペアを取得して公開 SSH 認証鍵ファイルを適用します。

  2. putty.exe をダウンロードします

  3. PuTTY ツールを実行します。この例では、ダウンロードした putty.exe ファイルを実行します。接続設定を行うためのウィンドウが開きます。

  4. Google Cloud Platform Console で、接続するインスタンスの外部 IP アドレスを確認します。インスタンスのリストに移動します。

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

  5. PuTTY ツールの [Host Name] フィールドに、ユーザー名と接続するインスタンスの外部 IP アドレスを指定します。下記の例では、ユーザー名は jane_doe で、外部 IP アドレスは 203.0.113.2 です。

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

    ユーザー名と外部 IP アドレスを次の形式で入力します。

       [USERNAME]@[EXTERNAL_IP_ADDRESS]

    ここで:

    • [USERNAME] はインスタンスに接続するユーザーの名前です。この SSH 認証鍵ペアのユーザー名は、SSH 認証鍵ペアの作成時に指定されたものです。インスタンスがそのユーザーの有効な公開 SSH 認証鍵を持っていて、それに一致する秘密 SSH 認証鍵を自分が持っていれば、そのユーザーとしてインスタンスに接続できます。
    • [EXTERNAL_IP_ADDRESS] は接続するインスタンスの外部 IP アドレスです。
  6. PuTTY ウィンドウの左側で、[Connection] > [SSH] > [Auth] と移動します。

  7. [Private key file for authentication] フィールドに、秘密鍵ファイルのパスを設定します。

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

  8. インスタンスから Cloud Platform ネットワーク上の他のインスタンスに接続する場合は、[Allow agent forwarding] をオンにします。たとえば、エージェント転送から要塞ホスト インスタンスに秘密 SSH 認証鍵を転送し、外部 IP アドレスを持たないインスタンスに接続できます。

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

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

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

外部 IP アドレスを持たないインスタンスへの接続

外部 IP アドレスを持たないインスタンスを作成して、外部ネットワークから分離することができます。分離されたインスタンスには、Google Cloud Platform Virtual Private Cloud(VPC)ネットワークの内部 IP アドレスしかありません。これらのインスタンスに接続するには、次のいずれかの方法を使用します。

VPN 接続による内部 IP アドレスへの接続

仮想プライベート ネットワーク(VPN)を使用してローカルのオンプレミス ネットワークから Google Cloud Platform VPC に接続する場合、インスタンスの内部 IP アドレスに直接接続できます。

外部 IP アドレスを持たないインスタンスに接続するには、gcloud コマンドライン ツールを使用するか、Linux と MacOS では SSH、Windows では PuTTY を使用します。

gcloud

  1. gcloud beta compute ssh コマンドを使用して --internal-ip フラグを指定し、外部 IP アドレスを持たないインスタンスに接続します。

    gcloud beta compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip
    

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

接続に成功したら、ターミナルを使用して内部インスタンスでコマンドを実行できます。終了したら、exit コマンドを使用して接続を閉じ、ローカル ワークステーションに戻ることができます。

SSH

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

  1. Cloud Platform Console インスタンスまたはプロジェクトに公開 SSH 認証鍵を適用していない場合は、新しい SSH 認証鍵ペアを生成してプロジェクトに適用します。

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

    $ eval ssh-agent $SHELL
    

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

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

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

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

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

  5. SSH を使用して、外部 IP アドレスを持たないインスタンスに接続します。

    $ ssh [USERNAME]@[INTERNAL_INSTANCE_IP_ADDRESS]

    ここで:

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

接続に成功したら、ターミナルを使用して、外部 IP アドレスを持たないインスタンスでコマンドを実行できます。終了したら、exit コマンドを使用して接続を閉じ、ローカル ワークステーションに戻ることができます。

PuTTY

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

  1. Cloud Platform Console インスタンスまたはプロジェクトに公開鍵を適用していない場合は、新しい SSH 認証鍵ペアを生成してプロジェクトに適用します。

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

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

  3. PuTTY を使用してインスタンスに接続します。接続時に、接続するインスタンスの内部 IP アドレスを指定します。

接続に成功したら、ターミナルを使用して内部インスタンスでコマンドを実行できます。終了したら、exit コマンドを使用して接続を閉じ、ローカル ワークステーションに戻ることができます。

要塞ホストによる内部 IP アドレスへの接続

要塞ホスト インスタンスには、外部 IP アドレスと内部 IP アドレスがあります。外部 IP アドレスを持たない内部ネットワーク上のインスタンスにアクセスする必要がある場合は、要塞ホストに接続し、その要塞ホストから内部インスタンスに接続できます。これらの例では、要塞ホスト インスタンスに、Linux オペレーティング システムが必要です。

要塞ホスト インスタンスから他のインスタンスに接続する場合も、秘密 SSH 認証鍵が必要です。要塞ホスト インスタンスに gcloud コマンドライン ツールがインストールされ、秘密鍵を管理するように設定されている場合を除き、秘密鍵を要塞ホスト インスタンスに転送する必要があります。

外部 IP アドレスを持たないインスタンスに接続するには、gcloud コマンドライン ツールを使用するか、Linux と MacOS では SSH、Windows では PuTTY を使用します。

gcloud

gcloud コマンドライン ツールをローカル ワークステーションと要塞ホスト インスタンスの両方にインストールしている場合は、秘密 SSH 認証鍵を要塞ホストに転送しなくても、外部 IP アドレスを持たないインスタンスに接続できます。秘密鍵をローカル ワークステーションから要塞ホスト インスタンスに転送する必要がある場合は、SSH または PuTTY の手順に従います。

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

  1. 要塞ホスト インスタンスに接続します。

    gcloud compute ssh [EXTERNAL_INSTANCE_NAME]
    

    ここで、[EXTERNAL_INSTANCE_NAME] は、内部ネットワークへのアクセスに使用している要塞ホスト インスタンスの名前です。

  2. gcloud beta compute ssh コマンドを使用して --internal-ip フラグを指定し、内部 IP アドレスを使用してインスタンスに接続します。

    $ gcloud beta compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip
    

    ここで:

    • [USERNAME] は SSH 認証鍵ペアに付けられた名前です。
    • [INTERNAL_INSTANCE_NAME] は接続するインスタンスの名前です。

接続に成功したら、ターミナルを使用して内部インスタンスでコマンドを実行できます。終了したら、exit コマンドを使用して接続を閉じ、ローカル ワークステーションに戻ることができます。

SSH

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

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

  1. Cloud Platform Console インスタンスまたはプロジェクトに公開 SSH 認証鍵を適用していない場合は、新しい SSH 認証鍵ペアを生成してプロジェクトに適用します。

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

    $ eval ssh-agent $SHELL
    

  3. ssh-add コマンドを使用して、ローカル コンピュータからエージェントに秘密 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 コマンドライン ツールを使用して要塞ホスト インスタンスに接続した後、通常の ssh で内部 IP アドレスに接続し、転送しておいた認証情報を使用できます。

    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 アドレスです。

接続に成功したら、ターミナルを使用して、外部 IP アドレスを持たないインスタンスでコマンドを実行できます。終了したら、exit コマンドを使用して接続を閉じ、ローカル ワークステーションに戻ることができます。

PuTTY

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

  1. Cloud Platform Console インスタンスまたはプロジェクトに公開鍵を適用していない場合は、新しい SSH 認証鍵ペアを生成してプロジェクトに適用します。

  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 コマンドを使用して接続を閉じ、ローカル ワークステーションに戻ることができます。

root ユーザーとしてのインスタンスへの接続

デフォルトでは、公開イメージと最も一般的なオペレーティング システムでは、root として SSH ログインすることを禁じています。/etc/ssh/sshd_config SSH 設定ファイルの PermitRootLogin パラメータを no に設定することをおすすめします。

このパラメータにより、プロジェクトやインスタンス メタデータで root の SSH 認証鍵を指定しても root ユーザーとしてインスタンスに接続できません。 root 許可が必要なユーザーは、sudo を使用してコマンドを実行することでその許可を取得することができます。

次のステップ

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

Compute Engine ドキュメント