1.

GCP/GCEにSSH接続する方法

▶
この記事の要点
  • GCE(Compute Engine)の VM への SSH 接続は主に 3 通り: コンソールの「SSH」ボタン / gcloud compute ssh / 手持ちの ssh クライアント
  • 手持ちの ssh で入るには、ローカルで鍵を作り、公開鍵を VM(またはプロジェクト)のメタデータに登録する
  • 公開鍵の末尾のコメント(-C で指定)がログインユーザー名になる。ローマ字で指定する
  • 接続: ssh -i ~/.ssh/鍵ファイル ユーザー名@外部IP。~/.ssh/config に書けば ssh 名前 だけで入れる
  • OS Login が有効だとメタデータの鍵は使われない。ファイアウォールで TCP 22 番が許可されているかも確認する

接続方法の比較

方法準備向いている場面
コンソールの「SSH」ボタン不要(ブラウザで開く)とりあえず中に入りたい、鍵の登録作業をしたい
gcloud compute sshGoogle Cloud CLI のインストールとログイン鍵の作成・登録を自動でやってほしい
ssh クライアント + 自分の鍵鍵の作成とメタデータへの登録(本記事の手順)普段の ssh・scp・rsync、VS Code Remote などのツールから接続したい

手軽さだけなら gcloud が便利ですが、普段使いの ssh クライアントや他のツールからそのまま接続したい場合は、以下の手順で鍵を登録します。

ローカルの作業: 鍵を作成する

ローカル PC(Mac・Linux、Windows なら PowerShell)で鍵を作成します。

ssh-keygen -t ed25519 -C "ユーザー名" -f ~/.ssh/gce_key
# RSA を使う場合
ssh-keygen -t rsa -b 4096 -C "ユーザー名" -f ~/.ssh/gce_key

鍵の作成コマンドの詳しい使い方は ssh-keygen を参照してください。

※ユーザー名はローマ字(半角英小文字・数字)にすること。GCE では、公開鍵の末尾に付くこのコメントがログインユーザー名として使われ、存在しないユーザーなら VM 上に自動で作成されます。コンソールの SSH ボタンで入ったときのユーザー名と同じにすれば、同じホームディレクトリを使えます。

作成されると秘密鍵 gce_key と公開鍵 gce_key.pub の 2 つができます。サーバーに登録するのは .pub の方だけです。

cat ~/.ssh/gce_key.pub
# ssh-ed25519 AAAAC3Nza...(長い文字列)... ユーザー名

サーバー(GCP)の作業: 公開鍵を登録する

方法 A: VM インスタンス単位で登録

  1. Google Cloud コンソールで「Compute Engine」→「VM インスタンス」を開く
  2. 対象のインスタンス名をクリックし、「編集」を押す
  3. 「SSH 認証鍵」(セキュリティとアクセス)の項目で「項目を追加」を押す
  4. 先ほど表示した公開鍵の内容を1 行まるごと貼り付けて保存する

方法 B: プロジェクト全体で登録

「Compute Engine」→「メタデータ」→「SSH 認証鍵」に登録すると、プロジェクト内の全 VM(プロジェクト全体の鍵をブロックしていないもの)で使えます。

方法 C: VM 内で authorized_keys に追記

コンソールの SSH ボタンでサーバーへ入り、~/.ssh/authorized_keys に公開鍵を追記する方法もあります。ただし、GCE のゲスト環境がメタデータの鍵を管理しているため、メタデータ経由の登録のほうが確実です。

画面の名称はコンソールの更新で変わることがあります(2026 年時点の表記)。

ローカルから接続する

外部 IP はインスタンス一覧の「外部 IP」列で確認できます。まずはコマンドで直接接続してみます。

ssh -i ~/.ssh/gce_key ユーザー名@外部IP

毎回入力するのが面倒なら、~/.ssh/config に以下の記述を追加します。

Host 適当なホスト名
    HostName GCPのインスタンス選択画面で表示される外部IP
    User 鍵作成時に指定したユーザー名
    Port 22
    IdentityFile ~/.ssh/gce_key

IdentityFile の部分は、鍵の作成時に指定したファイル名に合わせます。続けて以下のコマンドを実行して接続します。

ssh 上記で指定した適当なホスト名

gcloud コマンドで接続する場合

gcloud compute ssh インスタンス名 --zone=asia-northeast1-b

初回実行時に鍵(~/.ssh/google_compute_engine)が自動で作成・登録されます。ユーザー名はローカルのユーザー名が使われます。

つながらないときのチェックポイント

症状確認すること
Permission denied (publickey)ユーザー名が鍵のコメントと一致しているか、IdentityFile の指定、OS Login が有効になっていないか
Connection timed outVPC のファイアウォールルールで TCP 22 番が許可されているか、外部 IP が付いているか、VM が起動しているか
以前は入れたのに急に入れないVM の停止・起動で外部 IP(エフェメラル)が変わった。固定したい場合は静的 IP を予約する
UNPROTECTED PRIVATE KEY FILE秘密鍵の権限が緩い。chmod 600 ~/.ssh/gce_key

OS Login(メタデータ enable-oslogin=TRUE)が有効なプロジェクトでは、メタデータの SSH 鍵は無視され、Google アカウントの IAM 権限で認証します。組織のポリシーで有効化されていることもあるので、鍵を登録しても入れないときは確認してください。

セキュリティ上の注意

  • 秘密鍵は他人に渡さない・リポジトリにコミットしない
  • ファイアウォールの送信元を 0.0.0.0/0(全開放)ではなく、自宅や会社の IP に絞るとより安全
  • 使わなくなった鍵はメタデータから削除する

関連

Post Share
子ページ

子ページはありません

同階層のページ
  1. GCEにSSH接続する方法
  2. エラー一覧
  3. WordPress with NGINX and SSL Certified by Bitnamiのmysqlのrootユーザーのパスワード