快速入門:使用 PowerShell 在 Azure 中建立 Linux 虛擬機器

Azure PowerShell 模組用於從 PowerShell 命令列或在指令碼中建立和管理 Azure 資源。 本快速入門說明如何使用 Azure PowerShell 模組,在 Azure 中部署 Linux 虛擬機器 (VM)。 本快速入門會從 Canonical 使用 Ubuntu 18.04 LTS 市集映像。 為了查看作用中的 VM,您還會以 SSH 連線至 VM,並安裝 NGINX 網頁伺服器。

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

啟動 Azure Cloud Shell

Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。

若要開啟 Cloud Shell,只要選取程式碼區塊右上角的 [試試看] 即可。 選取 [複製] 即可複製程式碼區塊,將它貼到 Cloud Shell 中,然後按 enter 鍵加以執行。

建立 SSH 金鑰組

使用 ssh-keygen 來建立 SSH 金鑰組。 如果您已經擁有 SSH 金鑰組,則可略過此步驟。

ssh-keygen -t rsa -b 4096

系統會提示您提供金鑰組的檔案名,或者您可以按 [輸入],使用 /home/<username>/.ssh/id_rsa 的預設位置。 如有需要,您也可以建立金鑰的密碼。

如需如何建立 SSH 金鑰組的詳細資訊,請參閱如何搭配 Windows 使用 SSH 金鑰

如果您使用 Cloud Shell 建立 SSH 金鑰組,該金鑰組會儲存在 Cloud Shell 自動建立的儲存體帳戶中。 在擷取到金鑰前請勿刪除儲存體帳戶或其中的檔案共用,否則會無法存取 VM。

建立資源群組

使用 New-AzResourceGroup 來建立 Azure 資源群組。 資源群組是在其中部署與管理 Azure 資源的邏輯容器:

New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"

建立虛擬網路資源

建立虛擬網路、子網路和公用 IP 位址。 這些資源可用來提供 VM 的網路連線能力,並可將它連線到網際網路:

# Create a subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name "mySubnet" `
  -AddressPrefix 192.168.1.0/24

# Create a virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS" `
  -Name "myVNET" `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

# Create a public IP address and specify a DNS name
$pip = New-AzPublicIpAddress `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS" `
  -AllocationMethod Static `
  -IdleTimeoutInMinutes 4 `
  -Name "mypublicdns$(Get-Random)"

建立 Azure 網路安全性群組及流量規則。 網路安全性群組可使用輸入和輸出規則來保護 VM。 下列範例會針對允許 SSH 連線的 TCP 通訊埠 22 建立輸入規則。 為了允許傳入的網路流量,還會針對 TCP 通訊埠 80 建立輸入規則。

# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzNetworkSecurityRuleConfig `
  -Name "myNetworkSecurityGroupRuleSSH"  `
  -Protocol "Tcp" `
  -Direction "Inbound" `
  -Priority 1000 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 22 `
  -Access "Allow"

# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzNetworkSecurityRuleConfig `
  -Name "myNetworkSecurityGroupRuleWWW"  `
  -Protocol "Tcp" `
  -Direction "Inbound" `
  -Priority 1001 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access "Allow"

# Create a network security group
$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS" `
  -Name "myNetworkSecurityGroup" `
  -SecurityRules $nsgRuleSSH,$nsgRuleWeb

使用 New-AzNetworkInterface 建立虛擬網路介面卡 (NIC)。 虛擬 NIC 會將 VM 連線至子網路、網路安全性群組和公用 IP 位址。

# Create a virtual network card and associate with public IP address and NSG
$nic = New-AzNetworkInterface `
  -Name "myNic" `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS" `
  -SubnetId $vnet.Subnets[0].Id `
  -PublicIpAddressId $pip.Id `
  -NetworkSecurityGroupId $nsg.Id

建立虛擬機器

