本文档介绍如何使用您的 Google 账号中注册的物理安全密钥连接到使用 OS Login 的虚拟机实例。
实体安全密钥用于生成用于连接到虚拟机的 SSH 私钥文件。通过 Google Cloud 控制台的“浏览器中的 SSH”工具或 Google Cloud CLI 使用安全密钥连接到虚拟机时,OS Login 会检索与您的安全密钥关联的 SSH 私钥文件,并为您配置 SSH 密钥文件。使用第三方工具进行连接时,必须使用 OS Login API 检索 SSH 密钥信息并自行配置 SSH 密钥文件。
准备工作
- 向 Google 账户添加安全密钥。
- 设置 OS Login。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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.
- 启用了安全密钥的虚拟机仅接受来自已附加到 Google 账号中注册的实体安全密钥的 SSH 密钥的连接。
- 您无法使用 Cloud Shell 连接到启用了安全密钥的虚拟机。
您要连接的虚拟机和从中连接的工作站都必须使用支持安全密钥 SSH 类型的 OpenSSH 8.2 或更高版本。以下 Compute Engine 虚拟机操作系统支持安全密钥:
- Debian 11(或更高版本)
- SUSE Linux Enterprise Server (SLES) 15(或更高版本)
- Ubuntu 20.04 LTS(或更高版本)
- Container-Optimized OS 93 LTS(或更高版本)
- Rocky Linux 9(或更高版本)
如需检查您的环境是否支持安全密钥,请运行以下命令:
ssh -Q key | grep ^sk-
如果该命令未返回任何输出,则您的环境不支持安全密钥。
您要从中连接的工作站上的 SSH 客户端必须支持安全密钥,并包含所需的库(例如
libfido2
)。转到元数据页面。
点击修改。
点击添加项。
- 在密钥字段中,输入
enable-oslogin
。 - 在值字段中,输入
TRUE
。
- 在密钥字段中,输入
点击添加项。
- 在密钥字段中,输入
enable-oslogin-sk
。 - 在值字段中,输入
TRUE
。
- 在密钥字段中,输入
点击保存。
转到虚拟机实例页面。
点击要为其启用安全密钥的虚拟机的名称。
点击修改。
在元数据部分,点击添加项。
- 在密钥字段中,输入
enable-oslogin
。 - 在值字段中,输入
TRUE
。
- 在密钥字段中,输入
点击添加项。
- 在密钥字段中,输入
enable-oslogin-sk
。 - 在值字段中,输入
TRUE
。
- 在密钥字段中,输入
点击保存。
在 Google Cloud 控制台中,转到虚拟机实例页面。
在虚拟机列表中,点击要连接的虚拟机所在行中的 SSH。
当系统提示时,轻触您的安全密钥。
安装 Python 版 Google 客户端库(如果尚未安装):
pip3 install google-api-python-client
保存以下示例 Python 脚本,该脚本用于检索与您的安全密钥关联的私钥、配置私钥文件并连接到虚拟机。
运行脚本以配置您的密钥,还可选择连接到虚拟机。
python3 SCRIPT_NAME.py --user_key=USER_KEY --ip_address=IP_ADDRESS [--dryrun]
替换以下内容:
SCRIPT_NAME
:配置脚本的名称。USER_KEY
:您的主要电子邮件地址。IP_ADDRESS
:要连接的虚拟机的外部 IP 地址。[--dryrun]
:(可选)添加--dryrun
标志以输出连接命令,而不连接到虚拟机。如果未指定此标志,则脚本会运行连接命令。
- 了解如何设置 OS Login 及两步验证。
- 了解如何管理组织中的 OS Login。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
通过 OS Login 启用安全密钥
您可以为项目中使用 OS Login 的所有虚拟机或单个虚拟机启用安全密钥。
为项目中所有启用了 OS Login 的虚拟机启用安全密钥
如需在项目中使用 OS Login 的所有虚拟机上启用安全密钥,请使用 Google Cloud 控制台或 gcloud CLI。
控制台
如需为所有启用了 OS Login 的虚拟机启用安全密钥,请使用 Google Cloud 控制台将项目元数据中的
enable-oslogin
和enable-oslogin-sk
设置为TRUE
:gcloud
如需为所有已启用 OS Login 的虚拟机启用安全密钥,请使用
gcloud compute project-info add-metadata
命令在项目元数据中设置enable-oslogin=TRUE
和enable-oslogin-sk=TRUE
:gcloud compute project-info add-metadata \ --metadata enable-oslogin=TRUE,enable-oslogin-sk=TRUE
在已启用 OS Login 的单个虚拟机上启用安全密钥
如需在使用 OS Login 的虚拟机上启用安全密钥,请使用 Google Cloud 控制台或 gcloud CLI。
控制台
如需在单个虚拟机上启用安全密钥,请使用 Google Cloud 控制台将实例元数据中的
enable-oslogin
和enable-oslogin-sk
设置为TRUE
:gcloud
如需在单个虚拟机上启用安全密钥,请使用
gcloud compute instances add-metadata
命令在实例元数据中设置enable-oslogin=TRUE
和enable-oslogin-sk=TRUE
:gcloud compute instances add-metadata VM_NAME \ --metadata enable-oslogin=TRUE,enable-oslogin-sk=TRUE
将
VM_NAME
替换为虚拟机名称。使用安全密钥连接到虚拟机
您可以使用 Google Cloud 控制台、gcloud CLI 或第三方工具连接到使用安全密钥的虚拟机。如果您使用 Google Cloud 控制台或 gcloud CLI 连接到虚拟机,Compute Engine 会为您配置 SSH 密钥。如果使用第三方工具连接到虚拟机,则您必须自行执行此配置。
控制台
使用 Google Cloud 控制台的浏览器中的 SSH 工具连接到虚拟机时,浏览器中的 SSH 会检索与您的安全密钥关联的私钥。
如需连接到启用了安全密钥的虚拟机,请执行以下操作:
gcloud
使用 gcloud CLI 连接到虚拟机时,gcloud CLI 会检索与您的安全密钥关联的私钥,并配置私钥文件。此配置是永久性的,适用于使用安全密钥的所有虚拟机。
使用
gcloud beta compute ssh
命令连接到启用了安全密钥的虚拟机:gcloud beta compute ssh VM_NAME
第三方工具
在连接到启用了安全密钥的虚拟机之前,必须先检索与您的安全密钥关联的私钥并配置私钥文件。本示例使用 Python 客户端库执行配置。
您仅需在首次连接到虚拟机时执行此配置。该配置是永久性的,适用于您的项目中使用安全密钥的所有虚拟机。
从工作站上的终端中,执行以下操作:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-24。
-