使用 Azure Bastion 创建到 Windows VM 的 SSH 连接

本文演示如何直接通过 Azure 门户安全无缝地与 Azure 虚拟网络中的 Windows VM 建立 SSH 连接。 使用 Azure Bastion 时,VM 不需要客户端、代理或其他软件。 也可使用 RDP 连接到 Windows VM。 有关信息,请参阅创建到 Windows VM 的 RDP 连接

Azure Bastion 为预配它的虚拟网络中的所有 VM 提供安全连接。 使用 Azure Bastion 可防止虚拟机向外部公开 RDP/SSH 端口,同时仍然使用 RDP/SSH 提供安全访问。 有关详细信息,请参阅什么是 Azure Bastion?

注意

如果要创建到 Windows VM 的 SSH 连接,则必须使用标准 SKU 对 Azure Bastion 进行配置。

使用 SSH 连接到 Windows 虚拟机时,可以使用用户名/密码和 SSH 密钥进行身份验证。

SSH 私钥必须采用以 "-----BEGIN RSA PRIVATE KEY-----" 开头并以 "-----END RSA PRIVATE KEY-----" 结尾的格式。

先决条件

请确保已为 VM 所在的虚拟网络设置 Azure Bastion 主机。 有关详细信息,请参阅创建 Azure Bastion 主机。 在虚拟网络中预配和部署 Bastion 服务后,便可以使用它连接到此虚拟网络中的任何 VM。

若要通过 SSH 连接到 Windows 虚拟机,还必须确保:

  • Windows 虚拟机运行 Windows Server 2019 或更高版本。
  • 在 Windows 虚拟机上安装并运行 OpenSSH 服务器。 若要了解如何执行此操作,请参阅安装 OpenSSH
  • Azure Bastion 已配置为使用标准 SKU。

必需的角色

需要使用以下角色进行连接:

  • 虚拟机上的读者角色
  • NIC 上的读者角色(使用虚拟机的专用 IP)
  • Azure Bastion 资源上的读者角色
  • 目标虚拟机的虚拟网络上的读者角色(如果 Bastion 部署位于对等互连虚拟网络中)。

端口

若要通过 SSH 连接到 Windows VM,必须在 VM 上打开以下端口:

  • 入站端口:SSH (22) 或
  • 入站端口:自定义值(然后,你需要在通过 Azure Bastion 连接到 VM 时指定此自定义端口)

请参阅 Azure Bastion 常见问题解答了解其他要求。

支持的配置

目前,Azure Bastion 仅支持使用 OpenSSH 通过 SSH 连接到 Windows VM。

Bastion 连接页

  1. Azure 门户中,转到要连接的虚拟机。 在“概述”页上,选择“连接”,然后从下拉列表中选择“Bastion”以打开 Bastion 连接页。 还可以从左侧窗格选择“Bastion”。

    Screenshot shows the overview for a virtual machine in Azure portal with Connect selected.

  2. 在 Bastion 连接页上,单击“连接设置”箭头以展开所有可用的设置。 请注意,如果使用 Bastion 标准 SKU,则可用设置会更多。

    Screenshot shows connection settings.

  3. 使用以下部分中的方法之一进行身份验证和连接。

用户名和密码

使用以下步骤通过用户名和密码进行身份验证。

Screenshot shows Password authentication.

  1. 若要使用用户名和密码进行身份验证,请配置以下设置:

    • 协议:选择 SSH。
    • 端口:输入端口号。 自定义端口连接仅适用于“标准”SKU。
    • 身份验证类型:从下拉列表中选择“密码”。
    • 用户名:输入用户名。
    • 密码:输入密码。
  2. 若要在新的浏览器选项卡中使用 VM,请选择“在新建浏览器选项卡中打开”。

  3. 单击“连接”以连接到 VM。

本地文件中的私钥

使用以下步骤通过本地文件中的 SSH 私钥进行身份验证。

