使用 Azure Bastion 创建与 Linux VM 的 SSH 连接

本文演示如何直接通过 Azure 门户安全无缝地与 Azure 虚拟网络中的 Linux VM 建立 SSH 连接。 使用 Azure Bastion 时,VM 不需要客户端、代理或其他软件。

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

使用 SSH 连接到 Linux 虚拟机时,可以使用用户名/密码和 SSH 密钥进行身份验证。 SSH 私钥必须采用以 "-----BEGIN RSA PRIVATE KEY-----" 开头并以 "-----END RSA PRIVATE KEY-----" 结尾的格式。

先决条件

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

可用的连接设置和功能取决于所使用的 Bastion SKU。 确保 Bastion 部署使用所需的 SKU。

  • 若要查看每个 SKU 层的可用功能和设置,请参阅“Bastion 概述”一文的 SKU 和功能部分。
  • 若要检查 Bastion 部署的 SKU 层并在必要时升级,请参阅升级 Bastion SKU

必需的角色

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

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

端口

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

  • 入站端口:SSH (22) 或
  • 入站端口:自定义值(在通过 Azure Bastion 连接到 VM 时,需要指定此自定义端口)。 此设置需要“标准” SKU 层。

Bastion 连接页

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

    Screenshot shows the Overview page for a virtual machine.

  2. 在“Bastion”页面上,可以配置的设置取决于为堡垒主机配置使用的 Bastion SKU 层。

    • 如果使用“标准”SKU,则“连接设置”值(端口和协议)可见,并且可以进行配置。

      Screenshot shows connection settings for the Standard SKU.

    • 如果使用“基本”SKU,则无法配置“连接设置”值。 连接会改为使用以下默认设置:SSH 和端口 22。

      Screenshot shows connection settings for the Basic SKU.

    • 若要查看并选择可用的“身份验证类型”,请使用下拉列表。

      Screenshot shows authentication type settings.

  3. 按本文中的以下部分配置身份验证设置并连接到 VM。

密码验证

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

Screenshot shows Password authentication.

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

    • 连接设置(仅限标准 SKU)

      • 协议:选择 SSH。
      • 端口:指定端口号。
    • 身份验证类型:从下拉列表中选择“密码”。

    • 用户名:输入用户名。

    • 密码:输入密码。

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

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

密码身份验证 - Azure 密钥保管库

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

Screenshot shows password from Azure Key Vault authentication.

  1. 若要使用 Azure 密钥保管库中的密码进行身份验证,请配置以下设置。

    • 连接设置(仅限标准 SKU)

      • 协议:选择 SSH。
      • 端口:指定端口号。
    • 身份验证类型:从下拉列表中选择“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。

SSH 私钥身份验证 - 本地文件

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

Screenshot shows private key from local file authentication.

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

    • 连接设置(仅限标准 SKU)

      • 协议:选择 SSH。
      • 端口:指定端口号。
    • 身份验证类型:从下拉列表中选择“本地文件中的 SSH 私钥”。

    • 用户名:输入用户名。

    • 本地文件:选择本地文件。

    • SSH 密码:如有必要,请输入 SSH 密码。

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

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

SSH 私钥身份验证 - Azure 密钥保管库

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

Screenshot shows Private key stored in Azure Key Vault authentication.

  1. 若要使用 Azure 密钥保管库中存储的私钥进行身份验证,请配置以下设置。 对于基本 SKU,无法配置连接设置,而是使用默认连接设置:SSH 和端口 22。

    • 连接设置(仅限标准 SKU)

      • 协议:选择 SSH。
      • 端口:指定端口号。
    • 身份验证类型:从下拉列表中选择“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 常见问题解答