Linux インスタンスへの接続

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

Compute Engine 上の Linux インスタンスに接続する最も簡単な方法は、ブラウザから接続するgcloud ツールを使用して接続することです。

別の方法として、新しい認証鍵のペアを生成してプロジェクトに適用することもできます。これにより、サードパーティ ツールを使用して接続できるようになります。たとえば、Linux または OSX ワークステーションの場合は SSH を使用して接続することができ、Windows ワークステーションの場合は PuTTY を使用して接続することができます。

SSH 認証鍵管理を自動化する必要がある熟練ユーザー、または特定のインスタンスでのみ公開 SSH 認証鍵を設定する必要がある熟練ユーザーは、SSH 認証鍵管理の自動化をご覧ください。

始める前に

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

Google Cloud Platform Console でウェブブラウザから SSH に直接接続するには、次のようにします。

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

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

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

ブラウザを使用してインスタンスに接続する際には、いくつかの注意点があります。詳細については、ブラウザからの SSH をご覧ください。

コマンドラインによるインスタンスへの接続

gcloud コマンドライン ツールを使用すると、簡単に Linux インスタンスに接続することができます。gcloud ツールは、必要なときに新しいプロジェクト全体の SSH 認証鍵を生成して適用することで、SSH 認証鍵を自動で管理します。

インスタンスに接続するには、gcloud compute ssh コマンドを使用します。

gcloud compute ssh [INSTANCE_NAME]

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

これで、端末を使用して Linux インスタンスでコマンドを実行することができます。終了したら、exit コマンドを使用してインスタンスから切断します。

新しい SSH 認証鍵ペアの生成

SSH または SCP を使用してインスタンスにアクセスするには、事前に新しい SSH 認証鍵ペアを生成して公開鍵をプロジェクトに適用しておく必要があります。gcloud ツールを使用してインスタンスへの接続が完了している場合は、すでに鍵がプロジェクトに適用されており、次の場所から入手できます。

  • Linux と OSX
    • 公開鍵: $HOME/.ssh/google_compute_engine.pub
    • 秘密鍵: $HOME/.ssh/google_compute_engine
  • Windows:
    • 公開鍵: C:\Users\[USER_NAME]\.ssh\google_compute_engine.pub
    • 秘密鍵: C:\Users\[USER_NAME]\.ssh\google_compute_engine

[USER_NAME] は、ローカル ワークステーションでのユーザー名です。

別の方法として、独自の認証鍵のペアを手動で生成することもできます。

Linux と OSX


Linux または OSX ワークステーションで新しい SSH 認証鍵のペアを生成するには:

  1. ワークステーションで端末を開き、ssh-keygen コマンドを使用して新しい認証鍵のペアを生成します。Google ユーザー名を使ってコメントを追加するには、-C フラグを指定します。以下の例では、my-ssh-key という名前の秘密鍵と、my-ssh-key.pub という名前の公開鍵を作成します。

    ssh-keygen -t rsa -f ~/.ssh/my-ssh-key -C [USERNAME]
    

    ここで、[USERNAME] は鍵を適用するインスタンス上のユーザーです。ユーザーがインスタンス上に存在しない場合は、このコマンドで指定したユーザー名を使用して自動的に作成されます。

  2. アクセスを my-ssh-key 秘密鍵に制限することで、自分だけが読み取ることができ、他のユーザーが書き込めないようにすることができます。

    chmod 400 ~/.ssh/my-ssh-key
    
  3. プロジェクトの [メタデータ] ページに移動します。

    [メタデータ] ページに移動

  4. [SSH 認証鍵] をクリックして、プロジェクト全体の公開 SSH 認証鍵のリストを表示します。

  5. [編集] ボタンをクリックし、プロジェクトで公開 SSH 認証鍵を変更できるようにします。

  6. cat コマンドを使用して、~/.ssh/my-ssh-key.pub 公開鍵ファイルのコンテンツを取得します。

    cat ~/.ssh/my-ssh-key.pub
    

    端末に公開鍵が次の形式で表示されます。

    ssh-rsa [KEY_VALUE] [USERNAME]
    

    各項目の意味は次のとおりです。

    • [KEY_VALUE] は、生成される公開鍵の値です。
    • [USERNAME] は、ユーザー名です。
  7. cat コマンドからの出力をコピーし、SSH 認証鍵のリストに新しいアイテムとして貼り付けます。

  8. [SSH 認証鍵] ページの下部の [保存] をクリックして、新しいプロジェクト全体の SSH 認証鍵を保存します。

これで、公開鍵をプロジェクトのすべてのインスタンスで使用できるようになります。 ssh コマンドを使用してインスタンスに接続します。

Windows


