グローバルIPなしのセキュアなリモート開発環境を構築 with VSCode Remote SSH x GCP x IAP @ Win

1 min read読了の目安(約1200字

この記事の内容

  • GCP(Google Cloud Platform)上の Compute Engine にグローバルIPを振らなくても、IAP(Identity Aware Proxy) を経由すれば、内部VPCに直接乗り込める
  • その手順を sshクライアントの設定ファイルに書くと、openSSHなどでホスト名を指定するだけでIAP経由で接続できるようになる
  • VS Code の Remote SSH を併用することで、VS Code でCompute Engine側の環境上での開発がはかどる

必要な予備知識

こちらをどうぞ

https://zenn.dev/shogomuranushi/articles/b75678c3f1a123

手順

GCEの「ssh接続」をドロップダウンすると「gcloudコマンドを表示」と出てくる。こいつに --tunnel-through-iap をつけると iap経由で接続できる。
つまり HTTPS経由で接続できる。なお、https_proxy環境変数に http://username:password@proxyhost:proxyport を指定することで、認証つきProxyも通れる。
Windowsでこのコマンドを実行すると、Puttyが起動する。

この設定を ssh設定 (C:\Users\username\.ssh\config) に移植する:

Host ホスト名
    HostName GCEのVM名または内部IPアドレス
    User GCPアカウント名(最大32文字)
    IdentityFile "C:\Users\username\.ssh\google_compute_engine.id_rsa
    ProxyCommand "C:\Program Files\Google\google-cloud-sdk\bin\gcloud.cmd" beta compute start-iap-tunnel GCEのVM名 %p --listen-on-stdin --project=プロジェクトID --zone=ゾーン名 --verbosity=warning

VS Code の Remote SSH はこの ssh-config を見るので、接続するとGCE上のファイルを直接編集できるし、Ctrl-@でプロンプトを開けばGCE上のプロンプトが開く。

補足

GCP側のFWでIAPの通信を開けておく必要があります。こちらを参照:

https://cloud.google.com/iap/docs/using-tcp-forwarding?hl=ja#create-firewall-rule

関連記事

https://zenn.dev/shogomuranushi/articles/b75678c3f1a123