共用方式為


虛擬機器主控台服務簡介

虛擬機器 (VM) 主控台服務提供對運算子連接點執行個體中裝載的 VM 的受控存取。 它會使用 Azure Private Link 服務 (PLS) 在 Azure 專用網上提供網路連線。 VM 控制台服務是一種安全且私人的方式,可讓您存取 VM,而不需將其公開至公用因特網。

VM 控制台服務的圖表。

若要深入了解對運算子連接點執行個體的私人連線所需的網路資源,請參閱 Azure Private Link 簡介

本文件提供如何使用 VM 主控台服務對運算子連接點執行個體中的虛擬機器建立工作階段的引導式指示。

本指南可協助您:

  1. 在您的網路與叢集管理員的私人網路之間建立安全的私人網路連線。
  2. 使用 az networkcloud virtualmachine console CLI 命令,在您的工作負載/租用戶資源群組中建立主控台資源。
  3. 啟動 SSH 作業階段以連線到虛擬機的主控台。

注意

若要避免在每個 Azure CLI 命令中傳入 --subscription 參數,請執行下列命令:

  az account set --subscription "your-subscription-ID"

開始之前

  1. 安裝最新版的適當 CLI 延伸模組

設定變數

為了方便設定可存取虛擬機器的環境,請定義本指南中各種命令所使用的環境變數。

注意

這些環境變數值並不反映實際部署,使用者必須加以變更以符合其環境所需。

請注意,下一節中的第一組變數適用於叢集管理員,而不是叢集。 您可以使用 命令 az networkcloud virtualmachine show --name <virtual machine name> --resource-group <virtual machine's resource group> --query "consoleExtendedLocation" | jq -r '.consoleExtendedLocation.name'找到CM_EXTENDED_LOCATION值。

    # CM_HOSTED_RESOURCES_RESOURCE_GROUP: Cluster Manager resource group name
    export CM_HOSTED_RESOURCES_RESOURCE_GROUP="my-contoso-console-rg"

    # VIRTUAL_MACHINE_NAME: Virtual Machine name you want to access through VM Console service
    export VIRTUAL_MACHINE_NAME="my-undercloud-vm"
    # CM_EXTENDED_LOCATION: Cluster Manager Extended Location, can be retrieved but you will need access rights to execute certain Azure CLI commands
    export CM_EXTENDED_LOCATION=$(az networkcloud virtualmachine show --name ${VIRTUAL_MACHINE_NAME} --resource-group ${VIRTUAL_MACHINE_RG}  --query "consoleExtendedLocation" | jq -r '.consoleExtendedLocation.name')

    # CONSOLE_PUBLIC_KEY: Public Key matching Private Key to be used when establish `ssh` session, e.g., `ssh -i $HOME/.ssh/id-rsa`
    export CONSOLE_PUBLIC_KEY="xxxx-xxxx-xxxxxx-xxxx"
    # CONSOLE_EXPIRATION_TIME: Expiration date and time (RFC3339 format) for any `ssh` session with a virtual machine. 
    export CONSOLE_EXPIRATION_TIME="2023-06-01T01:27:03.008Z"

    # PRIVATE_ENDPOINT_RG: Resource group name that Private Endpoint will be created on
    export PRIVATE_ENDPOINT_RG="my-work-env-rg"
    # PRIVATE_ENDPOINT_NAME: Private Endpoint's name you choose
    export PRIVATE_ENDPOINT_NAME="my-work-env-ple"
    # PRIVATE_ENDPOINT_CONNECTION_NAME: PLE/PLS connection name you choose
    export PRIVATE_ENDPOINT_CONNECTION_NAME="my-contoso-ple-pls-connection"
    # PRIVATE_ENDPOINT_REGION: Location where Private Endpoint will be created
    export PRIVATE_ENDPOINT_REGION="eastus"
    # PRIVATE_ENDPOINT_VNET: Virtual Network to be used by the Private Endpoint
    export PRIVATE_ENDPOINT_VNET="my-work-env-ple-vnet"
    # PRIVATE_ENDPOINT_SUBNET: Subnetwork to be used by the Private Endpoint
    export PRIVATE_ENDPOINT_SUBNET="my-work-env-ple-subnet"

建立主控台資源

控制台資源會提供 Nexus VM 的相關信息。 它會提供 VM 名稱、公用 SSH 金鑰、SSH 工作階段的到期日等等。

本節提供逐步指南,協助您使用 Azure CLI 命令建立主控台資源。

