ちょっとわかりづらかったので後進のためにメモ
やりたいこと
Web UI で言うところの
を Terraform で設定したい。
特に「プロジェクト全体のSSH認証鍵をブロック」して、ホストに登録したつもりのない認証鍵が勝手に配置されるのを止めたい※
terraform のドキュメント https://www.terraform.io/docs/providers/google/r/compute_instance.html にはそれっぽい項目がないが、実は metadata を設定するとできる。
※プロジェクト全体のSSH認証鍵がブロックされていないと、Compute Engine > メタデータ > 認証鍵で表示される、プロジェクト全体のSSH認証鍵が自動配置されてログインできてしまう。
やり方
resource "google_compute_instance" "test" {
name = "test"
machine_type = "n1-standard-1"
zone = "asia-east1-a"
metadata {
"block-project-ssh-keys" = "true"
"ssh-keys" = "seo.naotoshi:ssh-rsa XXXXXXXXXXXX seo.naotoshi@MAC.local\nsonots:ssh-rsa XXXXX sonots@MAC.local\n"
}
}
「プロジェクト全体のSSH認証鍵をブロック」するには block-project-ssh-keys
を true に設定すれば良い。
SSH認証の公開鍵を設定するには、ssh-keys にいつもの公開鍵フォーマットの先頭に「ユーザ名:」をつけて記述し、複数指定したい場合は改行区切りで指定する。
参考文献
ちなみに gcloud compute instances describe を打つと
$ gcloud compute instances describe ホスト名
metadata:
fingerprint: AikYwVsA9XE=
items:
- key: block-project-ssh-keys
value: 'true'
- key: ssh-keys
value: |-
seo.naotoshi:ssh-rsa XXXXXXXXXXXX seo.naotoshi@Mac.local
sonots:ssh-rsa XXXXXXXXXXXX sonots@Mac.local
のように出てくるのでキー名がわかる。
追記
なお、gcloud compute ssh でのSSH認証鍵の自動配置を無効化する を行うと、プロジェクト全体のSSH認証鍵の自動配置も同時に無効化された。