下列程序會建立具有資源子網路的虛擬網路。
在入口網站中,搜尋並選取 [虛擬網路]。
在 [虛擬網路] 頁面上,選取 [+ 建立]。
在 [建立虛擬網路] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [新建] 在 [名稱] 中輸入 test-rg。 選取 [確定]。 |
[執行個體詳細資料] |
|
名稱 |
輸入 vnet-1。 |
區域 |
選取 [美國東部 2]。 |
選取 [下一步],繼續前往 [安全性] 索引標籤。
選取 [下一步],繼續前往 [IP 位址] 索引標籤。
在 [子網路] 下的 [位址空間] 方塊中,選取 [預設] 子網路。
在 [編輯子網路] 窗格中,輸入或選取下列資訊:
設定 |
值 |
子網路詳細資料 |
|
子網路範本 |
將預設值保留為 [Default]。 |
名稱 |
輸入 subnet-1。 |
起始位址 |
保留預設值 [10.0.0.0]。 |
子網路大小 |
保留預設值 /24(256 個位址)。 |
選取 [儲存]。
選取畫面底部的 [檢閱 + 建立]。 通過驗證之後,選取 [建立]。
首先,請使用 New-AzResourceGroup 為本文中建立的所有資源建立資源群組。 下列範例會在 westus2 位置建立一個資源群組:
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
使用 New-AzVirtualNetwork 建立虛擬網路。 下列範例會建立一個名為 vnet-1 的虛擬網路:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
使用 New-AzVirtualNetworkSubnetConfig 建立子網路組態,然後使用 Set-AzVirtualNetwork 將子網路組態寫入至虛擬網路。 下列範例會將名為 subnet-1 的子網路新增至該虛擬網路中,並將 nsg-1 網路安全性群組與其產生關聯:
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
首先,請使用 az group create 為本文中建立的所有資源建立資源群組。 下列範例會在 westus2 位置建立一個資源群組:
az group create \
--name test-rg \
--location westus2
使用 az network vnet create 建立虛擬網路。 下列範例會建立一個名為 vnet-1 的虛擬網路:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
使用 az network vnet subnet create 將子網路新增至虛擬網路。 下列範例會將名為 subnet-1 的子網路新增至該虛擬網路中,並將 nsg-1 網路安全性群組與其產生關聯:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24
在入口網站頂端的搜尋方塊中,輸入應用程式安全性群組。 在搜尋結果中選取 [應用程式安全性群組]。
選取 + 建立。
在 [建立應用程式安全性群組] 的 [基本] 索引標籤中,輸入或選取此資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [test-rg]。 |
[執行個體詳細資料] |
|
名稱 |
輸入 asg-web。 |
區域 |
選取 [美國東部 2]。 |
選取 [檢閱 + 建立]。
選取 + 建立。
重複先前的步驟,指定以下值:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [test-rg]。 |
[執行個體詳細資料] |
|
名稱 |
輸入 asg-mgmt。 |
區域 |
選取 [美國東部 2]。 |
選取 [檢閱 + 建立]。
選取 建立。
使用 New-AzApplicationSecurityGroup 建立應用程式安全性群組。 應用程式安全性群組可讓您將具有類似連接埠篩選需求的伺服器分組在一起。 下列範例會建立兩個應用程式安全性群組。
$web = @{
ResourceGroupName = "test-rg"
Name = "asg-web"
Location = "westus2"
}
$webAsg = New-AzApplicationSecurityGroup @web
$mgmt = @{
ResourceGroupName = "test-rg"
Name = "asg-mgmt"
Location = "westus2"
}
$mgmtAsg = New-AzApplicationSecurityGroup @mgmt
使用 az network nsg create 建立應用程式安全性群組。 應用程式安全性群組可讓您將具有類似連接埠篩選需求的伺服器分組在一起。 下列範例會建立兩個應用程式安全性群組。
az network asg create \
--resource-group test-rg \
--name asg-web \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt \
--location westus2
在入口網站頂端的搜尋方塊中,輸入網路安全性群組。 在搜尋結果中選取 [網路安全性群組]。
選取 nsg-1。
從 nsg-1 的 [設定] 區段選取 [子網路]。
在 [子網路] 頁面中,選取 [+ 關聯]:
在 [產生子網路關聯] 底下,針對 [虛擬網路] 選取 vnet-1 (test-rg)。
針對 [子網路] 選取 subnet-1,然後選取 [確定]。
使用 Get-AzVirtualNetwork 來擷取虛擬網路物件,然後使用 Set-AzVirtualNetworkSubnetConfig 將網路安全性群組與子網路產生關聯。 下列範例會擷取虛擬網路物件,並更新子網路組態以與網路安全性群組產生關聯:
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
使用 az network vnet subnet update,將網路安全性群組與子網路產生關聯。 下列範例會將 nsg-1 網路安全性群組與 subnet-1 子網路產生關聯:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
從 nsg-1 的 [設定] 區段選取 [輸入安全性規則]。
在 [輸入安全性規則] 頁面中,選取 [+ 新增]。
建立安全性規則,允許連接埠 80 和 443 連至 asg-web 應用程式安全性群組。 在 [新增輸入安全性規則] 中,輸入或選取下列資訊:
設定 |
值 |
來源 |
保留 [任何] 的預設值。 |
來源連接埠範圍 |
保留預設值 (*)。 |
Destination |
選取 [應用程式安全性群組]。 |
目的地應用程式安全性群組 |
選取 asg-web。 |
服務 |
保留 [自訂] 的預設值。 |
目的地連接埠範圍 |
輸入 [80,443]。 |
通訊協定 |
選取 [TCP]。 |
動作 |
保留 [允許] 的預設值。 |
優先順序 |
保留 [100] 的預設值。 |
名稱 |
輸入 allow-web-all。 |
選取 [新增]。
使用下列資訊完成先前的步驟:
設定 |
值 |
來源 |
保留 [任何] 的預設值。 |
來源連接埠範圍 |
保留預設值 (*)。 |
Destination |
選取 [應用程式安全性群組]。 |
目的地應用程式安全性群組 |
選取 asg-mgmt。 |
服務 |
選取 [RDP]。 |
動作 |
保留 [允許] 的預設值。 |
優先順序 |
保留 [110] 的預設值。 |
名稱 |
輸入 allow-rdp-all。 |
選取 [新增]。
警告
在本文中,針對獲指派 asg-mgmt 應用程式安全性群組的 VM,RDP (連接埠 3389) 會對網際網路公開。
針對生產環境,建議您使用 VPN、私人網路連線或 Azure Bastion 來連結至您想要管理的 Azure 資源,而非將連接埠 3389 公開至網際網路。
如需 Azure Bastion 的詳細資訊,請參閱何謂 Azure Bastion?。
使用 New-AzNetworkSecurityRuleConfig 建立安全性規則。 下列範例會建立允許透過連接埠 80 和 443 從網際網路將流量輸入 asg-web 應用程式安全性群組的規則:
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-Web-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80,443
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
下列範例會建立允許透過連接埠 3389 從網際網路將流量輸入 asg-mgmt 應用程式安全性群組的規則:
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-RDP-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 3389
}
$mgmtRule = New-AzNetworkSecurityRuleConfig @mgmtRuleParams
使用 Get-AzNetworkSecurityGroup 來擷取現有的網路安全性群組,然後使用 +=
運算子來新增規則。 最後,使用 Set-AzNetworkSecurityGroup 來更新網路安全性群組:
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
警告
在本文中,針對獲指派 asg-mgmt 應用程式安全性群組的 VM,RDP (連接埠 3389) 會對網際網路公開。
針對生產環境,建議您使用 VPN、私人網路連線或 Azure Bastion 來連結至您想要管理的 Azure 資源,而非將連接埠 3389 公開至網際網路。
如需 Azure Bastion 的詳細資訊,請參閱何謂 Azure Bastion?。
使用 az network nsg rule create 建立安全性規則。 下列範例會建立允許透過連接埠 80 和 443 從網際網路將流量輸入 asg-web 應用程式安全性群組的規則:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-Web-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80 443
下列範例會建立允許透過連接埠 22 從網際網路將流量輸入 asg-mgmt 應用程式安全性群組的規則:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 22
警告
在本文中,針對獲指派 asg-mgmt 應用程式安全性群組的 VM,SSH (連接埠 22) 會對網際網路公開。
在生產環境中則不應將連接埠 22 公開至網際網路,而是建議您使用 VPN、私人網路連線或 Azure Bastion 連接到您想要管理的 Azure 資源。
如需 Azure Bastion 的詳細資訊,請參閱何謂 Azure Bastion?。
在入口網站中,搜尋並選取 [虛擬機器]。
在 [虛擬機器] 中,選取 [+ 建立],然後選取 [Azure 虛擬機器]。
在 [建立虛擬機器] 的 [基本] 索引標籤中輸入或選取此資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [test-rg]。 |
[執行個體詳細資料] |
|
虛擬機器名稱 |
輸入 vm-web。 |
區域 |
選取 [(美國) 美國東部 2]。 |
可用性選項 |
保留預設值 [不需要基礎結構備援]。 |
安全性類型 |
選取 [標準]。 |
映像 |
選取 [Windows Server 2022 Datacenter - x64 Gen2]。 |
Azure Spot 執行個體 |
保留預設值 [未核取]。 |
大小 |
選取大小。 |
系統管理員帳戶 |
|
使用者名稱 |
輸入使用者名稱。 |
密碼 |
輸入密碼。 |
確認密碼 |
重新輸入密碼。 |
輸入連接埠規則 |
|
選取輸入連接埠 |
選取 [無]。 |
選取 [下一步:磁碟],然後選取 [下一步:網路]。
在 [網路] 索引標籤中,輸入或選取以下資訊:
設定 |
值 |
網路介面 |
|
虛擬網路 |
選取 [vnet-1]。 |
子網路 |
選取 [subnet-1 (10.0.0.0/24)]。 |
公用 IP |
保留新公用 IP 的預設值。 |
NIC 網路安全性群組 |
選取 [無]。 |
選取 [檢閱 + 建立] 索引頁面,或是選取頁面底部的 [檢閱 + 建立] 藍色按鈕。
選取 建立。 VM 的部署可能需要幾分鐘。
重複上述步驟,以建立一個名為 vm-mgmt 的第二台虛擬機器。
建立 VM 之前,請使用 Get-AzVirtualNetwork 擷取具有子網路的虛擬網路物件:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
使用 New-AzPublicIpAddress 建立每個 VM 的公用 IP 位址:
$publicIpWebParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-web"
}
$publicIpWeb = New-AzPublicIpAddress @publicIpWebParams
$publicIpMgmtParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-mgmt"
}
$publicIpMgmt = New-AzPublicIpAddress @publicIpMgmtParams
使用 New-AzNetworkInterface 建立兩個網路介面,並將公用 IP 位址指派給網路介面。 下列範例會建立一個網路介面,並將 public-ip-vm-web 公用 IP 位址與其產生關聯。
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
下列範例會建立一個網路介面,並將 public-ip-vm-mgmt 公用 IP 位址與其產生關聯。
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
在虛擬網路中建立兩個 VM,以便在後續步驟中驗證流量篩選。
使用 New-AzVMConfig 建立 VM 組態,然後使用 New-AzVM 建立 VM。 下列範例會建立一台作為 Web 伺服器的 VM。 -AsJob
選項會在背景建立虛擬機器,以便您繼續進行下一個步驟:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-web"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $webNic.Id
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
建立作為管理伺服器的 VM:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-mgmt"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $mgmtNic.Id
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
建立虛擬機器需要幾分鐘的時間。 在 VM 建立完成前,請勿繼續進行下一個步驟。
在虛擬網路中建立兩個 VM,以便在後續步驟中驗證流量篩選。
使用 az vm create 建立 VM。 下列範例會建立一台作為 Web 伺服器的 VM。 指定 --nsg ""
選項時,Azure 將無法為它在建立 VM 時所建立的網路介面建立預設網路安全性群組。 該命令會提示您為該 VM 建立密碼。 本範例中不會使用 SSH 金鑰,以方便本文後面的步驟。 在生產環境中,使用 SSH 金鑰來確保安全。
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--authentication-type password \
--assign-identity
建立 VM 需要幾分鐘的時間。 建立 VM 後,將會傳回與下列範例類似的輸出:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-web",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
使用 az vm create 建立 VM。 下列範例會建立一台作為管理伺服器的 VM。
下列範例會建立 VM 並新增使用者帳戶。 --generate-ssh-keys
參數會使 CLI 在 ~/.ssh
中尋找可用的 ssh 金鑰。 如果找到一個,則會使用該金鑰。 如果沒有找到,則會產生一個並儲存在 ~/.ssh
中。 最後,我們會部署最新的 Ubuntu 22.04
映像。
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys \
--assign-identity
建立 VM 需要幾分鐘的時間。 在 VM 建立完成前,請勿繼續進行下一個步驟。
當您建立 VM 時,Azure 已針對每部 VM 建立網路介面,並將之連結到 VM。
將每部 VM 的網路介面新增至其中一個您先前建立的應用程式安全性群組中:
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中選取 [虛擬機器],然後選取 [vm-web]。
從 vm-web 的 [網路] 區段中選取 [應用程式安全性群組]。
選取 [新增應用程式安全性群組],然後在 [新增應用程式安全性群組] 索引標籤中,選取 [asg-web]。 最後,選取 [新增]。
針對 vm-mgmt 重複上述步驟,並在 [新增應用程式安全性群組] 索引標籤中選取 [asg-mgmt]。
使用 Get-AzNetworkInterface 來擷取虛擬機器的網路介面,然後使用 Get-AzApplicationSecurityGroup 來擷取應用程式安全性群組。 最後,使用 Set-AzNetworkInterface 來將應用程式安全性群組與網路介面產生關聯。 下列範例會將 asg-web 應用程式安全性群組與 vm-web-nic 網路介面產生關聯:
$params1 = @{
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
重複該命令,將 asg-mgmt 應用程式安全性群組與 vm-mgmt-nic 網路介面產生關聯。
$params1 = @{
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
使用 az network nic update 來將網路介面與應用程式安全性群組產生關聯。 下列範例會將 asg-web 應用程式安全性群組與 vm-web-nic 網路介面產生關聯:
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
重複該命令,將 asg-mgmt 應用程式安全性群組與 vm-mgmt-nic 網路介面產生關聯。
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
選取 [vm-mgmt]。
在 [概觀] 頁面上,選取 [連線] 按鈕,然後選取 [原生 RDP]。
選取 [下載 RDP 檔案]。
開啟所下載的 RDP 檔案,然後選取 [連線]。 輸入在建立 VM 時所指定的使用者名稱與密碼。
選取 [確定]。
您可能會在連線過程中收到憑證警告。 如果您收到警告,請選取 [是] 或 [繼續] 以繼續進行連線。
連線成功,因為允許透過連接埠 3389 從網際網路至 asg-mgmt 應用程式安全性群組的輸入流量。
vm-mgmt 的網路介面與 asg-mgmt 應用程式安全性群組相關聯,並允許連線。
在 vm-mgmt 上開啟 PowerShell 工作階段。使用下列項目來連線到 vm-web:
mstsc /v:vm-web
從 vm-mgmt 到 vm-web 的 RDP 連線成功,因為相同網路中的虛擬機器預設可透過任何連接埠與彼此通訊。
您無法從網際網路建立與 vm-web 虛擬機器的 RDP 連線。 asg-web 的安全性規則會防止從網際網路到連接埠 3389 的輸入連線。 預設會拒絕從網際網路到所有資源的輸入流量。
若要在 vm-web 虛擬機器上安裝 Microsoft IIS,請從 vm-web 虛擬機器的 PowerShell 工作階段輸入下列命令:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
完成 IIS 安裝之後,請將 vm-web 虛擬機器中斷連線,以留在 vm-mgmt 虛擬機器遠端桌面連線中。
從 vm-mgmt VM 中斷連線。
在入口網站搜尋方塊中搜尋 vm-web。
在 vm-web 的 [概觀] 頁面上,記下 VM 的 [公用 IP 位址]。 下列範例中顯示的位址是 203.0.113.103。 您的位址不同:
若要確認您可以從網際網路存取 vm-web Web 伺服器,請在電腦上開啟網際網路瀏覽器,並瀏覽至 http://<public-ip-address-from-previous-step>
。
您會看到 IIS 預設頁面,因為允許透過連接埠 80 從網際網路至 asg-web 應用程式安全性群組的輸入流量。
vm-web 連結的網路介面與 asg-web 應用程式安全性群組相關聯,並允許連線。
請使用 Get-AzPublicIpAddress 來傳回 VM 的公用 IP 位址。 以下範例會傳回 vm-mgmt VM 的公用 IP 位址:
$params = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$publicIP = Get-AzPublicIpAddress @params | Select IpAddress
請從您的本機電腦使用下列命令,建立 vm-mgmt VM 的遠端桌面工作階段。
mstsc /v:$publicIP
輸入您在建立虛擬機器時指定的使用者名稱和密碼 (您可能需要選取 [更多選擇],然後選取 [使用不同的帳戶] 以指定您在建立虛擬機器時輸入的認證),然後選取 [確定]。 您可能會在登入過程中收到憑證警告。 選取 [是] 以繼續進行連線。
連線順利完成。 允許來自網際網路的輸入流量通過連接埠 3389 進入 asg-mgmt 應用程式安全性群組。 連結至 vm-mgmt VM 的網路介面位於此群組中。
使用以下 PowerShell 命令從 vm-mgmt VM 建立遠端桌面連線到 vm-web VM:
mstsc /v:vm-web
由於每個網路安全性群組中的預設安全性規則允許透過所有連接埠在虛擬網路內的所有 IP 位址之間傳輸流量,因此連線會成功。 您無法建立從網際網路到 vm-web VM 的遠端桌面連線,因為 asg-web 的安全性規則不允許從網際網路的連接埠 3389 輸入。
請從 PowerShell 使用下列命令在 vm-web VM 上安裝 Microsoft IIS:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
完成 IIS 安裝之後,請將 vm-web VM 中斷連線,以留在 vm-mgmt VM 遠端桌面連線中。 若要檢視 IIS 的歡迎使用畫面,請開啟網際網路瀏覽器,並瀏覽至 http://vm-web.
從 vm-mgmt VM 中斷連線。
在您的電腦上,從 PowerShell 輸入下列命令,以擷取 vm-web 伺服器的公用 IP 位址的:
$params = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
Get-AzPublicIpAddress @params | Select IpAddress
若要確認您可以從 Azure 外部存取 vm-web Web 伺服器,請在電腦上開啟網際網路瀏覽器,並瀏覽至 http://<public-ip-address-from-previous-step>
。 連線順利完成。 允許來自網際網路的輸入流量通過連接埠 80 進入 asg-web 應用程式安全性群組。 連結至 vm-web VM 的網路介面位於此群組中。
使用您選擇的 SSH 用戶端來連線到先前建立的 VM。 例如,可以從命令行介面 (例如 Windows 子系統 Linux 版) 使用下列命令來建立與 vm-mgmt VM 的 SSH 工作階段。 您可以使用您的 Microsoft Entra ID 認證來登入虛擬機器,也可以使用您用來建立 VM 的 SSH 金鑰。 在下列範例中,我們使用 SSH 金鑰來登入管理 VM,然後使用密碼從管理 VM 登入 Web VM。
如需如何透過 SSH 來連線到 Linux VM 以及使用 Microsoft Entra ID 來登入的詳細資訊,請參閱使用 Microsoft Entra ID 和 OpenSSH 登入 Azure 中的 Linux 虛擬機器。
儲存 VM 的 IP 位址以便進行 SSH 連線
執行以下命令,將 VM 的 IP 位址儲存為環境變數:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
連線順利完成,因為連結至 vm-mgmt VM 的網路介面位於 asg-mgmt 應用程式安全性群組中,該安全群組允許來自網際網路的輸入流量通過連接埠 22。
使用下列命令來透過 SSH 從 vm-mgmt VM 連線到 vm-web VM:
ssh -o StrictHostKeyChecking=no azureuser@vm-web
由於每個網路安全性群組中的預設安全性規則允許透過所有連接埠在虛擬網路內的所有 IP 位址之間傳輸流量,因此連線會成功。 您無法透過 SSH 來從網際網路連線到 vm-web VM,因為 asg-web 的安全性規則不允許來自網際網路的輸入流量通過連接埠 22。
使用下列命令在 vm-web VM 上安裝 nginx Web 伺服器:
# Update package source
sudo apt-get -y update
# Install NGINX
sudo apt-get -y install nginx
由於預設安全性規則允許所有對網際網路的輸出流量,因此允許 vm-web VM 輸出至網際網路以擷取 nginx。 結束 vm-web SSH 工作階段,這樣會讓您停留在vm-mgmt VM 的 username@vm-mgmt:~$
提示上。 若要從 vm-web VM 擷取 nginx 歡迎畫面,請輸入下列命令:
curl vm-web
登出 vm-mgmt VM。 若要確認您可以從 Azure 外部存取 vm-web Web 伺服器,請從您自己的電腦輸入 curl <publicIpAddress>
。 連線順利完成,因為 asg-web 應用程式安全性群組 (連結到 vm-web VM 的網路介面所在) 來自網際網路的輸入流量通過連接埠 80。