如何设置由云功能启动的VM的默认用户?

Posted

技术标签:

【中文标题】如何设置由云功能启动的VM的默认用户?【英文标题】:How to set the default user of a VM started by a cloud function? 【发布时间】:2022-01-22 10:59:57 【问题描述】:

我的 Google 虚拟机在我的 Google 函数触发启动时启动。 但我希望这个 VM 以特定用户而不是默认用户启动。

如何实现 VM 将以特定用户而不是默认用户启动?

有没有什么参数可以写在云函数中来做到这一点?

【问题讨论】:

【参考方案1】:

Google Cloud 和大多数安全专家不建议使用基于密码的登录。这意味着您应该为用户使用 SSH 密钥。

要为新的 VM 实例指定用户,请在元数据中指定用户名和 SSH 密钥。例如,使用 CLI:

gcloud compute instances create VM_NAME \
    --metadata=ssh-keys=PUBLIC_KEY
    ...

PUBLIC_KEY 使用用户名进行格式化。该用户名将与实例一起创建。您可以指定一个或多个用户名/ssh-keys。

您可以使用 REST API、SDK 等来做同样的事情。

这些链接将提供更多详细信息:

Add SSH keys to VMs

Add SSH keys to instance metadata

【讨论】:

我了解您的解决方案在您创建新实例时有效。但是,如果您已经有一个实例。此实例已创建,但已停止。你想重新开始。如何在特定用户而不是默认用户上启动它? 我了解您的解决方案在您创建新实例时有效。但是,如果您已经有一个实例。此实例已创建,但已停止。你想重新开始。您如何在特定用户而不是默认用户上启动它?例如,我使用以下脚本启动 VM:import google.auth;导入 google.auth.transport.requests;信用,项目= google.auth.default(); request2 = service.instances().start(project=project, zone=zone, instance='name-of-the-VM'); response2 = request2.execute() @NicolasMATHIEU - 您对 user 的使用令人困惑。用户登录虚拟机。 VM 不会以默认用户身份启动。除非您指的是 Compute Engine 服务帐号。您评论中的代码使用 ADC(应用程序默认凭据)。 Cloud Functions 身份是服务帐户,而不是用户。 您好,2022 年新年快乐! 是的,我正在使用云功能,因此使用服务帐户来自动启动计算机引擎。启动此计算引擎时,会在此计算引擎上自动启动脚本。这些脚本以特定身份启动,因此权限与该身份相关联。我想更改云功能启动计算引擎时自动启动的脚本使用的身份。

以上是关于如何设置由云功能启动的VM的默认用户?的主要内容,如果未能解决你的问题,请参考以下文章

Hyper-v创建检查点(VM的快照功能)

MySQL-5.7.7复制功能的默认设置改进

如何设置ubuntu默认登录用户为root

在 vsphere虚拟机中禁用热添加/热插拔功能

理解 virbr0

如何检查是不是设置了可选功能参数