当我生成一个新的VM实例时,我注意到如果我进入/ home目录,我会看到我创建的过去用户帐户的主目录。我发现这很奇怪,因为我从头开始创建一个新实例。谁能告诉你为什么会这样。我确保删除所有旧实例和磁盘。
答案 0 :(得分:0)
如果您没有实例元数据,Google Compute Engine会根据您的实例元数据或项目元数据创建帐户。
在这种情况下,它使用项目的元数据。要查看项目的元数据,请转到开发人员控制台中的Compute-> Compute Engine->元数据,然后单击页面顶部的“SSH密钥”。在那里,您可以找到包含两列的列表:
在左侧,您可以看到每次创建实例时将生成的用户名。
在右侧,您可以看到将为该用户存储在<username>/.ssh/authorized_keys
中的SSH密钥。
每个用户可以有多个SSH密钥。因此,如果您要从中删除所有旧用户,只需点击“修改”并删除左栏中显示这些用户的所有行。
注意:请注意,如果删除某些用户,他们的主目录将保留在实例中,除非他们为某些用户手动设置SSH密钥,否则他们将无法通过SSH连接到任何实例特定情况。
如果您想深化并知道为什么一切按预期工作,您可以看到该实例通过sudo runlevel
运行在运行级别2上。
您可能知道,一旦系统启动,它将执行/etc/rc2.d/
文件夹中的所有脚本,并且有一个负责管理该实例的所有项目帐户。您可以在/etc/rc2.d/S03google-accounts-manager
找到它,这是指向/etc/init.d/google-accounts-manager
的链接。
这个/usr/share/google/google_daemon/manage_accounts.py
运行github repository以及它使用的文件。此脚本使用desiredaccounts.py和accountsmanager.py编排与帐户相关的所有内容。
desiredaccounts.py用于获取实例和项目的所有用户及其SSH密钥,查看两个URL。您可以使用以下命令检查实例元数据:
`curl http://169.254.169.254/computeMetadata/v1/instance/attributes/sshKeys?%s -H "Metadata-Flavor: Google"`
使用以下命令的项目元数据:
`curl http://169.254.169.254/computeMetadata/v1/project/attributes/sshKeys?%s -H "Metadata-Flavor: Google"`
只有当实例元数据为空时,脚本才会使用项目元数据。
一旦脚本具有所需的帐户,它就会使用accountsmanager.py来调用UpdateUser method
最后在account.py中,您可以看到它如何调用属于他~/.ssh/authorized_keys
中的utils.py to create the user,add the user to the sudoers file和put the SSH key的方法UserAdd文件。
希望它有所帮助。