本文档介绍了如何为 Compute Engine 虚拟机 (VM) 实例创建 SSH 密钥对。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
-
创建 SSH 密钥对
如果您使用 Google Cloud 控制台或 Google Cloud CLI 连接到虚拟机,Compute Engine 会代表您创建 SSH 密钥。如需详细了解 Compute Engine 如何配置和存储密钥,请参阅 SSH 连接简介。
如果您使用第三方工具或 OpenSSH 连接到虚拟机,则需要先向虚拟机添加密钥,然后才能连接。如果您没有 SSH 密钥,则必须创建一个。虚拟机接受 sshd_config
文件中列出的密钥格式。
在 Linux 和 macOS 工作站上,使用 ssh-keygen
实用程序创建新的 SSH 密钥对。以下示例会创建一个 RSA 密钥对。
打开终端并使用带有 -C
标志的 ssh-keygen
命令创建新的 SSH 密钥对。
ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -CUSERNAME
替换以下内容:
KEY_FILENAME
:您的 SSH 密钥文件的名称。例如,如果文件名为
my-ssh-key
,则系统会生成一个名为my-ssh-key
的私钥文件和一个名为my-ssh-key.pub
的公钥文件。USERNAME
:虚拟机上的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到 Linux 虚拟机。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。
ssh-keygen
将您的私钥文件保存到 ~/.ssh/KEY_FILENAME
,并将公钥文件保存到 ~/.ssh/KEY_FILENAME.pub
。
用户 cloudysanfrancisco
的公钥类似于以下内容:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco
在使用 Windows 10 或更高版本的工作站上,使用 ssh-keygen
实用程序创建新的 SSH 密钥对。以下示例会创建一个 RSA 密钥对。
打开命令提示符并使用带有 -C
标志的 ssh-keygen
命令创建新的 SSH 密钥对。
ssh-keygen -t rsa -f C:\Users\WINDOWS_USER \.ssh\KEY_FILENAME -CUSERNAME
替换以下内容:
WINDOWS_USER
:Windows 机器上的用户名。KEY_FILENAME
:您的 SSH 密钥文件的名称。例如,如果文件名为
my-ssh-key
,则系统会生成一个名为my-ssh-key
的私钥文件和一个名为my-ssh-key.pub
的公钥文件。USERNAME
:虚拟机上的用户名。例如cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则
USERNAME
不能为root
。如需了解详情,请参阅以根用户身份连接到 Linux 虚拟机。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为
DOMAIN\
的 AD 域。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的USERNAME
为example\cloudysanfrancisco
。
ssh-keygen
将您的私钥文件保存到 C:\Users\WINDOWS_USER\.ssh\KEY_FILENAME
,并将公钥文件保存到 C:\Users\WINDOWS_USER\.ssh\KEY_FILENAME.pub
。
用户 cloudysanfrancisco
的公钥类似于以下内容:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco
在使用 Windows 8 或更早版本的工作站上,使用 PuTTYgen 工具创建新的 SSH 密钥对。以下示例会创建一个 RSA 密钥对。
下载
puttygen.exe
(如果您尚未下载)。打开 PuTTYgen。
在参数下,指定以下内容:
- 要生成的密钥的类型:
RSA
- 生成的密钥中的位数:
2048
或更多
- 要生成的密钥的类型:
点击生成并按照屏幕上的说明操作。
该工具会显示公钥值。
在密钥注释部分,将预先填充的文本替换为您的用户名。例如
cloudysanfrancisco
或cloudysanfrancisco_gmail_com
。对于 Linux 虚拟机,除非您将虚拟机配置为允许以根用户身份登录,否则密钥注释不能为
root
。如需了解详情,请参阅以根用户身份连接到 Linux 虚拟机。对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在密钥注释前面加上 AD 域,格式为
DOMAIN\
。例如,ad.example.com
AD 中的用户cloudysanfrancisco
的密钥注释为example\cloudysanfrancisco
。可选:输入密钥口令,以使用密码保护您的密钥。
点击保存私钥,以选择保存私钥的位置。
PuTTYgen 将私钥写入扩展名为
.ppk
的文件中。点击保存公钥,以选择保存公钥的位置。让 PuTTYgen 窗口保持打开状态。
复制用于粘贴到 OpenSSH authorized_keys 文件的公钥字段中的文本。
打开公钥文件。公钥的格式类似于以下内容:
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "
USERNAME "KEY_VALUE ---- END SSH2 PUBLIC KEY ----将公钥文件的全部内容替换为您从用于粘贴到 OpenSSH authorized_keys 文件的公钥字段中复制的值,从而使公钥文件匹配以下格式:
KEY_VALUE USERNAME
用户 cloudysanfrancisco
的公钥类似于以下内容:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco
后续步骤
- 了解如何将 SSH 密钥添加到虚拟机
- 了解 SSH 连接在 Compute Engine 上的工作原理