使用 Bastion 和 Windows 原生用戶端連線到 VM
本文可協助您使用本機 Windows 電腦上的原生用戶端 (SSH 或 RDP) 連線到 VNet 中的 VM。 原生用戶端功能可讓您使用 Azure CLI 透過 Bastion 連線到目標 VM,並展開登入選項,以包含本地 SSH 金鑰組和 Microsoft Entra ID。 如需為原生用戶端連線設定 Bastion 的詳細資訊和步驟,請參閱針對原生用戶端連線設定 Bastion。 透過原生用戶端 連線 需要 Bastion Standard SKU 或更高版本。
設定 Bastion 以取得原生用戶端支援後,您就可以使用原生 Windows 用戶端連線到 VM。 您用來連線的方法取決於您要從中連線的用戶端,以及您要連線的目標 VM。 下列清單顯示您可以從 Windows 原生用戶端連線的一些可用方式。 如需顯示可用用戶端連線/功能組合的完整清單,請參閱連線至 VM。
- 使用 az network bastion rdp 連線到 Windows VM。
- 使用 az network bastion ssh 連線到 Linux VM。
- 使用 az network bastion tunnel 連線到 VM。
- 透過 RDP 上傳及下載檔案。
- 使用 az network bastion tunnel 透過 SSH 上傳檔案。
必要條件
在開始之前,請先確定您具備下列必要條件:
- 已安裝最新版的 CLI 命令 (2.32 版或更新版本)。 您可以使用
az extension update --name bastion
更新 Bastion 的 CLI。 如需關於安裝 CLI 命令的資訊,請參閱安裝 Azure CLI 和開始使用 Azure CLI。 - 已為虛擬網路部署及設定 Azure Bastion。 如需步驟,請參閱為原生用戶端連線設定 Bastion。
- 虛擬網路中的虛擬機器。
- VM 的資源識別碼。 您可以輕鬆地在 Azure 入口網站中找到資源識別碼。 前往 VM 的 [概觀] 頁面,然後選取 [JSON 檢視] 連結即可開啟 [資源 JSON]。 將頁面頂端的資源識別碼複製到剪貼簿,供稍後連線到 VM 時使用。
- 如果您打算使用 Microsoft Entra 認證登入虛擬機器,請確定已使用下列其中一種方法設定虛擬機器:
- 啟用 Windows VM 或 Linux VM 的 Microsoft Entra 登入。
- 將 Windows VM 設定為已加入 Microsoft Entra。
- 將 Windows VM 設定為已加入 Microsoft Entra 混合。
驗證角色和連接埠
確認已設定下列角色和連接埠以連線至 VM。
所需角色
虛擬機器上的讀取者角色。
虛擬機器的私人 IP 位址與 NIC 上的讀取者角色。
Azure Bastion 資源上的讀者角色。
如果您使用 Microsoft Entra 登入方法,虛擬機器系統管理員登入或虛擬機器使用者登入角色。 如果您使用下列其中一篇文章中所述的程序來啟用 Microsoft Entra 登入,您只需要執行此動作:
連接埠
若要使用原生用戶端支援連線到 Linux VM,您必須在 Linux VM 上開啟下列連接埠:
- 輸入連接埠:SSH (22) 或
- 輸入連接埠:自訂值 (透過 Azure Bastion 連線到 VM 後,您就需要指定此自訂連接埠)
若要使用原生用戶端支援連線到 Windows VM,您必須在 Windows VM 上開啟下列連接埠:
- 輸入連接埠:RDP (3389) 或
- 輸入連接埠:自訂值 (透過 Azure Bastion 連線到 VM 後,您就需要指定此自訂連接埠)
若要瞭解如何使用 Azure Bastion 來設定 NSG,請參閱使用 NSG 存取和 Azure Bastion。
連線至 VM
下列各節中的步驟可協助您使用 az network bastion 命令,從 Windows 原生用戶端連線到 VM。
RDP 至 Windows VM
當使用者透過 RDP 連線到 Windows VM 時,他們必須在目標 VM 上具有權限。 如果使用者不是本機管理員,請將使用者新增至目標 VM 上的遠端桌面使用者群組。
使用
az login
登入 Azure 帳戶。 如果有多個訂用帳戶,您可以使用az account list
檢視這些訂用帳戶,並使用az account set --subscription "<subscription ID>"
選取內含 Bastion 資源的訂用帳戶。若要透過 RDP 連線,請使用下列範例。
az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>"
執行命令之後,系統會提示您輸入認證。 您可使用本機使用者名稱和密碼,或 Microsoft Entra 認證。 登入目標 VM 之後,電腦上的原生用戶端就會透過 MSTSC 開啟 VM 工作階段。
重要
若要從 Windows 10 或更新版電腦遠端連線至已加入 Microsoft Entra ID 的 VM,這些電腦必須已註冊 Microsoft Entra (從 Windows 10 20H1 開始)、已加入 Microsoft Entra,或已加入目錄與 VM 相同的混合式 Microsoft Entra。
指定驗證方法
您也可以選擇性地將驗證方法指定為命令的一部分。
- Microsoft Entra 驗證:針對 Windows 10 版本 20H2+、Windows 11 21H2+ 和 Windows Server 2022,請使用
--enable-mfa
。 如需詳細資訊,請參閱 az network bastion rdp - 選擇性參數。
指定自訂連接埠
您可以在透過 RDP 連線到 Windows VM 時指定自訂連接埠。
這種方式可能會特別有用的其中一個案例,就是透過連接埠 22 連線到 Windows VM。 這是 az network bastion ssh 命令限制的潛在因應措施,Windows 原生用戶端無法使用其連線到 Windows VM。
若要指定自訂連接埠,請在登入命令中包含欄位 --resource-port,如下列範例中所示。
az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>" --resource-port "22"
RDP 至 Windows VM IP 位址
您也可以連線到 VM 私人 IP 位址 (而不是資源識別碼)。 使用這類連線時,不支援 Microsoft Entra 驗證和自訂連接埠和通訊協定。 如需 IP 型連線的詳細資訊,請參閱連線至 VM - IP 位址。
使用 az network bastion
命令,將 --target-resource-id
取代為 --target-ip-address
以及指定的 IP 位址以連線至 VM。
az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>"
透過 SSH 連線至 Linux VM
使用
az login
登入 Azure 帳戶。 如果有多個訂用帳戶,您可以使用az account list
檢視這些訂用帳戶,並使用az account set --subscription "<subscription ID>"
選取內含 Bastion 資源的訂用帳戶。使用下列其中一個範例選項登入目標 Linux VM。 如果您想要指定自訂連接埠值,請在登入命令中包含欄位 --resource-port。
Microsoft Entra ID:
如果您要登入已啟用 Microsoft Entra 登入的 VM,請使用下列命令。 如需詳細資訊,請參閱 Azure Linux VM 和 Microsoft Entra ID。
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "AAD"
SSH 金鑰組:
您可以藉由執行
az extension add --name ssh
來安裝延伸模組。 若要使用 SSH 金鑰組登入,請使用下列範例。az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"
使用者名稱/密碼:
如果您要使用本地使用者名稱和密碼登入,請使用下列命令。 然後系統會提示您輸入目標 VM 的密碼。
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "password" --username "<Username>"
登入目標 VM 之後,電腦上的原生用戶端就會使用 SSH CLI 延伸模組 (az ssh) 開啟 VM 工作階段。
透過 SSH 連線至 Linux VM IP 位址
您也可以連線到 VM 私人 IP 位址 (而不是資源識別碼)。 使用這類連線時,不支援 Microsoft Entra 驗證和自訂連接埠和通訊協定。 如需 IP 型連線的詳細資訊,請參閱連線至 VM - IP 位址。
使用 az network bastion
命令,將 --target-resource-id
取代為 --target-ip-address
以及指定的 IP 位址以連線至 VM。
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"
連線到 VM - 通道命令
az network bastion tunnel 命令是您可以連線到 VM 的另一種方式。 使用此命令時,您可以執行下列動作:
- 在非 Windows 本機電腦上透過原生用戶端進行連線。 (例如,Linux 電腦。)
- 使用 SSH 或 RDP 連線到 VM。 (堡壘通道不會轉送網頁伺服器或主機。)
- 使用您選擇的原生用戶端。
- 從本機電腦將檔案上傳至目標 VM。 此命令目前不支援將檔案從目標 VM 下載至本機用戶端。
限制:
- 此功能不支援使用儲存在 Azure 金鑰保存庫的 SSH 私密金鑰進行登入。 使用 SSH 金鑰組登入 Linux VM 之前,請先將私密金鑰下載到本機電腦上的檔案。
- Cloud Shell 不支援此功能。
步驟:
使用
az login
登入 Azure 帳戶。 如果有多個訂用帳戶,您可以使用az account list
檢視這些訂用帳戶,並使用az account set --subscription "<subscription ID>"
選取內含 Bastion 資源的訂用帳戶。開啟目標 VM 的通道。
az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
使用 SSH 或 RDP、您所選的原生用戶端,以及您在上一步指定的本機電腦連接埠連線到目標 VM。
例如,如果您已在本機電腦上安裝 OpenSSH 用戶端,就可以使用下列命令:
ssh <username>@127.0.0.1 -p <LocalMachinePort>
與 VM IP 位址的通道
您也可以連線到 VM 私人 IP 位址 (而不是資源識別碼)。 使用這類連線時,不支援 Microsoft Entra 驗證和自訂連接埠和通訊協定。 如需 IP 型連線的詳細資訊,請參閱連線至 VM - IP 位址。
使用 az network bastion tunnel
命令,將 --target-resource-id
取代為 --target-ip-address
以及指定的 IP 位址以連線至 VM。
az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
多連線通道
在 $HOME.ssh\config 中新增以下內容。
Host tunneltunnel HostName 127.0.0.1 Port 2222 User mylogin StrictHostKeyChecking=No UserKnownHostsFile=\\.\NUL
將通道連線新增至已建立的通道連線。
az network bastion tunnel --name mybastion --resource-group myrg --target-resource-id /subscriptions/<mysubscription>/resourceGroups/myrg/providers/Microsoft.Compute/virtualMachines/myvm --resource-port 22 --port 22
在堡壘通道中建立 SSH 通道。
ssh -L 2222:127.0.0.1:22 mylogin@127.0.0.1
使用 VS Code 連線到通道連線。