创建 SSH 密钥


本文档介绍了如何为 Compute Engine 虚拟机 (VM) 实例创建 SSH 密钥对。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

创建 SSH 密钥对

如果您使用 Google Cloud 控制台或 Google Cloud CLI 连接到虚拟机,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 -b 2048

替换以下内容:

  • KEY_FILENAME:您的 SSH 密钥文件的名称。

    例如,如果文件名为 my-ssh-key,则系统会生成一个名为 my-ssh-key 的私钥文件和一个名为 my-ssh-key.pub 的公钥文件。

  • USERNAME:虚拟机上的用户名。例如 cloudysanfranciscocloudysanfrancisco_gmail_com

    对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则 USERNAME 不能为 root。如需了解详情,请参阅以根用户身份连接到虚拟机

    对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为 DOMAIN\ 的 AD 网域。例如,ad.example.com AD 中的用户 cloudysanfranciscoUSERNAMEexample\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 -b 2048

替换以下内容:

  • WINDOWS_USER:Windows 机器上的用户名。

  • KEY_FILENAME:您的 SSH 密钥文件的名称。

    例如,如果文件名为 my-ssh-key,则系统会生成一个名为 my-ssh-key 的私钥文件和一个名为 my-ssh-key.pub 的公钥文件。

  • USERNAME:虚拟机上的用户名。例如 cloudysanfranciscocloudysanfrancisco_gmail_com

    对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则 USERNAME 不能为 root。如需了解详情,请参阅以根用户身份连接到虚拟机

    对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在用户名前面加上格式为 DOMAIN\ 的 AD 网域。例如,ad.example.com AD 中的用户 cloudysanfranciscoUSERNAMEexample\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 密钥对。

  1. 下载 puttygen.exe(如果您尚未下载)。

  2. 打开 PuTTYgen。

  3. 参数下,指定以下内容:

    • 要生成的密钥的类型RSA
    • 生成的密钥中的位数2048 或更多
  4. 点击生成并按照屏幕上的说明操作。

    该工具会显示公钥值。

  5. 密钥注释部分,将预先填充的文本替换为您的用户名。例如 cloudysanfranciscocloudysanfrancisco_gmail_com

    对于 Linux 虚拟机,除非您将虚拟机配置为允许 root 登录,否则密钥注释不能为 root。如需了解详情,请参阅以根用户身份连接到虚拟机

    对于使用 Active Directory (AD) 的 Windows 虚拟机,必须在密钥注释前面加上 AD 网域,格式为 DOMAIN\。例如,ad.example.com AD 中的用户 cloudysanfrancisco密钥注释example\cloudysanfrancisco

  6. 可选:输入密钥口令,以使用密码保护您的密钥。

  7. 点击保存私钥,以选择保存私钥的位置。

    PuTTYgen 将私钥写入扩展名为 .ppk 的文件中。

  8. 点击保存公钥,以选择保存公钥的位置。让 PuTTYgen 窗口保持打开状态。

  9. 复制用于粘贴到 OpenSSH authorized_keys 文件的公钥字段中的文本。

  10. 打开公钥文件。公钥的格式类似于以下内容:

    ---- BEGIN SSH2 PUBLIC KEY ----
    Comment: "USERNAME"
    KEY_VALUE
    ---- END SSH2 PUBLIC KEY ----
    
  11. 将公钥文件的全部内容替换为您从用于粘贴到 OpenSSH authorized_keys 文件的公钥字段中复制的值,从而使公钥文件匹配以下格式:

    KEY_VALUE USERNAME
    

用户 cloudysanfrancisco 的公钥类似于以下内容:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco

后续步骤