使用 Bastion 和 Linux 原生用戶端連線到 VM

本文可協助您使用本機 Linux 電腦上的原生用戶端,透過 Azure Bastion 連線到 VNet 中的 VM。 原生用戶端功能可讓您使用 Azure CLI 透過 Bastion 連線到目標 VM,並展開登入選項,以包含本地 SSH 金鑰組和 Microsoft Entra ID。 如需為原生用戶端連線設定 Bastion 的詳細資訊和步驟,請參閱針對原生用戶端連線設定 Bastion。 透過原生用戶端連線需要 Bastion 標準 SKU。

Diagram shows a connection via native client.

設定 Bastion 以取得原生用戶端支援後,您就可以使用原生 Linux 用戶端連線到 VM。 您用來連線的方法取決於您要從中連線的用戶端,以及您要連線的目標 VM。 下列清單顯示您可以從 Linux 原生用戶端連線的一些可用方式。 如需顯示可用用戶端連線/功能組合的完整清單,請參閱連線至 VM

  • 使用 az network bastion ssh 連線到 Linux VM。
  • 使用 az network bastion tunnel 連線到 Windows VM。
  • 使用 az network bastion tunnel 連線到任何 VM。
  • 使用 az network bastion tunnel 透過 SSH 將檔案上傳至目標 VM。 此命令目前不支援將檔案從目標 VM 下載至本機用戶端。

必要條件

在開始之前,請先確定您具備下列必要條件:

驗證角色和連接埠

確認已設定下列角色和連接埠以連線至 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

連線至 Linux VM (英文)

下列各節中的步驟可協助您使用 az network bastion 命令,從 Linux 原生用戶端連線到 Linux VM。 您可以藉由執行 az extension add --name bastion 來安裝延伸模組。

當您使用此命令進行連線時,不支援檔案傳輸。 如果您想要上傳檔案,請改用 az network bastion tunnel 命令進行連線。

此命令可讓您執行以下動作:

  • 使用 SSH 連線到 Linux VM。
  • 透過 Microsoft Entra ID 進行驗證
  • 連線到虛擬網路內的並行 VM 工作階段。

若要登入,請使用下列其中一個範例。 登入目標 VM 之後,電腦上的原生用戶端就會開啟 VM 工作階段。

SSH 金鑰組

若要使用 SSH 金鑰組登入 VM,請使用下列範例。

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"

Microsoft Entra 驗證

如果您要登入已啟用 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"

使用者名稱/密碼

如果您要使用本地使用者名稱和密碼登入 VM,請使用下列範例。 然後系統會提示您輸入目標 VM 的密碼。

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "password" --username "<Username>"

透過 SSH 連線至 Linux VM IP 位址

您可以連線到 VM 私人 IP 位址 (而不是資源識別碼)。 請注意,使用這類連線時,不支援 Microsoft Entra 驗證和自訂連接埠和通訊協定。 如需 IP 型連線的詳細資訊,請參閱連線至 VM - IP 位址

使用 az network bastion 命令,將 --target-resource-id 取代為 --target-ip-address 以及指定的 IP 位址以連線至 VM。 下列範例使用 --ssh-key 作為驗證方法。

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-addres "<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 不支援此功能。

步驟:

  1. 使用 az login 登入 Azure 帳戶。 如果有多個訂用帳戶,您可以使用 az account list 檢視這些訂用帳戶,並使用 az account set --subscription "<subscription ID>" 選取內含 Bastion 資源的訂用帳戶。

  2. 開啟目標 VM 的通道。

    az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
    
  3. 使用 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>"

多連線通道

  1. 在 $HOME.ssh\config 中新增以下內容。

    Host tunneltunnel
      HostName 127.0.0.1
      Port 2222
      User mylogin
      StrictHostKeyChecking=No
      UserKnownHostsFile=\\.\NUL
    
  2. 將通道連線新增至已建立的通道連線。

    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
    
  3. 在堡壘通道中建立 SSH 通道。

    ssh -L 2222:127.0.0.1:22 mylogin@127.0.0.1
    
  4. 使用 VS Code 連線到通道連線。

下一步

上傳或下載檔案