Windows ワークステーションで新しい SSH 認証鍵のペアを生成するには:

  1. puttygen.exe をダウンロードします。

  2. PuTTYgen を実行します。この例では、ダウンロードした puttygen.exe ファイルを実行します。鍵生成の設定を行うためのウィンドウが開きます。

  3. [Generate] ボタンをクリックして、新しい認証鍵のペアを生成します。ほとんど場合、デフォルトのパラメータをそのまま使用できます。認証鍵のペアを生成した後、公開鍵の値がツールによって表示されます。

  4. [Key comment] セクションに、Google ユーザー名を入力します。認証鍵の構造は、次のようになります。

    ssh-rsa [KEY_VALUE] [USERNAME]
    

    各項目の意味は次のとおりです。

    • [KEY_VALUE] は、生成した鍵の値です。
    • [USERNAME] は、Google ユーザー名です。
  5. オプションで、[Key passphrase] を入力して鍵を保護します。

  6. [Save private key] をクリックして、秘密鍵をファイルに保存します。この例では、my-ssh-key.ppk として鍵を保存します。

  7. [Save public key] をクリックして、後で使えるように公開鍵をファイルに書き込みます。 ここでは、PuTTYgen ウィンドウを開いたままにします。

  8. プロジェクトの [メタデータ] ページに移動します。

    [メタデータ] ページに移動

  9. [SSH 認証鍵] をクリックして、プロジェクト全体の公開 SSH 認証鍵のリストを表示します。

  10. [編集] ボタンをクリックし、プロジェクトで公開 SSH 認証鍵を変更できるようにします。

  11. PuTTYgen ツールから公開鍵の値全体をコピーし、その値を [メタデータ] ページの SSH 認証鍵のリストの新しいアイテムとして貼り付けます。公開鍵の値は、PuTTYgen 画面の上部に表示されています。

    PuTTYgen 公開鍵のスクリーンショット

  12. [SSH 認証鍵] ページの下部の [保存] をクリックして、新しいプロジェクト全体の SSH 認証鍵を保存します。

これで、公開鍵をプロジェクトのすべてのインスタンスで使用できるようになります。 インスタンスに接続するには、PuTTY を使用します。

Linux または OSX ワークステーションでの SSH を使用した接続

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

  1. Cloud Platform Console プロジェクトに公開鍵を登録していない場合は、新しい認証鍵のペアを作成し、プロジェクトに適用します。

  2. コンソールで、接続先のインスタンスの外部 IP を確認します。インスタンスのリストに移動します。

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

  3. ssh コマンドを使用して、インスタンスに接続します。ユーザー名を指定し、接続先のインスタンスの外部 IP アドレスを確認します。 ユーザー名は、プロジェクトへのアクセスに使用する Google ユーザー名です。 この例では、秘密鍵は ~/.ssh/my-ssh-key にあります。

    ssh -i ~/.ssh/my-ssh-key [USERNAME]@[IP_ADDRESS]
    

    各項目の意味は次のとおりです。

    • [USERNAME] は、ユーザー名です。
    • [IP_ADDRESS] は、インスタンスの IP です。

接続に成功したら、端末を使用してインスタンスでコマンドを実行できるようになります。すべて終了したら、exit コマンドを使用してインスタンスから切断します。

Windows ワークステーションでの PuTTY を使用した接続

Windows ワークステーションでは、PuTTY ツールを使用してインスタンスに接続することができます。PuTTY を使用してインスタンスに接続する手順は次のとおりです。

  1. Cloud Platform Console プロジェクトに公開鍵を登録していない場合は、新しい認証鍵のペアを作成し、プロジェクトに適用します。

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

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

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

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

  5. PuTTY ツールで、Google ユーザー名と接続先のインスタンスの外部 IP アドレスを [Host Name] フィールドに指定します。ユーザー名は、プロジェクトへのアクセスに使用する Google ユーザー名です。この例では、ユーザーは example-user で、外部 IP アドレスは 104.196.31.103 です。

    [Host Name] フィールドでの example-user@104.196.31.103 の設定

  6. PuTTY ウィンドウの左側で、[Connection] > [SSH] > [Auth] と移動します。

  7. [Private key file for authentication] フィールドに、秘密鍵のファイルへのパスを設定します。この例では、my-ssh-key.ppk ファイルへのパスを指定します。

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

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

接続に成功したら、端末を使用してインスタンスでコマンドを実行できるようになります。すべて終了したら、exit コマンドを使用してインスタンスから切断します。

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

外部 IP アドレスを持つインスタンスに接続する場合、内部 IP アドレスを使用して、そのインスタンスから同じ VPC ネットワーク上のインスタンスにチェーン接続することができます。外部 IP アドレスがない場合でも、インスタンスに接続できます。

このプロセスには、次の要件があります。

  • 同じ VPC ネットワーク上の 2 つのインスタンス。1 つのインスタンスは外部 IP を持ち、もう 1 つのインスタンスは外部 IP アドレスを持たないものです。
  • ポート 22 での SSH 接続を許可するファイアウォール ルール。ファイアウォール ルールは、default VPC ネットワークのでのデフォルトのルールです。どちらのインスタンスもこの VPC ネットワークの一部である必要があります。

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

  1. Cloud Platform Console プロジェクトに公開鍵を登録していない場合は、新しい認証鍵のペアを作成し、プロジェクトに適用します。

  2. ローカルマシンで、ssh-agent を開始して鍵を管理します。

    eval `ssh-agent`
    
  3. ssh-add コマンドを使用して、ローカルマシンからエージェントに公開鍵を読み込み、認証用にすべての SSH コマンドで使用します。

    ssh-add ~/.ssh/[PRIVATE_KEY]
    

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

  4. 外部 IP アドレスを使用してインスタンスに接続し、-A 引数を使用して、認証エージェントの転送を有効にします。

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

    ここで、[EXTERNAL_INSTANCE_NAME] は、外部 IP アドレスを持つインスタンスの名前です。

  5. 外部からアドレス指定可能なインスタンスに接続した後、同じ VPC ネットワーク上に他にもインスタンスがあれば、ssh を使用して接続します。

    $ ssh [INTERNAL_INSTANCE_NAME]
    

    ここで、[INTERNAL_INSTANCE_NAME] は、接続する必要がある 2 番目のインスタンスの名前です。

  6. すべて終了したら後、exit コマンドを使用して一度に 1 つずつインスタンスから切断します。

    $ exit
    

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

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

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

次のステップ

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

Compute Engine ドキュメント