创建 SSH 密钥


本文档介绍了如何为 Compute Engine 虚拟机 (VM) 实例创建 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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

在 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:虚拟机上的用户名。例如 cloudysanfranciscocloudysanfrancisco_gmail_com

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

    对于使用 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

替换以下内容:

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

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

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

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

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

    对于使用 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。如需了解详情,请参阅以根用户身份连接到 Linux 虚拟机

    对于使用 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

后续步骤