動機
gcloud compute ssh は自動でSSH認証鍵が配置されてログインできるようにしてくれて非常に便利なツールであるが、逆に言うと、gcloud の OAuth2 認証さえ通っていれば、誰にでもなりすましてログインできるようになってしまうようだ。
$ gcloud compute ssh "foo.bar@ホスト名"
で foo.bar になりすましてログインできた。なんと。。。
対応
無効化するには、デフォルトで動いている google accounts daemon を止めれば良い。
Ubuntu14.04
$ ps -ef | grep google | grep accounts
root 1663 1 0 Nov07 ? 00:00:00 /usr/bin/python /usr/share/google/google_daemon/manage_accounts.py
root 14096 1663 0 01:47 ? 00:00:00 /usr/bin/python /usr/share/google/google_daemon/manage_accounts.py
$ sudo initctl list | grep google | grep accounts
google-accounts-manager-service running
google-accounts-manager-task stop/waiting
$ sudo initctl stop google-accounts-manager-service
$ sudo rm /etc/init/google-accounts-manager-{service,task}.conf
Ubuntu18.04
$ sudo systemctl stop google-accounts-daemon
$ sudo systemctl disable google-accounts-daemon
$ sudo rm /usr/bin/google_accounts_daemon # ねんのため
なお、内部動作としては、gcloud compute ssh を打つと、~/.ssh/google_compute_engine{,pub} がなければ生成して、public key を GCE インスタンスのメタデータに登録、ssh しようとするとこの google accounts manager がmetadata から公開鍵を持ってきて対象ユーザの ~/.ssh/authorized_keys
に登録しているっぽい。