若要在 PowerShell 中建立 VM,您可以建立具有以下設定的組態:要使用的映像、大小和驗證選項等。 然後使用此組態來建置 VM。

定義 SSH 認證、OS 資訊與 VM 大小。 在此範例中,SSH 金鑰會儲存在 ~/.ssh/id_rsa.pub

# Define a credential object
$securePassword = ConvertTo-SecureString ' ' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("azureuser", $securePassword)

# Create a virtual machine configuration
$vmConfig = New-AzVMConfig `
  -VMName "myVM" `
  -VMSize "Standard_D1" | `
Set-AzVMOperatingSystem `
  -Linux `
  -ComputerName "myVM" `
  -Credential $cred `
  -DisablePasswordAuthentication | `
Set-AzVMSourceImage `
  -PublisherName "Canonical" `
  -Offer "UbuntuServer" `
  -Skus "18.04-LTS" `
  -Version "latest" | `
Add-AzVMNetworkInterface `
  -Id $nic.Id

# Configure the SSH key
$sshPublicKey = cat ~/.ssh/id_rsa.pub
Add-AzVMSshPublicKey `
  -VM $vmconfig `
  -KeyData $sshPublicKey `
  -Path "/home/azureuser/.ssh/authorized_keys"

現在,使用 New-AzVM 合併上述要建立的組態定義:

New-AzVM `
  -ResourceGroupName "myResourceGroup" `
  -Location eastus -VM $vmConfig

可能需要幾分鐘的時間才能部署好 VM。 部署完成時,請前往下一節。

注意

Azure 會針對未獲指派公用 IP 位址,或位於內部基本 Azure Load Balancer 後端集區的 Azure 虛擬機器,提供暫時 IP。 暫時 IP 機制提供無法設定的輸出 IP 位址。

將公用 IP 位址指派給虛擬機器,或將虛擬機器放置於 Standard Load Balancer 的後端集區(不論是否有輸出規則)時,會停用暫時 IP。 如果 Azure 虛擬網路 NAT 閘道資源已指派給虛擬機器的子網,則會停用暫時 IP。

如需 Azure 中輸出連線的詳細資訊,請參閱 使用來源網路位址轉譯 (SNAT) 進行輸出連線。

連接至 VM

使用公用 IP 位址對 VM 建立 SSH 連線。 若要查看 VM 的公用 IP 位址,請使用 Get-AzPublicIpAddress Cmdlet:

Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select "IpAddress"

使用您用來建立 SSH 金鑰組的相同殼層,將下列命令貼到殼層中,以建立 SSH 工作階段。 請以您 VM 的 IP 位址取代 10.111.12.123。

ssh azureuser@10.111.12.123

出現提示時,登入使用者名稱為 azureuser 。 如果 SSH 金鑰搭配使用複雜密碼,則需要在提示時輸入該複雜密碼。

安裝 NGINX

若要查看作用中的 VM,請安裝 NGINX 網頁伺服器。 從 SSH 工作階段更新套件來源,然後安裝最新的 NGINX 套件。

sudo apt-get -y update
sudo apt-get -y install nginx

完成時,輸入 exit 來離開 SSH 工作階段。

檢視作用中的網頁伺服器

使用所選的網頁瀏覽器來查看預設 NGINX 歡迎使用頁面。 輸入 VM 的公用 IP 位址作為網址。 您可以在 VM 的 [概觀] 頁面找到公用 IP 位址,也可以在您稍早使用的 SSH 連接字串中找到。

NGINX 預設的歡迎頁面

清除資源

當不再需要時,您可以使用 Remove-AzResourceGroup 命令來移除資源群組、VM 及所有相關資源:

Remove-AzResourceGroup -Name "myResourceGroup"

後續步驟

在此快速入門中,您已部署簡單的虛擬機器、建立網路安全性群組和規則,並已安裝基本的 Web 伺服器。 若要深入了解 Azure 虛擬機器,請繼續 Linux VM 的教學課程。