TL/DR;
-
GCEちょい技 – Cloud IAP TCP Forwarding で踏み台サーバ要らずなメンテナンスから抜粋。
- ほぼ自分向けのメモ。
- IAPのAPIを有効化。
- VPC FirewallでIAPからのSSHを許可、拠点のIPを許可、それ以外は拒否。
- Cloud IAP便利だけど、
--tunnel-through-iap
って呪文が覚えれられない。(TAB補完効かない?)- iapって関数を.bashrcで切ってあげればどうにかなりそう。
Cloud IAP APIの状態確認。
- Cloud IAP APIが有効になっている確認する。
gcloud services list --filter=NAME:iap
- 無効になっていた場合の出力。
$ gcloud services list --filter=NAME:iap
Listed 0 items.
Cloud IAPを有効化する。
gcloud services enable iap.googleapis.com
IAPからのSSHをVPC Firewallで許可してあげる。
gcloud compute firewall-rules create allow-iap-forwarding-ssh --network=<VPC名> --allow=tcp:22 --source-ranges=35.235.240.0/20
- 別のVPC FirewallルールでインスタンスへのSSHは絞っている前提。
IAP経由での接続確認
- GCPのコンソールでSSH-->gcloudコマンドを表示で表示されたコマンドの最後に
--tunnel-through-iap
をつけてあげればOK
gcloud beta compute ssh --zone "<インスタンスのゾーン>" "<インスタンス名>" --project "<プロジェクト名>" --tunnel-through-iap
--tunnel-through-iap
って呪文が覚えれられない。
手元の端末のbashrcで以下のように関数定義
## for gce
function iap() {
command gcloud compute ssh $1 --tunnel-through-iap
}
- zoneとプロジェクトの引数は省略。
- だって、gcloudコマンド使うときは対象のプロジェクトにアカウント切り替えるから。
実行例
$ iap hoge
No zone specified. Using zone [asia-northeast1-b] for instance: [hoge].
Last login: Sun Mar 21 10:38:38 2021 from 35.235.240.242
[XXXXXXXXX@hoge ~]$