如何在 Azure 上将 SSH 密钥与 Windows 配合使用

本文介绍如何在 Windows 计算机上生成和使用安全外壳 (SSH) 密钥以在 Azure 中创建并连接到 Linux 虚拟机 (VM)。 若要使用来自 Linux 或 macOS 客户端的 SSH 密钥,请参阅快速详细指南。

SSH 和密钥的概述

SSH 是一种加密的连接协议,利用该协议可以通过未受保护的连接进行安全登录。 它是适用于 Azure 中托管的 Linux VM 的默认连接协议。 虽然 SSH 本身提供加密连接,但是将密码用于 SSH 连接仍使 VM 易受到强力破解攻击或猜测密码。 使用 SSH 连接到 VM 的更安全且首选的方法是使用公钥-私钥对,也称为 SSH 密钥。

  • 公钥放置在 Linux VM 上或者要对其使用公钥加密的任何其他服务中。

  • 私钥是在建立 SSH 连接时向 Linux VM 呈现的内容,以验证身份。 请保护好私钥, 不要透露给其他人。

根据组织的安全策略,可重复使用单个公钥-私钥对来访问多个 Azure VM 和服务。 无需对要访问的每个 VM 或服务使用单独的密钥对。

公钥可与任何人共享;但只有你(或本地安全基础结构)才拥有私钥。

受支持的 SSH 密钥格式

Azure 目前支持最小长度为 2048 位的 SSH 协议 2 (SSH-2) RSA 公钥-私钥对。 不支持其他密钥格式(如 ED25519 和 ECDSA)。

Windows 程序包和 SSH 客户端

可使用 SSH 客户端连接到 Azure 中的 Linux VM,并对其进行管理。 运行 Linux 或 macOS 的计算机通常具有一套 SSH 命令来生成和管理 SSH 密钥并建立 SSH 连接。

Windows 计算机并不总是装有类似的 SSH 命令。 最新版本的 Windows 10 提供 OpenSSH 客户端命令来创建和管理 SSH 密钥,并通过命令提示符建立 SSH 连接。 最近的 Windows 10 版本还包括适用于 Linux 的 Windows 子系统,以便在 Bash shell 中以本机方式运行并访问 SSH 客户端等实用工具。

如果希望对 Windows 使用其他 SSH 工具,以下包中包含可本地安装的常见 Windows SSH 客户端:

创建 SSH 密钥对

本节介绍在 Windows 上创建 SSH 密钥对的两种选项。

使用 ssh-keygen 创建 SSH 密钥

如果在 Windows 上运行支持 SSH 客户端工具的命令外壳,请使用 ssh-keygen 命令创建 SSH 密钥对。 键入以下命令,并回答提示。 如果当前位置存在 SSH 密钥对,这些文件将被覆盖。

ssh-keygen -t rsa -b 2048

有关详细背景和信息,请参阅快速详细步骤以使用 ssh-keygen 创建密钥。

使用 PuTTYgen 创建 SSH 密钥

如果更喜欢使用基于 GUI 的工具创建 SSH 密钥,可使用 PuTTY 下载包附带的 PuTTYgen 密钥生成器。

使用 PuTTYgen 创建 SSH RSA 密钥对:

  1. 启动 PuTTYgen。

  2. 单击“生成”。 默认情况下,PuTTYgen 生成一个 2048 位的 SSH-2 RSA 密钥。

  3. 将鼠标悬停在空白区域上,为密钥生成某些随机性。

  4. 生成公钥后,可选择输入并确认通行短语。 使用 SSH 密钥面向 VM 进行身份验证时,系统会提示输入通行短语。 如果有人获取了私钥但没有通行短语,他们可以登录到使用该密钥的任何 VM 或服务。 我们建议创建一个通行短语。 但是,如果你忘记了通行短语,将没有办法恢复它。

  5. 公钥会显示在窗口的顶部。 创建 Linux VM 时,将此单行格式公钥复制并粘贴到 Azure 门户或 Azure 资源管理器模板中。 也可以单击“保存公钥”将一个副本保存到计算机:

    保存 PuTTY 公钥文件

  6. 或者,若要将私钥以 PuTTy 私钥格式(.ppk 文件)保存,请单击“保存私钥”。 如果希望稍后使用 PuTTY 来通过 SSH 连接到 VM,则需要该 .ppk 文件。

    保存 PuTTY 私钥文件

    如果要将私钥以 OpenSSH 格式(许多 SSH 客户端使用的私钥格式)保存,请单击“转换” > “导出 OpenSSH 密钥”。

部署 VM 时提供 SSH 公钥

若要创建使用 SSH 密钥进行身份验证的 Linux VM,请在使用 Azure 门户或其他方法创建 VM 时提供 SSH 公钥。

以下示例演示在创建 Linux VM 时,如何复制此公钥并将其粘贴到 Azure 门户中。 然后,公钥通常存储在新 VM 上的 ~/.ssh/authorized_keys 中。

在 Azure 门户中创建 VM 时使用公钥

连接到 VM

在 Windows 中建立 SSH 以连接 Linux VM 的方法之一是使用 SSH 客户端。 如果 Windows 系统上安装了 SSH 客户端,这是首选方法。 如果更喜欢基于 GUI 的工具,可使用 PuTTY 进行连接。

使用 SSH 客户端

凭借部署在 Azure VM 上的公钥和本地系统上的私钥,使用 VM 的 IP 地址或 DNS 名称通过 SSH 连接到 VM。 将以下命令中的 azureusermyvm.chinanorth.cloudapp.chinacloudapi.cn 替换为管理员用户名和完全限定的域名(或 IP 地址):

ssh azureuser@myvm.chinanorth.cloudapp.chinacloudapi.cn

如果创建密钥对时配置了通行短语,则在登录过程中遇到提示时,请输入该通行短语。

通过 PuTTY 连接

如果安装了 PuTTY 下载包并且之前生成了 PuTTY 私钥(.ppk 文件),可通过 PuTTY 连接到 Linux VM。

  1. 启动 PuTTY。

  2. 在 Azure 门户中填写 VM 的主机名或 IP 地址:

    打开新的 PuTTY 连接

  3. 在选择“打开”之前,单击“连接” > “SSH” > “身份验证”选项卡。浏览并选择 PuTTY 私钥(.ppk 文件):

    选择用于身份验证的 PuTTY 私钥

  4. 单击“打开”以连接到 VM。

后续步骤