本文档介绍如何设置 OS Login 以及带有双重验证 (2FA) 功能的 OS Login。
通过 OS Login,您可以根据 IAM 权限控制对虚拟机 (VM) 实例的访问权限。您可以使用带有或没有 2FA 功能的 OS Login,但如果不使用 OS Login,则无法使用 2FA。如需详细了解 OS Login 和 OS Login 2FA,包括 OS Login 支持的验证类型,请参阅 OS Login 简介。
准备工作
- 如果您想使用 OS Login 2FA,请在您的网域或账号中启用 2FA:
-
如果您尚未设置身份验证,请进行设置。 身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Windows Server 和 SQL Server 虚拟机
- Fedora CoreOS 虚拟机。如需管理对使用这些映像创建的虚拟机的实例访问权限,请使用 Fedora CoreOS Ignition 系统
- 启用 OS Login:
- 键:
enable-oslogin
- 值:
TRUE
- 键:
- (可选)启用双重验证:
- 密钥:
enable-oslogin-2fa
- 值:
TRUE
- 密钥:
- 启用 OS Login:
- 键:
enable-oslogin
- 值:
TRUE
- 键:
- (可选)启用双重验证:
- 密钥:
enable-oslogin-2fa
- 值:
TRUE
- 密钥:
- 在网络、磁盘、安全、管理、单租户部分中,展开安全部分。
- 展开管理访问权限部分。
- 选择通过 IAM 权限控制虚拟机访问权限。
- 可选:如果要启用 OS Login 2FA,请选择需要两步验证。
- 点击创建以创建并启动虚拟机。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
通过运行以下
gcloud compute instance create
命令之一,创建一个在启动时启用 OS Login 和(可选)OS Login 2FA 的虚拟机:如需仅启用 OS Login,请运行以下命令:
gcloud compute instances create VM_NAME \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --metadata enable-oslogin=TRUE
如需启用 OS Login 2FA,请运行以下命令:
gcloud compute instances create VM_NAME \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --metadata enable-oslogin=TRUE,enable-oslogin-2fa=TRUE
替换以下内容:
方法 1:在项目级元数据中设置
enable-oslogin
,以将此项设置应用于项目中的所有虚拟机。使用
google_compute_project_metadata
Terraform 资源并设置oslogin=TRUE
的元数据值:或者,您可以将
enable-oslogin
设置为FALSE
以停用 OS Login。方法 2:在新虚拟机或现有虚拟机的元数据中设置
enable-oslogin
。使用
google_compute_instance
Terraform 资源并设置oslogin=TRUE
。将oslogin_instance_name
替换为虚拟机名称。或者,您可以将
enable-oslogin
设置为FALSE
以使虚拟机停用 OS Login。- 了解到 Linux 虚拟机的 SSH 连接在 Compute Engine 上的工作原理。
- 了解如何将 SSH 与安全密钥结合使用以进一步限制对虚拟机的访问。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
限制
以下虚拟机不支持 OS Login:分配 OS Login IAM 角色
将所有必需的 IAM 角色分配给连接到启用了 OS Login 的虚拟机的用户。
角色 所需用户 授权级别 roles/compute.osLogin
或roles/compute.osAdminLogin
所有用户 如果用户需要通过 Google Cloud 控制台或 Google Cloud CLI 进行 SSH 访问,您必须在项目级层授予这些角色,或者在项目级层额外授予包含
compute.projects.get
权限的角色。roles/iam.serviceAccountUser
所有用户(如果虚拟机有服务账号) 在服务账号上。 roles/compute.osLoginExternalUser
来自与连接的虚拟机不同组织的用户 在组织上。
此角色必须由组织管理员授予。
启用 OS Login API
通过设置 OS Login 元数据,您可以为单个虚拟机或项目中的所有虚拟机启用 OS Login 或带有双重验证功能的 OS Login。
设置 OS Login 元数据时,Compute Engine 会删除虚拟机的
authorized_keys
文件,并且不再接受来自项目或实例元数据中存储的 SSH 密钥的连接。为项目中的所有虚拟机启用 OS Login
如需为项目中的所有虚拟机启用 OS Login,请在项目元数据中设置以下值:
为单个虚拟机启用 OS Login
如需为单个虚拟机启用 OS Login,请在实例元数据中设置以下值:
在虚拟机创建期间启用 OS Login
使用 Google Cloud 控制台或 gcloud CLI 创建虚拟机时启用 OS Login(可以选择启用带有两步验证功能的 OS Login)。
控制台
通过从公共映像创建虚拟机并指定以下配置,创建一个在启动时启用 OS Login 和(可选)OS Login 2FA 的虚拟机:
gcloud
Terraform
您可以使用以下选项之一将元数据值应用于您的项目或虚拟机:
连接到启用了 OS Login 的虚拟机
使用连接到 Linux 虚拟机中所述的方法连接到启用了 OS Login 的虚拟机。
当您连接到启用了 OS Login 的虚拟机时,Compute Engine 会使用组织管理员为您配置的用户名。如果您的组织管理员尚未为您配置用户名,则 Compute Engine 会生成一个
USERNAME_DOMAIN_SUFFIX
格式的用户名。如需详细了解用户名,请参阅 OS Login 的工作原理。您在连接到启用了 OS Login 2FA 的虚拟机时,还会看到系统根据您选择的两步验证方法或验证类型显示的消息。使用电话提示方法时,请接受手机或平板电脑上的提示以继续操作。使用其他方法时,请输入您的安全代码或动态密码。
排查 OS Login 问题
如需查找诊断和解决 OS Login 错误的方法,请参阅排查 OS Login 问题。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-