Screenshot shows private key from local file authentication.

  1. 若要使用本地文件中的私钥进行身份验证,请配置以下设置:

    • 协议:选择 SSH。
    • 端口:输入端口号。 自定义端口连接仅适用于“标准”SKU。
    • 身份验证类型:从下拉列表中选择“本地文件中的 SSH 私钥”。
    • 本地文件:选择本地文件。
    • SSH 密码:如有必要,请输入 SSH 密码。
  2. 若要在新的浏览器选项卡中使用 VM,请选择“在新建浏览器选项卡中打开”。

  3. 单击“连接”以连接到 VM。

密码 - Azure Key Vault

使用以下步骤通过 Azure Key Vault 中的密码进行身份验证。

Screenshot shows password from Azure Key Vault authentication.

  1. 若要使用 Azure Key Vault 中的密码进行身份验证,请配置以下设置:

    • 协议:选择 SSH。

    • 端口:输入端口号。 自定义端口连接仅适用于“标准”SKU。

    • 身份验证类型:从下拉列表中选择“Azure Key Vault 中的密码”。

    • 用户名:输入用户名。

    • 订阅:选择订阅。

    • Azure Key Vault:选择 Key Vault。

    • Azure Key Vault 机密:选择包含 SSH 私钥值的 Key Vault 机密。

      • 如果未设置 Azure Key Vault 资源,请参阅创建密钥保管库并将 SSH 私钥存储为新 Key Vault 机密的值。

      • 确保对 Key Vault 中存储的机密具有“列出”和“获取”权限 。 若要为 Key Vault 资源分配访问策略和修改该资源的访问策略,请参阅分配 Key Vault 访问策略

        注意

        请通过 PowerShell 或 Azure CLI 体验将 SSH 私钥作为机密存储在 Azure Key Vault 中。 通过 Azure Key Vault 门户体验存储私钥会干扰格式设置并导致登录失败。 如果确实已使用门户体验将私钥存储为机密,并且不再有权访问原始私钥文件,请参阅更新 SSH 密钥以使用新的 SSH 密钥对更新对目标 VM 的访问权限。

  2. 若要在新的浏览器选项卡中使用 VM,请选择“在新建浏览器选项卡中打开”。

  3. 单击“连接”以连接到 VM。

私钥 - Azure Key Vault

使用以下步骤通过 Azure Key Vault 中存储的私钥进行身份验证。

Screenshot shows Private key stored in Azure Key Vault authentication.

  1. 若要使用 Azure Key Vault 中存储的私钥进行身份验证,请配置以下设置:

    • 协议:选择 SSH。

    • 端口:输入端口号。 自定义端口连接仅适用于“标准”SKU。

    • 身份验证类型:从下拉列表中选择“Azure Key Vault 中的 SSH 私钥”。

    • 用户名:输入用户名。

    • 订阅:选择订阅。

    • Azure Key Vault:选择 Key Vault。

      • 如果未设置 Azure Key Vault 资源,请参阅创建密钥保管库并将 SSH 私钥存储为新 Key Vault 机密的值。

      • 确保对 Key Vault 中存储的机密具有“列出”和“获取”权限 。 若要为 Key Vault 资源分配访问策略和修改该资源的访问策略,请参阅分配 Key Vault 访问策略

        注意

        请通过 PowerShell 或 Azure CLI 体验将 SSH 私钥作为机密存储在 Azure Key Vault 中。 通过 Azure Key Vault 门户体验存储私钥会干扰格式设置并导致登录失败。 如果确实已使用门户体验将私钥存储为机密,并且不再有权访问原始私钥文件,请参阅更新 SSH 密钥以使用新的 SSH 密钥对更新对目标 VM 的访问权限。

    • Azure Key Vault 机密:选择包含 SSH 私钥值的 Key Vault 机密。

  2. 若要在新的浏览器选项卡中使用 VM,请选择“在新建浏览器选项卡中打开”。

  3. 单击“连接”以连接到 VM。

后续步骤

有关 Azure Bastion 的详细信息,请参阅 Bastion 常见问题解答