你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure PowerShell 部署 Bastion

本文介绍如何使用 Azure PowerShell 来部署 Azure Bastion。 Azure Bastion 是为你维护的 PaaS 服务,而不是在你的 VM 上安装并由你自己维护的堡垒主机。 Azure Bastion 部署是按虚拟网络进行的,而不是按订阅/帐户或虚拟机部署。 有关 Azure Bastion 的详细信息,请参阅什么是 Azure Bastion?

在将 Bastion 部署到虚拟网络后,即可通过专用 IP 地址连接到你的 VM。 同一虚拟网络中的所有 VM 都可以获得此无缝 RDP/SSH 体验。 如果 VM 具有你不需要其来执行任何其它操作的公共 IP 地址,可以将其删除。

显示 Azure Bastion 体系结构的示意图。

在本文中,你将创建一个虚拟网络(如果还没有)、使用 PowerShell 部署 Azure Bastion,并连接到 VM。 这些示例显示的是使用标准 SKU 层部署的 Bastion,但你可以根据要使用的功能使用不同的 Bastion SKU。 有关详细信息,请参阅 Bastion SKU

还可通过使用以下其他方法来部署 Bastion:

注意

支持将 Azure Bastion 和 Azure 专用 DNS 区域一起使用。 但存在一些限制。 有关详细信息,请参阅 Bastion 常见问题解答

开始之前

确保拥有 Azure 订阅。 如果还没有 Azure 订阅,可以激活 MSDN 订户权益或注册获取免费帐户

PowerShell

本文使用 PowerShell cmdlet。 若要运行 cmdlet,可以使用 Azure Cloud Shell。 Cloud Shell 是免费的交互式 shell,可以使用它运行本文中的步骤。 它预安装有常用 Azure 工具并将其配置与帐户一起使用。

要打开 Cloud Shell,只需从代码块的右上角选择“打开 Cloudshell”。 也可以在单独的浏览器标签页中通过转到 https://shell.azure.com/powershell 打开 Cloud Shell。 选择“复制”以复制代码块,将其粘贴到 Cloud Shell 中,然后选择“Enter”键来运行这些代码。

还可以在计算机本地安装并运行 Azure PowerShell cmdlet。 PowerShell cmdlet 经常更新。 如果尚未安装最新版本,说明中指定的值可能会失败。 若要查找计算机上安装的 Azure PowerShell 版本,请使用 Get-Module -ListAvailable Az cmdlet。 若要进行安装或更新,请参阅安装 Azure PowerShell 模块

示例值

创建此配置时,可以使用以下示例值,也可以将其替换为自己的值。

示例 VNet 和 VM 值:

Name
虚拟机 TestVM
资源组 TestRG1
区域 美国东部
虚拟网络 VNet1
地址空间 10.1.0.0/16
子网 前端:10.1.0.0/24

Azure Bastion 值:

名称
名称 VNet1-bastion
子网名称 FrontEnd
子网名称 AzureBastionSubnet
AzureBastionSubnet 地址 虚拟网络地址空间中的子网,子网掩码为 /26 或更大。
例如 10.1.1.0/26。
层/SKU 标准
公共 IP 地址 新建
公共 IP 地址名称 VNet1-ip
公用 IP 地址 SKU Standard
分配 静态

部署 Bastion

本部分可帮助你创建虚拟网络、子网,以及使用 Azure PowerShell 部署 Azure Bastion。

重要

小时定价从部署 Bastion 的时刻开始计算,而无论出站数据使用情况如何。 有关详细信息,请参阅定价SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。

  1. 创建资源组、虚拟网络和前端子网,以便通过 Bastion 将要连接到的 VM 部署到其中。 如果在本地运行 PowerShell,请使用提升的权限打开 PowerShell 控制台,然后使用 Connect-AzAccount 命令连接到 Azure。

    New-AzResourceGroup -Name TestRG1 -Location EastUS ` 
    $frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name FrontEnd `
    -AddressPrefix "10.1.0.0/24" ` 
    $virtualNetwork = New-AzVirtualNetwork `
    -Name TestVNet1 -ResourceGroupName TestRG1 `
    -Location EastUS -AddressPrefix "10.1.0.0/16" `
    -Subnet $frontendSubnet ` 
    $virtualNetwork | Set-AzVirtualNetwork
    
  2. 配置和设置虚拟网络的 Azure Bastion 子网。 此子网是专为 Azure Bastion 资源保留的。 必须使用名称值 AzureBastionSubnet 创建此子网。 此值告知 Azure 要将 Bastion 资源部署到哪个子网。 以下部分中的示例还有助于将 Azure Bastion 子网添加到现有 VNet。

    • 可以创建的最小的子网 AzureBastionSubnet 大小为 /26。 建议创建 /26 或更大的大小以适应主机缩放。
    • 创建不包含任何路由表或委托的 AzureBastionSubnet。
    • 如果使用 AzureBastionSubnet 上的网络安全组,请参阅使用 NSG 一文。

    设置变量。

    $vnet = Get-AzVirtualNetwork -Name "TestVNet1" -ResourceGroupName "TestRG1"
    

    添加子网。

    Add-AzVirtualNetworkSubnetConfig `
    -Name "AzureBastionSubnet" -VirtualNetwork $vnet `
    -AddressPrefix "10.1.1.0/26" | Set-AzVirtualNetwork
    
  3. 为 Azure Bastion 创建一个公共 IP 地址。 此公共 IP 是将在其上访问 RDP/SSH(通过端口 443)的 Bastion 资源的公共 IP 地址。 公共 IP 地址必须与要创建的 Bastion 资源位于同一区域。

    $publicip = New-AzPublicIpAddress -ResourceGroupName "TestRG1" `
    -name "VNet1-ip" -location "EastUS" `
    -AllocationMethod Static -Sku Standard
    
  4. 使用 New-AzBastion 命令在 AzureBastionSubnet 中创建新的 Azure Bastion 资源。 以下示例使用基本 SKU。 但是,还可以通过更改 -Sku 值来使用其他 SKU 部署 Bastion。 选择的 SKU 决定了 Bastion 功能,并会使用更多连接类型连接到 VM。 有关详细信息,请参阅 Bastion SKU

    New-AzBastion -ResourceGroupName "TestRG1" -Name "VNet1-bastion" `
    -PublicIpAddressRgName "TestRG1" -PublicIpAddressName "VNet1-ip" `
    -VirtualNetworkRgName "TestRG1" -VirtualNetworkName "TestVNet1" `
    -Sku "Basic"
    
  5. 部署 Bastion 资源大约需要 10 分钟。 当 Bastion 部署到虚拟网络时,你可以在下一部分创建 VM。

