本文档介绍了如何将 SSH 密钥添加到使用 OS Login 的虚拟机 (VM) 实例和使用基于元数据的 SSH 密钥的虚拟机。如果您或您的组织管理员尚未启用 OS Login,则虚拟机将使用基于元数据的 SSH 密钥。
准备工作
- 如需了解如何管理对 Compute Engine 虚拟机的访问权限,请参阅选择访问方法。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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
-
安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:
gcloud init
- Set a default region and zone.
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
如需向账号添加 SSH 公钥,请使用
gcloud compute os-login ssh-keys add
命令:gcloud compute os-login ssh-keys add \ --key-file=KEY_FILE_PATH \ --project=PROJECT \ --ttl=EXPIRE_TIME
替换以下内容:
KEY_FILE_PATH
:指向工作站上 SSH 公钥的路径。密钥必须使用public-openssh
格式PROJECT
(可选):您打算在其中使用 SSH 密钥的项目。指定此字段以在组织外部的项目中使用 SSH 密钥,否则您不是 Cloud Identity 组织的成员EXPIRE_TIME
(可选):SSH 密钥的到期时间例如,如果您指定
30m
,则 SSH 密钥会在 30 分钟后到期。此标志使用下列单位:
s
表示秒数m
表示分钟数h
表示小时数d
表示天数
ACCOUNT_EMAIL
:查看与您的账号关联的电子邮件地址SSH_KEY
:您想要添加到账号的公钥EXPIRATION_TIMESTAMP
:密钥的到期时间(以微秒为单位,从新纪元开始计算)(1 秒 = 106 微秒)在 Google Cloud 控制台中,转到元数据页面。
点击 SSH 密钥标签页。
点击修改。
点击添加一项。此时会打开一个文本框。
在文本框中添加公钥。密钥必须采用以下格式之一:
- 没有到期时间的密钥格式:
KEY_VALUE USERNAME
- 具有到期时间的密钥格式:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到 Linux 虚拟机。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 没有到期时间的密钥格式:
点击保存。
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
如果项目元数据中存在现有 SSH 密钥,则每次使用 gcloud CLI 添加新的 SSH 密钥时,都必须将这些密钥重新添加到项目元数据中。如果您不重新添加现有密钥,则添加新密钥会清空现有密钥。
如需使用 gcloud CLI 向项目元数据添加 SSH 公钥,请执行以下操作:
如果您的项目已具有项目范围的 SSH 公钥,请从元数据中获取这些密钥,并将其添加到新文件中:
运行
gcloud compute project-info describe
命令以获取项目的 SSH 密钥:gcloud compute project-info describe \ --format="value(commonInstanceMetadata[items][ssh-keys])"
输出内容类似如下:
username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
复制
ssh-keys
元数据值。在工作站上创建并打开一个新的文本文件。
在该文件中,粘贴您刚刚复制的密钥列表。
使用以下格式之一在列表末尾添加新密钥:
- 没有到期时间的密钥格式:
USERNAME:KEY_VALUE
- 具有到期时间的密钥格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到实例。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 没有到期时间的密钥格式:
保存并关闭文件。
运行
gcloud compute project-info add-metadata
命令来设置项目范围的ssh-keys
值:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
将
KEY_FILE
替换为以下项之一:- 您在上一步中创建的文件的路径(如果项目已有 SSH 密钥)
- 新建 SSH 公钥文件的路径(如果项目还没有 SSH 密钥)
使用
projects.get
方法从元数据获取fingerprint
和ssh-keys
值GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
将
PROJECT_ID
替换为您的项目 ID。响应类似于以下示例:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
使用
projects.setCommonInstanceMetadata
方法添加新的ssh-keys
值。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }
替换以下内容:
PROJECT_ID
:您的项目 IDEXISTING_SSH_KEYS
:projects.get
请求的响应中的ssh-keys
键的值FINGERPRINT
:projects.get
请求的响应中的fingerprint
的值NEW_SSH_KEY
:新 SSH 密钥,格式如下:- 没有到期时间的密钥格式:
USERNAME:KEY_VALUE
- 具有到期时间的密钥格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到实例。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 没有到期时间的密钥格式:
在 Google Cloud 控制台中,前往创建实例页面。
指定虚拟机详情。
展开高级选项部分,然后执行以下操作:
展开安全部分。
选择添加手动生成的 SSH 密钥。
点击添加项。
在文本框中添加公钥。秘钥必须采用以下格式之一:
- 没有到期时间的密钥格式:
KEY_VALUE USERNAME
- 具有到期时间的密钥格式:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到 Linux 虚拟机。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 没有到期时间的密钥格式:
要创建并启动该虚拟机,请点击创建。
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
要使用 gcloud CLI 创建虚拟机并同时向实例元数据添加 SSH 公钥,请使用
gcloud compute instances create
命令:gcloud compute instances create VM_NAME \ --metadata=ssh-keys=PUBLIC_KEY
替换以下内容:
VM_NAME
:新虚拟机的名称PUBLIC_KEY
:您的 SSH 公钥,格式如下:- 没有到期时间的密钥格式:
USERNAME:KEY_VALUE
- 具有到期时间的密钥格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到实例。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 没有到期时间的密钥格式:
您可以使用
--metadata-from-file=ssh-keys=FILE_PATH
标志添加多个 SSH 密钥。在该文件中,添加采用上述格式之一的用户名和 SSH 公钥列表。PROJECT_ID
:项目 IDZONE
:虚拟机所在的区域- 没有到期时间的密钥格式:
USERNAME:KEY_VALUE
- 具有到期时间的密钥格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到实例。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
在 Google Cloud 控制台中,前往虚拟机实例页面。
点击要为其添加 SSH 密钥的虚拟机的名称。
点击修改。
在 SSH 密钥下,点击添加项目。
将您的公钥添加到文本框中。密钥必须采用以下格式之一:
- 没有到期时间的密钥格式:
KEY_VALUE USERNAME
- 具有到期时间的密钥格式:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到 Linux 虚拟机。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 没有到期时间的密钥格式:
点击保存。
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
如果实例元数据中存在现有 SSH 密钥,则每次使用 gcloud CLI 添加新的 SSH 密钥时,都必须将这些密钥重新添加到实例元数据中。如果您不重新添加现有密钥,则添加新密钥会清空现有密钥。
如需使用 gcloud CLI 向实例元数据添加 SSH 公钥,请执行以下操作:
如果您的虚拟机已具有实例级 SSH 公钥,请从元数据中获取它们,并将其添加到新文件中:
运行
gcloud compute instances describe
命令以获取虚拟机的元数据:gcloud compute instances describe VM_NAME
将 VM_NAME 替换为需要添加或移除 SSH 公钥的虚拟机的名称。
输出内容类似如下:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...复制
ssh-keys
元数据值。在工作站上创建并打开一个新的文本文件。
在该文件中,粘贴您刚刚复制的密钥列表。
使用以下格式之一在列表末尾添加新密钥:
- 没有到期时间的密钥格式:
USERNAME:KEY_VALUE
- 具有到期时间的密钥格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到实例。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 保存并关闭文件。
运行
gcloud compute instances add-metadata
命令以设置ssh-keys
值:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
替换以下内容:
VM_NAME
:您要为其添加 SSH 密钥的虚拟机- 将
KEY_FILE
替换为以下项之一: - 您在上一步中创建的文件的路径(如果虚拟机已有 SSH 密钥)
- 新建 SSH 公钥文件的路径(如果虚拟机还没有 SSH 密钥)
使用
instances.get
方法从元数据获取fingerprint
和ssh-keys
值。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
替换以下内容:
PROJECT_ID
:您的项目 IDZONE
:要添加 SSH 密钥的虚拟机所在的可用区VM_NAME
:您要为其添加 SSH 密钥的虚拟机
响应类似于以下示例:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
使用
instances.setMetadata
方法添加新的ssh-keys
值。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }
替换以下内容:
PROJECT_ID
:您的项目 IDEXISTING_SSH_KEYS
:instances.get
请求的响应中的ssh-keys
键的值FINGERPRINT
:projects.get
请求的响应中的fingerprint
NEW_SSH_KEY
:新 SSH 密钥,格式如下:- 没有到期时间的密钥格式:
USERNAME:KEY_VALUE
- 具有到期时间的密钥格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
替换以下内容:
KEY_VALUE
:SSH 公钥值USERNAME
:您的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到实例。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。EXPIRE_TIME
:密钥的到期时间,采用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 没有到期时间的密钥格式:
- 了解如何连接到虚拟机。
- 了解如何管理对虚拟机的访问权限。
- 了解如何将文件传输到虚拟机。
- 了解与 Linux 虚拟机的 SSH 连接在 Compute Engine 上的工作原理。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
将密钥添加到使用 OS Login 的虚拟机
使用 OS Login 的虚拟机接受与您的 Google 账号关联的 SSH 密钥。您可以使用 gcloud CLI 或使用 OS Login API 将 SSH 公钥与您的 Google 账号相关联。如果您是组织的管理员,则可以使用 Directory API 将 SSH 密钥添加到用户账号。
将 SSH 密钥添加到 Google 账号时,Compute Engine 会通过组合与您的 Google 账号关联的电子邮件中的用户名和域名来为您生成用户名。例如,如果您的电子邮件地址是
cloudysanfrancisco@gmail.com
,则用户名为cloudysanfrancisco_gmail_com
。如果您在组织外部的项目中添加 SSH 密钥,则用户名带有ext_
前缀,例如ext_cloudysanfrancisco_gmail_com
。您的组织管理员可以使用 Directory API 自定义您的用户名。如果您已配置用户名,则 Compute Engine 会在您添加 SSH 密钥时使用该用户名。gcloud
Terraform
如需向账号添加 SSH 公钥,请使用
google_client_openid_userinfo
资源以及google_os_login_ssh_public_key
资源。REST
如需向账号添加 SSH 公钥,请使用 OS Login API
users.importSshPublicKey
方法:POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey { "key": "SSH_KEY", "expirationTimeUsec": "EXPIRATION_TIMESTAMP" }
替换以下内容:
将 SSH 密钥添加到使用基于元数据的 SSH 密钥的虚拟机
不使用 OS Login的虚拟机会将 SSH 密钥存储在 Compute Engine 项目和实例元数据中。您可以使用存储在项目元数据中的 SSH 密钥来访问项目中的所有虚拟机。您可以使用存储在实例元数据中的 SSH 密钥来访问各个虚拟机。
Compute Engine 不会在 SSH 密钥过期时自动从元数据中移除过期的 SSH 密钥,但过期密钥不能用于建立新的虚拟机连接。如果要从元数据中移除过期密钥,请参阅从使用基于元数据的密钥的虚拟机中移除 SSH 密钥。
您可以使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API 将 SSH 公钥添加到项目或实例元数据中。
将 SSH 密钥添加到项目元数据中
您可以向项目元数据添加 SSH 公钥,以访问项目中的所有虚拟机(屏蔽项目范围 SSH 密钥的虚拟机除外)。如需详细了解如何屏蔽项目范围的 SSH 密钥,请参阅在使用基于元数据的 SSH 密钥的虚拟机中屏蔽 SSH 密钥。
控制台
如需使用 Google Cloud 控制台向项目元数据添加 SSH 公钥,请执行以下操作:
gcloud
Terraform
如需向项目元数据添加 SSH 公钥,请使用
google_compute_project_metadata
资源。REST
如果项目元数据中存在现有 SSH 密钥,则每次使用 Compute Engine API 添加新的 SSH 密钥时,都必须将这些密钥重新添加到项目元数据中。如果您不重新添加现有密钥,则添加新密钥会清空现有密钥。
如需使用 Compute Engine API 向项目元数据添加 SSH 公钥,请执行以下操作:
将 SSH 密钥添加到实例元数据
您可以在创建虚拟机时或在创建虚拟机后向实例元数据添加 SSH 公钥。
在创建虚拟机期间向实例元数据添加 SSH 密钥
您可以在创建虚拟机期间使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API 将 SSH 密钥添加到实例元数据。
控制台
要使用 Google Cloud 控制台创建虚拟机并同时向实例元数据添加 SSH 公钥,请执行以下操作:
gcloud
Terraform
如需向实例元数据添加 SSH 公钥,请使用
google_compute_instance
资源。REST
如需创建虚拟机并且同时使用 Compute Engine 向实例元数据添加 SSH 公钥,请构建一个向
instances.insert
方法发出的POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
替换以下内容:
在请求正文中,在
items
属性中提供用户名和 SSH 公钥:... { "items": [ { "key": "ssh-keys", "value": "PUBLIC_KEY" } ] } ...
将
PUBLIC_KEY
替换为您的公钥,采用以下格式之一:替换以下内容:
您可以通过在密钥之间添加
\n
来添加多个 SSH 密钥。创建虚拟机后,将 SSH 密钥添加到实例元数据
您可以在创建虚拟机后使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API 将 SSH 密钥添加到实例元数据。
控制台
如需使用 Google Cloud 控制台向实例元数据添加 SSH 公钥,请执行以下操作:
gcloud
REST
如果实例元数据中存在现有 SSH 密钥,则每次使用 Compute Engine API 工具添加新的 SSH 密钥时,都必须将这些密钥重新添加到实例元数据中。如果您不重新添加现有密钥,则添加新密钥会清空现有密钥。
如需使用 Compute Engine API 向实例元数据添加 SSH 公钥,请执行以下操作:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-06-28。
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"翻译问题" },{ "type": "thumb-down", "id": "otherDown", "label":"其他" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"易于理解" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"解决了我的问题" },{ "type": "thumb-up", "id": "otherUp", "label":"其他" }] -