VM 控制台資源的圖表。

  1. 若要在叢集管理員中建立 控制台 資源,您必須收集一些資訊,例如資源群組 (CM_HOSTED_RESOURCES_RESOURCE_GROUP) 和自定義位置 (CM_EXTENDED_LOCATION)。 您必須提供資源群組,但如果您有執行下列命令的訪問許可權,則可以擷取自定義位置:

    export cluster_manager_resource_id=$(az resource list -g ${CM_HOSTED_RESOURCES_RESOURCE_GROUP} --query "[?type=='Microsoft.NetworkCloud/clusterManagers'].id" --output tsv)
    export CM_EXTENDED_LOCATION=$(az resource show --ids $cluster_manager_resource_id --query "properties.managerExtendedLocation.name" | tr -d '"')
    
  2. 您必須先在叢集管理員中建立主控台資源,才能對 VM 建立 SSH 工作階段。

    az networkcloud virtualmachine console create \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \
        --extended-location name="${CM_EXTENDED_LOCATION}" type="CustomLocation" \
        --enabled True \
        --key-data "${CONSOLE_PUBLIC_KEY}" \
        [--expiration "${CONSOLE_EXPIRATION_TIME}"]
    

    如果省略 --expiration 參數,到期日將會預設為建立主控台資源的隔天。 另請注意, expiration 日期和時間格式 必須 遵循RFC3339(例如 2024-10-04T14:48:00Z),否則控制台資源的建立會失敗。

    注意

    如需此命令的完整概要,請叫用 az networkcloud console create --help

  3. 在成功建立主控台資源後,擷取建立 Private Link 端點 (PLE) 所需的 Private Link 服務識別碼

    export pls_resourceid=$(az networkcloud virtualmachine console show \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \
        --query "privateLinkServiceId")
    
  4. 此外,請擷取 VM 存取識別碼。 您必須以此唯一識別碼作為 ssh 工作階段的 user

    virtual_machine_access_id=$(az networkcloud virtualmachine console show \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \
        --query "virtualMachineAccessId")
    

注意

如需此命令的完整概要,請叫用 az networkcloud virtualmachine console show --help

建立私人網路連線

若要使用虛擬機建立安全會話,您必須建立網路與叢集管理員專用網之間的專用網連線。

此私人網路依賴 Azure Private Link 端點 (PLE) 和 Azure Private Link 服務 (PLS)。

叢集管理員會自動建立 PLS,讓您可在網路與叢集管理員的私人網路之間建立私人網路連線。

本節提供逐步指南,可協助您建立私人網路連線。

Private Link 網路功能圖表。

  1. 建立 PLE,以在您的網路與叢集管理員的私人網路之間建立私人的安全連線。 您需要在建立主控台資源中取得的 PLS 資源識別碼。

     az network private-endpoint create \
         --connection-name "${PRIVATE_ENDPOINT_CONNECTION_NAME}" \
         --name "${PRIVATE_ENDPOINT_NAME}" \
         --private-connection-resource-id "${pls_resourceid}" \
         --resource-group "${PRIVATE_ENDPOINT_RG}" \
         --vnet-name "${PRIVATE_ENDPOINT_VNET}" \
         --subnet "${PRIVATE_ENDPOINT_SUBNET}" \
         --manual-request false
    

注意

每個叢集管理員只需要一個私人端點。

  1. 擷取配置給 PLE 的私人 IP 位址,您在建立 ssh 工作階段時將會用到。

     export ple_interface_id=$(az network private-endpoint list --resource-group ${PRIVATE_ENDPOINT_RG} --query "[0].networkInterfaces[0].id" -o tsv)
    
     export sshmux_ple_ip=$(az network nic show --ids $ple_interface_id --query 'ipConfigurations[0].privateIPAddress' -o tsv)
    
     echo "sshmux_ple_ip: ${sshmux_ple_ip}"
    

對虛擬機器建立 SSH 工作階段

至此,您已有 virtual_machine_access_idsshmux_ple_ip。 此輸入是對 VM 建立工作階段所需的資訊。

VM 控制台服務是將 ssh 會話「轉接」到 Nexus VM 的伺服器。 sshmux_ple_ip 會間接參考 VM 主控台服務,而 virtual_machine_access_id 則參考 VM 的識別碼。

重要

VM 主控台服務會接聽連接埠 2222,因此,您必須ssh 命令中指定此連接埠號碼。

   SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip

VM 控制台 SSH 會話的圖表。

依據設計,VM 主控台服務對每個虛擬機器允許一個工作階段。 任何人若對 VM 建立了另一個成功的工作階段,都將關閉現有的工作階段。

重要

用來驗證工作階段的私人 SSH 金鑰 (預設值:$HOME/.ssh/id_rsa),必須符合在建立主控台資源時作為參數提供的公開 SSH 金鑰。

更新主控台資源

您可以藉由更新使用 VM 建立工作階段時所使用的到期日/時間和公鑰,來停用 VM 的作業階段。

az networkcloud virtualmachine console update \
    --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
    --resource-group "${VM_RESOURCE_GROUP}" \
    [--enabled True | False] \
    [--key-data "${CONSOLE_PUBLIC_KEY}"] \
    [--expiration "${CONSOLE_EXPIRATION_TIME}"]

若要停用對 VM 的存取,必須使用參數 enabled False 更新主控台資源。 此更新會關閉任何現有的會話,並限制任何稍後的會話。

注意

對 VM 建立工作階段之前,必須先將對應的主控台資源設定為 --enabled True

主控台在 --expiration 時間到期後,將會關閉與主控台資源對應的任何工作階段。 您必須使用未來的值更新到期時間,才能建立新的工作階段。

當您更新主控台的公用 SSH 金鑰時,VM 控制台服務會關閉所有作用中的作業階段。 您提供新的私密金鑰來建立新的工作階段。

清除 (選擇性)

若要清除 VM 主控台環境設定,您必須刪除主控台資源和 Private Link 端點。

  1. 刪除主控台資源

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. 刪除 Private Link 端點

    az network private-endpoint delete \
    --name ${PRIVATE_ENDPOINT_NAME}-ple \
    --resource-group ${PRIVATE_ENDPOINT_NAME}-rg