在新创建的 gce 实例上,我发现一个非常混乱的/home/
文件夹,其中包含每个具有足够权限的 GCP 用户的一个主目录(到目前为止还不算太疯狂),但也包含任何曾经成功通过 gcloud ssh 登录到同一项目的任何 gce 的用户的主目录(即使该用户从未真正尝试过 ssh 到该 gce 实例)
gcloud compute ssh username@gce-instance --project project-name
最后一件事对我来说似乎令人费解,但无论如何,我决定在新创建的 Ubuntu 18.04 gce 上删除所有这些 Linux 用户,命令deluser --remove-all-files
如下:
CURRENT_USER=username
for USER in `ls /home`
do
if [ $CURRENT_USER -neq $USER ]
then
deluser --remove-all-files $USER
fi
done
除了当前用户之外的所有用户都被删除了,并且他们的主文件夹也不会出现ls /home/
,但这只是暂时的,因为在下次重新启动 gce 后,所有用户都会重新出现。
我查看了journalctl
,发现这是由于google-accounts
守护进程在启动时创建了所有这些用户。我在中发现了执行此操作的代码/usr/lib/python3/dist-packages/google_compute_engine/accounts/accounts_daemon.py
,我甚至尝试google_compute_engine.accounts.accounts_daemon.AccountsDaemon()
从 python CLI 实例化并运行其HandleAccounts(res)
方法,journalctl
看起来非常有希望:
Feb 27 15:32:57 gce-name google-accounts[1922]: WARNING Exception locking /var/lock/google_accounts.lock. File already locked.
Feb 27 15:33:18 gce-name google-accounts[1935]: WARNING Exception locking /var/lock/google_accounts.lock. File already locked.
Feb 27 15:33:35 gce-name google-accounts[1935]: WARNING Instance attributes were not found.
Feb 27 15:33:35 gce-name google-accounts[1935]: WARNING Project attributes were not found.
Feb 27 15:33:35 gce-name google-accounts[1935]: WARNING Instance attributes were not found.
Feb 27 15:33:35 gce-name google-accounts[1935]: WARNING Project attributes were not found.
Feb 27 15:33:36 gce-name google-accounts[1935]: INFO Removing user username_1.
Feb 27 15:33:36 gce-name google-accounts[1935]: INFO Removing user username_2.
### etc ###
Feb 27 15:33:36 gce-name google-accounts[1935]: INFO Removing user username_last.
不幸的是,经过最后一次非常自信的检查后sudo reboot now
,我惊恐地发现每个文件夹都又回到了里面/home/
。
我没有主意了,有人能帮助我吗?
答案1
转到 GCP 控制台,在 Compute Engine 中,转到元数据。您将找到已添加为项目级别的所有 SSH-KEY。每次创建新虚拟机时,所有具有项目级别 SSH 密钥的用户都将有权访问该虚拟机。
更多信息请参考此链接: https://cloud.google.com/compute/docs/storing-retrieving-metadata