本文档介绍了如何将 SSH 密钥添加到使用 OS Login 的虚拟机 (VM) 实例和使用基于元数据的 SSH 密钥的虚拟机。如果您或您的组织管理员尚未启用 OS Login,则虚拟机将使用基于元数据的 SSH 密钥。
准备工作
- 如需了解如何管理对 Compute Engine 虚拟机的访问权限,请参阅选择访问方法。
- 如果您尚未创建 SSH 密钥对,请先创建。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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.
-
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.
如需向账号添加 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 密钥标签页。
点击修改。
点击添加项。
在随即打开的 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
- 没有到期时间的密钥格式:
点击保存。
如果项目元数据中存在现有 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
- 没有到期时间的密钥格式:
要创建并启动该虚拟机,请点击创建。
-
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 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
- 没有到期时间的密钥格式:
点击保存。
-
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.
如果实例元数据中存在现有 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 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 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 项目和实例元数据中。如果为虚拟机启用了 OS Login,则虚拟机的客机代理会忽略存储在元数据中的密钥。
您可以使用存储在项目元数据中的 SSH 密钥来访问项目中的所有虚拟机。您可以使用存储在实例元数据中的 SSH 密钥来访问各个虚拟机。
Compute Engine 不会在 SSH 密钥过期时自动从元数据中移除过期的 SSH 密钥,但过期密钥不能用于建立新的虚拟机连接。如果要从元数据中移除过期密钥,请参阅从使用基于元数据的密钥的虚拟机中移除 SSH 密钥。
您可以使用 Google Cloud 控制台、gcloud CLI 或 REST 将 SSH 公钥添加到项目或虚拟机实例元数据中。
将 SSH 密钥添加到项目元数据中
您可以向项目元数据添加 SSH 公钥,以访问项目中的所有虚拟机(屏蔽项目范围 SSH 密钥的虚拟机除外)。如需详细了解如何屏蔽项目范围的 SSH 密钥,请参阅在使用基于元数据的 SSH 密钥的虚拟机中屏蔽 SSH 密钥。
控制台
如需使用 Google Cloud 控制台向项目元数据添加 SSH 公钥,请执行以下操作:
gcloud
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.
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-12-22。
-