创建 VM

可以根据快速入门:使用 PowerShell 创建 VM 一文或快速入门:使用门户创建 VM 一文创建 VM。 请确保将 VM 部署到 Bastion 部署到的同一个虚拟网络。 在此部分创建的 VM 不是 Bastion 配置的一部分,不会成为堡垒主机。 本教程稍后会通过 Bastion 连接到此 VM。

以下是资源所需的角色。

  • 所需 VM 角色:

    • 虚拟机上的读者角色。
    • NIC 上的读者角色(使用虚拟机的专用 IP)。
  • 所需的入站端口:

    • 适用于 Windows VMS - RDP (3389)
    • 适用于 Linux VMs - SSH (22)

连接到 VM

可以使用以下部分中的连接步骤连接到 VM。 还可使用以下任何文章连接到 VM。 有些连接类型需要 Bastion 标准 SKU

连接步骤

  1. Azure 门户中,转到要连接的虚拟机。

  2. 在窗格顶部,选择“连接”>“Bastion”,转到“Bastion”窗格。 还可以使用左侧菜单转到“Bastion”窗格。

  3. Bastion 窗格中提供的选项取决于 Bastion SKU。 如果使用基本 SKU,请使用 RDP 和端口 3389 连接到 Windows 计算机。 对于基本 SKU,还可以使用 SSH 和端口 22 连接到 Linux 计算机。 没有用于更改端口号或协议的选项。 但是,可以通过展开“连接设置”更改 RDP 的键盘语言。

    Azure Bastion 连接设置的屏幕截图。

    如果使用标准 SKU,有更多的连接协议和端口选项可用。 展开“连接设置”以查看选项。 通常,除非为 VM 配置了不同的设置,否则使用 RDP 和端口 3389 连接到 Windows 计算机。 使用 SSH 和端口 22 连接到 Linux 计算机。

    展开的连接设置的屏幕截图。

  4. 对于“身份验证类型”,请从下拉列表中进行选择。 协议确定可用的身份验证类型。 填写所需的身份验证值。

    显示身份验证类型下拉列表框的屏幕截图。

  5. 若要在新浏览器选项卡中打开 VM 会话,请保持选中“在新浏览器选项卡中打开”

  6. 选择“连接”以连接到 VM。

  7. 使用端口 443 和 Bastion 服务确认直接在 Azure 门户中(通过 HTML5)打开与虚拟机的连接。

    通过端口 443 建立开放连接的计算机桌面的屏幕截图。

    注意

    进行连接时,VM 的桌面看起来将与示例屏幕截图有所不同。

连接到 VM 时,使用键盘快捷键可能不会产生与本地计算机上的快捷键相同的行为。 例如,从 Windows 客户端连接到 Windows VM 时,CTRL+ALT+END 是本地计算机上 CTRL+ALT+Delete 的键盘快捷方式。 要在连接到 Windows VM 时从 Mac 执行此操作,键盘快捷方式为 fn+control+option+delete。

启用音频输出

可以为 VM 启用远程音频输出。 有些 VM 会自动启用此设置,而有些 VM 则要求手动启用音频设置。 这些设置是在 VM 本身上更改的。 Bastion 部署不需要任何特殊的配置设置来启用远程音频输出。

注意

音频输出会使用 Internet 连接上的带宽。

在 Windows VM 上启用远程音频输出:

  1. 连接到 VM 后,工具栏右下角会显示一个音频按钮。 右键单击音频按钮,然后选择“声音”
  2. 弹出消息询问是否要启用 Windows 音频服务。 选择。 可以在“声音首选项”中配置更多音频选项。
  3. 要验证声音输出,请将鼠标悬停在工具栏的音频按钮上。

删除 VM 公共 IP 地址

Azure Bastion 不使用公共 IP 地址来连接到客户端 VM。 如果 VM 不需要公共 IP 地址,可以取消与公共 IP 地址的关联。 请参阅将公共 IP 地址与 Azure VM 取消关联

后续步骤