GCPの開発用VMで外部IPを公開せずに安全に接続する方法(Windows版)
TCP 転送に Cloud IAP を使用する | Identity-Aware Proxy のドキュメント | Google Cloud
ここに書いてあることの要約+α
やること一覧
VMの外部IP設定を削除する
VMのネットワークタグに default-allow-rdp, default-allow-ssh を設定する
Cloud Identity-Aware Proxyを有効にする
Cloud Identity-Aware ProxyでVMの役割にIAP-secured Tunnel Userとして自分自身を追加する
Google Cloud SDK for Windowsをインストールする
PuttyGenでSSH鍵ペアを生成する
gcloud compute ssh コマンドの使い方を把握する
VMの外部IP設定を削除する
VMインスタンス一覧で自分のVMをクリック
「VM インスタンスの詳細」画面に遷移するので「編集」をクリック
「ネットワークインターフェース」という項目を探して鉛筆マークをクリック
https://gyazo.com/e40fd2cffa9e3cbda493f53d2093f951
「外部IP」のプルダウンメニューをクリック
https://gyazo.com/39d6c659c68e3e6dcfc272fda6f0bb6d
「なし」をクリック
https://gyazo.com/1fb8cefc547462c136f59e2d637ad312
「完了」をクリック
https://gyazo.com/e42380fd3e72d352c890762d01801ca4
VMのネットワークタグにdefault-allow-rdp, default-allow-sshを設定する
「ネットワークインターフェース」の下あたりにある、「ネットワークタグ」項目を探す
「ネットワークタグ」入力欄に default-allow-rdp default-allow-ssh と入力する
https://gyazo.com/1af12ae3fa7f4b16fef1b1902e5c1021
画面を一番下までスクロールして「保存」をクリックする
https://gyazo.com/197b502c84704130b179e5dbe2f1ea0f
Cloud Identity-Aware Proxyを有効にする
以下のURLにアクセスして「有効」をクリックする
Cloud Identity-Aware ProxyでVMに自分自身を追加する
以下のURLにアクセスする
プロジェクトを選ぶ
https://gyazo.com/a3bde353b859c6a1d179b187633fc1f4
「SSHとTCPのリソース」タブで自分のVMを選び、「メンバーを追加」をクリックする
https://gyazo.com/26f2aee0d1c9068ee052b51e3c4ac66c
「新しいメンバー」に自分自身を入力して、役割のプルダウンメニューで「Cloud IAP」「IAP-secured Tunnel User」を選択し、保存する
https://gyazo.com/4855d695e42c54cc6b9d049cc9434611
Google Cloud SDK for Windowsをインストールする
以下のページからインストーラーをダウンロードしてインストールする
この状態だとコマンドプロンプトでしか使えなくて罰
Windowsボタンを右クリックして、PowerShellを管理者権限で起動
Install-Module GoogleCloud を実行
いろいろ聞かれるがすべて「はい」
gcloud コマンドを実行してエラーにならなければ成功
gcloud login でログインしてデフォルトプロジェクトを選択する
注意:この方法でgcloudコマンドが使えるようになるのは管理者権限として起動したPowerShellの中だけ
PuttyGenでSSH鍵ペアを生成する
Windows版Google Cloud SDKのsshコマンドはputtyしかサポートしていない
puttyはOpenSSL ( ssh-keygen ) で生成された鍵ペアをサポートしていない
というわけなのでputtygen.exeをダウンロードして実行し、鍵ペアを生成して適当な場所に保存する
秘密鍵を id_putty.ppk, 公開鍵を id_putty.pub とする
id_putty.pub を適当なエディタで開く
https://gyazo.com/8a38b60de83185f6499ca77e0776cff2
赤枠の部分の文字列をコピーする
https://gyazo.com/af159b63acb64f968f20a24b4b1eb63a
VMインスタンス一覧の「SSH」ボタンでログインする
.ssh/authorized_keys に先程の文字列をペーストする
改行と空白は全部取り除く
保存してログアウトする
gcloud beta compute ssh コマンドの使い方を把握する
gcloud compute sshはあくまでsshのラッパーなのでコマンドラインオプションは共通
ポートフォワーディングする方法
PowerShellを管理者権限で起動
gcloud compute ssh yuiseki@yuiseki-dev --tunnel-through-iap -- -i $HOME/.ssh/id_putty.ppk -N -L 22:localhost:22
puttyが立ち上がる
この状態で ssh yuiseki@localhost とかやると普通につながる
PowerShellとputtyのウィンドウが常に開いているのでかなり厳しいものがある……