你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何使用 PowerShell 部署Azure Bastion。 Azure Bastion 是为你维护的 PaaS 服务,而不是在你的 VM 上安装并由你自己维护的堡垒主机。 Azure Bastion 的部署是基于每个虚拟网络,而不是基于每个订阅/账户或虚拟机。 有关Azure Bastion的详细信息,请参阅 什么是 Azure Bastion?
在将 Bastion 部署到虚拟网络后,即可通过专用 IP 地址连接到你的 VM。 同一虚拟网络中的所有 VM 都可以获得此无缝 RDP/SSH 体验。 如果 VM 具有你不需要其来执行任何其它操作的公共 IP 地址,可以将其删除。
在本文中,你将创建虚拟网络(如果还没有虚拟网络),使用 PowerShell 部署Azure Bastion,并连接到 VM。 这些示例显示了使用标准 SKU 部署的 Bastion,但可以根据要使用的功能使用不同的 Bastion SKU。 有关详细信息,请参阅 Bastion SKU。
还可通过使用以下其他方法来部署 Bastion:
- Azure 门户 - 部署 Bastion
- Azure 门户 - 使用默认设置和标准 SKU 部署 Bastion
- 使用 Azure CLI 部署
注意
支持将 Azure Bastion 和 Azure 专用 DNS 区域一起使用。 但存在一些限制。 有关详细信息,请参阅 Azure Bastion FAQ。
开始之前
验证你是否具有Azure订阅。 如果还没有Azure订阅,可以激活 MSDN 订阅者权益或注册 free 帐户。
PowerShell
本文使用 PowerShell cmdlet。 若要运行 cmdlet,可以使用Azure Cloud Shell。 Cloud Shell是一个免费的交互式 shell,可用于运行本文中的步骤。 它预先安装了常用的 Azure 工具并配置为可与您的帐户一起使用。
若要打开Cloud Shell,只需从代码块右上角选择 Open Cloudshell。 还可以通过转到 https://shell.azure.com/powershell,在单独的浏览器选项卡上打开Cloud Shell。 选择 Copy 复制代码块,将其粘贴到Cloud Shell,然后选择 Enter 键以运行它们。
还可以在计算机上本地安装和运行 Azure PowerShell cmdlet。 PowerShell cmdlet 经常更新。 如果尚未安装最新版本,说明中指定的值可能会失败。 若要查找计算机上安装的Azure PowerShell版本,请使用 Get-Module -ListAvailable Az cmdlet。 若要安装或更新,请参阅 安装 Azure PowerShell 模块。
示例值
创建此配置时,可以使用以下示例值,也可以将其替换为自己的值。
示例 VNet 和 VM 值:
| 名称 | 价值 |
|---|---|
| 虚拟机 | TestVM |
| 资源组 | TestRG1 |
| 区域 | 美国东部 |
| 虚拟网络 | VNet1 |
| 地址空间 | 10.1.0.0/16 |
| 子网 | FrontEnd:10.1.0.0/24 |
Azure Bastion values:
| 名称 | 价值 |
|---|---|
| 名称 | VNet1-bastion |
| 子网名称 | FrontEnd |
| 子网名称 | AzureBastionSubnet |
| AzureBastionSubnet 地址 | 虚拟网络地址空间中的子网,子网掩码为 /26 或更大。 例如 10.1.1.0/26。 |
| SKU | 标准 |
| 公共 IP 地址 | 新建 |
| 公共 IP 地址名称 | VNet1-ip |
| 公共 IP 地址 SKU | 标准 |
| 分配 | 静态 |
部署 Bastion
本部分介绍如何使用Azure PowerShell创建虚拟网络、子网和部署Azure Bastion。
重要说明
从部署 Bastion 的时刻开始按小时计费,与出站数据的使用情况无关。 有关详细信息,请参阅 定价 和 SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。
创建资源组、虚拟网络和前端子网,以便通过 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配置 Azure Bastion 子网并将其用于虚拟网络。 此子网专用于 Azure Bastion 资源。 必须使用名称值 AzureBastionSubnet 创建此子网。 此值允许Azure知道要向其部署 Bastion 资源的子网。 以下部分中的示例可帮助将Azure Bastion子网添加到现有 VNet。
- 可以创建的最小的子网 AzureBastionSubnet 大小为 /26。 建议创建 /26 或更大的大小以适应主机缩放。
- 有关缩放的详细信息,请参阅配置设置 - 主机缩放。
- 有关设置的详细信息,请参阅配置设置 - AzureBastionSubnet。
- 创建不包含路由表或委托的 AzureBastionSubnet。
- 如果使用 AzureBastionSubnet 上的网络安全组,请参阅使用 NSG 一文。
设置变量。
$vnet = Get-AzVirtualNetwork -Name "TestVNet1" -ResourceGroupName "TestRG1"添加子网。
Add-AzVirtualNetworkSubnetConfig ` -Name "AzureBastionSubnet" -VirtualNetwork $vnet ` -AddressPrefix "10.1.1.0/26" | Set-AzVirtualNetwork- 可以创建的最小的子网 AzureBastionSubnet 大小为 /26。 建议创建 /26 或更大的大小以适应主机缩放。
为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使用 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"部署 Bastion 资源大约需要 10 分钟。 当 Bastion 部署到虚拟网络时,你可以在下一部分创建 VM。
创建 VM
可以根据快速入门:使用 PowerShell 创建 VM 一文或快速入门:使用门户创建 VM 一文创建 VM。 请确保将 VM 部署到 Bastion 部署到的同一个虚拟网络。 在此部分创建的 VM 不是 Bastion 配置的一部分,不会成为堡垒主机。 在本教程稍后通过 Bastion 连接到此 VM。
资源所需的以下角色。
所需 VM 角色:
- 虚拟机上的读者角色。
- NIC 上的读者角色(使用虚拟机的专用 IP)。
所需的入站端口:
- 对于 Windows VMS - RDP (3389)
- 对于 Linux VM - SSH (22)
连接到 VM
可以使用以下部分中的连接步骤连接到 VM。 还可以使用以下任何文章来连接到 VM。 有些连接类型需要 Bastion 标准 SKU。
- 连接到Windows VM
- 连接到 Linux VM
- 连接到规模集
- 通过 IP 地址进行连接
- 从本地客户端连接
连接步骤
在 Azure 门户中,转到要连接到的虚拟机。
在窗格顶部,选择
连接 Bastion ,以转到 Bastion 窗格。 还可以使用左侧菜单转到“Bastion”窗格。 Bastion 窗格中提供的选项取决于 Bastion SKU。
如果使用的是 标准或更高的 SKU,则有更多的连接协议和端口选项可用。 展开“连接设置”以查看选项。 通常,除非为 VM 配置不同的设置,否则使用 RDP 和端口 3389 连接到Windows计算机。 使用 SSH 和端口 22 连接到 Linux 计算机。
如果使用 Basic SKU,请使用 RDP 和端口 3389 连接到Windows计算机。 对于基本 SKU,还可以使用 SSH 和端口 22 连接到 Linux 计算机。 没有用于更改端口号或协议的选项。 但是,可以通过在此窗格上展开“连接设置”更改 RDP 的键盘语言。
如果使用 开发人员 SKU,Bastion 会在首次连接时自动部署。 可以使用 RDP 和端口 3389 或 SSH 和端口 22 连接到 Windows 计算机。 开发人员 SKU 使用共享池体系结构,在 所选区域中无需额外付费。
对于“身份验证类型”,请从下拉列表中选择身份验证类型。 协议确定可用的身份验证类型。 填写所需的身份验证值。
若要在新浏览器选项卡中打开 VM 会话,请保持选中“在新浏览器选项卡中打开”。
选择“连接”以连接到 VM。
确认使用端口 443 和 Bastion 服务直接在 Azure 门户中(通过 HTML5)打开与虚拟机的连接。
连接到 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 上启用远程音频输出,请执行以下作:
- 连接到 VM 后,工具栏右下角会显示一个音频按钮。 右键单击音频按钮,然后选择声音。
- 弹出消息询问是否要启用Windows音频服务。 选择 “是”。 您可以在“声音设置”中配置更多音频选项。
- 要验证声音输出,请将鼠标悬停在工具栏的音频按钮上。
删除 VM 公共 IP 地址
Azure Bastion不使用公共 IP 地址连接到客户端 VM。 如果 VM 不需要公共 IP 地址,可以取消与公共 IP 地址的关联。 请参阅 从 Azure VM 解除公共 IP 地址的关联。
后续步骤
- 若要在 Azure Bastion 子网上使用网络安全组 (NSG),请参阅与网络安全组协作。
- 若要了解 VNet 对等互连,请参阅Virtual Network对等互连和Azure Bastion。