本文档介绍了如何为 Compute Engine 虚拟机 (VM) 实例创建 SSH 密钥对,以便安全地连接到 Compute Engine VM 实例。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 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,然后使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud init - Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI,然后使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud init如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
-
创建 SSH 密钥对
如果您使用 Google Cloud 控制台或 Google Cloud CLI 连接到 Linux 虚拟机,则 Compute Engine 会代表您创建 SSH 密钥。如需详细了解 Compute Engine 如何配置和存储密钥,请参阅关于 SSH 连接。
如果您使用第三方工具或 OpenSSH 连接到虚拟机,则需要先向虚拟机添加密钥,然后才能连接。如果您没有 SSH 密钥,则必须创建一个。虚拟机接受 sshd_config 文件中列出的密钥格式。
Linux 和 macOS
在 Linux 和 macOS 工作站上,使用 ssh-keygen 实用程序创建新的 SSH 密钥对。以下示例会创建一个 RSA 密钥对。
打开终端并使用带有 -C 标志的 ssh-keygen 命令创建新的 SSH 密钥对。
ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME
替换以下内容:
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.comAD 中的用户cloudysanfrancisco的USERNAME为example\cloudysanfrancisco。
ssh-keygen 将您的私钥文件保存到 ~/.ssh/KEY_FILENAME,并将公钥文件保存到 ~/.ssh/KEY_FILENAME.pub。
用户 cloudysanfrancisco 的公钥类似于以下内容:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco
Windows 10 或更高版本
在使用 Windows 10 或更高版本的工作站上,使用 ssh-keygen 实用程序创建新的 SSH 密钥对。以下示例会创建一个 RSA 密钥对。
打开命令提示符并使用带有 -C 标志的 ssh-keygen 命令创建新的 SSH 密钥对。
ssh-keygen -t rsa -f C:\Users\WINDOWS_USER\.ssh\KEY_FILENAME -C USERNAME
替换以下内容:
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.comAD 中的用户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 或更早版本
在使用 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.comAD 中的用户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 上的工作原理