Compute Engine にブラウザコンソールから SSH しよう

Compute Engine にブラウザコンソールから SSH しよう

Compute Engine のインスタンスには、ブラウザから SSH することができます。本記事では、プライベート環境のインスタンスに IAM 権限を通じて SSH アクセスするための設定手順を解説します。
2026.10.31

こんにちは、すらぼです。

検証用に Compute Engine をよく使うのですが、SSH アクセスするために必要な設定を毎回忘れてしまうので、忘れないようにブログにまとめようと思います。

なお、状況によってアクセスの方法はいくつかありますが、今回は「パブリックIPなし + OS Login が有効」なインスタンスでの設定を紹介します。

今回のゴール

外部IPを持たない VM に対して、ブラウザのコンソールから SSH で接続できるようにします。

そのためには、以下の設定を行う必要があります。

  • ファイアウォールルール(IAP 用)を作成する
  • ネットワークタグを通じて、インスタンスにファイアウォールを関連づける
  • OS Login を有効化する
  • ユーザーに IAM ロールを付与する

順番にやっていきましょう。

実際にやってみる

ファイアウォールルール(IAP 用)を作成する

まず、ファイアウォールルールを作成していきます。

詳しい仕組みは本記事では割愛しますが、ブラウザ経由で SSH を行うためのネットワーク経路を確保するようなイメージです。

詳しい解説が知りたい方は、以下の村田さんの解説ブログをご参照ください。
https://dev.classmethod.jp/articles/compute-engine-vm-ssh-login/

ファイアウォールのページから、「ファイアウォール ルールを作成」をクリックします。

CleanShot 2026-10-31 at 21.25.53.png

今回作成するファイアウォールルールは以下のようなパラメータで作成していきます。

項目 パラメータ
トラフィックの方向 Ingress
一致したときのアクション 許可
ターゲット 指定されたタグ: iap-ssh
送信元フィルタ IPv4 範囲 35.235.240.0/20
プロトコルとポート TCP 22

以下のような表示になっていればOKです。

CleanShot 2026-10-31 at 21.45.28.png

ネットワークタグを通じて、インスタンスにファイアウォールを関連づける

次に、作成したファイアウォールルールをインスタンスに関連付けます。
今回作成したファイアウォールのターゲットは "指定されたタグ" に設定しています。

そのため、VM インスタンスに対してネットワークタグを付与することで、ファイアウォールルールを適用することができます。

VM の編集画面から、以下のように iap-ssh ネットワークタグを設定します。

CleanShot 2026-10-31 at 21.54.12.png

これだけだと設定できているか不安なので、別の経路から確認しておきましょう。

インスタンスのネットワークインターフェース nic0 をクリックして、このインスタンスのネットワークの詳細画面を開きます。

CleanShot 2026-10-31 at 22.04.43.png

少しスクロールして「VPC ファイアウォールルール」の欄を見ると、関連づけられたルールが確認できます。
以下の画面のように、作成したルールが表示されていることが確認できれば、正しくファイアウォールルールが紐づけられています。

CleanShot 2026-10-31 at 22.06.19.png

OS Login の有効化

次に、インスタンスの OS Login を有効化します。
OS Login を有効化することによって、SSH 自体の権限や、SSH 後に sudo が可能なユーザーなどを Google Cloud の IAM 権限によってコントロールできるようになる利点があります。

Compute Engine の OS Login は具体的な設定値があるわけではなく、メタデータによって有効/無効の設定を行います。

インスタンス編集画面の「カスタム メタデータ」から、enable-oslogin TRUE を設定して、保存します。

CleanShot 2026-10-31 at 22.26.13.png

IAM ロールの付与

最後に、SSH アクセスを行うユーザーに IAM ロールを付与します。
以下の3つの権限を必要なスコープに応じて付与してください。

ロール 用途 付与できる範囲 備考
roles/compute.osLogin(sudo が必要なら osAdminLogin) OS Login でログインする プロジェクト/インスタンス インスタンス単位で付与する場合は、compute.projects.get を含むロールをプロジェクトレベルで別途付与する
roles/iap.tunnelResourceAccessor IAP 経由でトンネルを張る プロジェクト/インスタンス IAM Conditions で宛先ポートを 22 に絞れる
roles/iam.serviceAccountUser VM のサービスアカウントを使う プロジェクト/サービスアカウント プロジェクトに付与するとすべてのサービスアカウントを使えるため、絞るなら VM のサービスアカウントに付与する

今回は、以下の権限をプロジェクトスコープで付与しました。

CleanShot 2026-10-31 at 22.57.42.png

動作確認

ここまでの作業が完了すると、ブラウザコンソールから OS Login を通じて SSH ができるようになります。

インスタンス詳細画面の「SSH」ボタンをクリックしてみます。

CleanShot 2026-10-31 at 22.59.01.png

すると、以下のように SSH アクセスすることができました。

CleanShot 2026-10-31 at 22.59.50.png

また、OS Login が有効になっているかも念の為確認しておきましょう。
id コマンドを叩いて、結果を確認してみます。

$ id

以下のように、IAMユーザーと同じレスポンスが返ってくると、実際に OS Login できていることがわかります。

// IAMユーザーのメールアドレス(user.name@example.com)と同じユーザー名が返ってくれば OS Login が有効
~$ id
uid=2108855724(user_name_example_com) 

さいごに

以上、ブラウザコンソール経由で SSH アクセスを行う方法を整理してみました。いくつかのステップがありますが、一通り設定してしまえばインスタンスごとに都度設定するような項目は少ないので、2回目以降は数分程度でセットアップまで完了できると思います。

また、今回有効化した OS Login は基本は無効化されている機能です。ただ、有効化することで IAM の権限を引き継げるので、Linux ユーザー単位ではなく IAMユーザー単位での権限コントロールができる点も地味に嬉しいポイントです。

検証環境だけでなく、VPC内での操作など色々なケースで便利な SSH アクセス機能、皆さんも積極的に活用していきましょう!

この記事がどなたかの助けになれば幸いです。以上、すらぼでした!

参考資料

https://docs.cloud.google.com/compute/docs/connect/ssh-using-iap

https://docs.cloud.google.com/compute/docs/oslogin/set-up-oslogin

https://docs.cloud.google.com/iap/docs/using-tcp-forwarding

この記事をシェアする

関連記事