Share via


虛擬機主控台服務簡介

虛擬機 (VM) 主控存取權給操作員 Nexus 實例中裝載的 VM。 它依賴 Azure Private Link 服務 (PLS) 來建立用戶網路與 Azure 操作員 Nexus 叢集管理員專用網之間的專用網連線。

Diagram of VM Console service.

如需啟用操作員 Nexus 實例私人連線的網路資源詳細資訊,請參閱 Azure Private Link 簡介。

本檔提供如何使用 VM 控制台服務在操作員 Nexus 實例中建立虛擬機會話的引導式指示。

本指南可協助您:

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

注意

若要避免將 --subscription 參數傳遞至每個 Azure CLI 命令,請執行下列命令:

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

開始之前

  1. 安裝最新版本的適當 CLI 擴充功能

設定變數

為了協助設定環境以存取 虛擬機器,請定義本指南中各種命令所使用的這些環境變數。

注意

這些環境變數值不會反映實際的部署,而且用戶必須變更它們以符合其環境。

請注意,下一節中的第一組變數適用於 叢集管理員 ,而不是叢集。

    # CM_HOSTED_RESOURCES_RESOURCE_GROUP: Cluster Manager resource group name
    export CM_HOSTED_RESOURCES_RESOURCE_GROUP="my-contoso-console-rg"
    # 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="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ExtendedLocation/customLocations/clusterManagerExtendedLocationName"

    # VIRTUAL_MACHINE_NAME: Virtual Machine name you want to access through VM Console service
    export VIRTUAL_MACHINE_NAME="my-undercloud-vm"
    # 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"

建立主控台資源

主控台資源會提供 VM 的相關信息,例如 VM 名稱、公鑰、SSH 工作階段的到期日等等。

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

Diagram of VM Console Resource.

  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否則控制台資源的建立會失敗。

    注意

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

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

    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 存取識別碼。 您必須在工作階段時 user 使用此唯一 ssh 識別碼。

    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,讓您可以在網路與叢集管理員的專用網之間建立專用網連線。

本節提供逐步指南,可協助您建立專用網聯機。

Diagram of Private Link networking.

  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 會話「轉接」到指定 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

Diagram of VM Console SSH Session.

VM 控制台服務是針對每個虛擬機只允許一個會話所設計。 任何建立 VM 成功會話的人都會關閉現有的工作階段。

重要

用來驗證會話的私人SSH 金鑰(預設值: $HOME/.ssh/id_rsa) 必須符合建立主控台資源時傳遞為參數的公鑰。

更新主控台資源

您可以藉由更新到期日/時間和/或更新使用 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