Share via


Virtual Machine コンソール サービスの概要

仮想マシン (VM) コンソール サービスは、Operator Nexus Instance でホストされている VM へのマネージド アクセスを提供します。 Azure Private Link Service (PLS) に依存して、ユーザーのネットワークと Azure Operator Nexus Cluster Manager のプライベート ネットワークの間にプライベート ネットワーク接続を確立します。

Diagram of VM Console service.

Operator Nexus Instance へのプライベート接続を有効にするネットワーク リソースの詳細については、「 Azure Private Linkの概要」を参照してください。

このドキュメントでは、VM コンソール サービスを使用して、Operator Nexus Instance 内の仮想マシンとのセッションを確立する方法について説明します。

このガイドは、次のことに役立ちます:

  1. ネットワークとクラスター マネージャーのプライベート ネットワークの間にセキュリティで保護されたプライベート ネットワーク接続を確立します。
  2. az networkcloud virtualmachine console CLI コマンドを使用して、ワークロード/テナント リソース グループにコンソール リソースを作成します。
  3. SSH セッションを開始して、仮想マシンのコンソールに接続します。

Note

各 Azure CLI コマンドに --subscription パラメータを渡さないようにするには、次のコマンドを実行します:

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

開始する前に

  1. 適切な CLI 拡張機能の最新バージョンをインストールします。

変数の設定

Virtual Machines にアクセスするための環境を設定するには、このガイド全体のさまざまなコマンドで使用されるこれらの環境変数を定義します。

Note

これらの環境変数の値は実際のデプロイを反映していないため、ユーザーは環境に合わせて変更する必要があります。

以下のセクションの最初の変数セットは、クラスターではなく クラスター マネージャー 用です。

    # 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 名、公開 SSH キー、SSH セッションの有効期限など、VM に関する情報を提供します。

このセクションでは、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 パラメータを省略すると、コンソール リソースの作成後 1 日後に有効期限が既定で設定されます。 また、日付と時刻の expiration 形式 はRFC3339準拠している必要があることに も注意してください。それ以外の場合、コンソール リソースの作成は失敗します。

    Note

    このコマンドの完全な概要については、 az networkcloud console create --helpを呼び出します。

  3. コンソール リソースが正常に作成されたら、Private Link エンドポイント (PLE) の作成に必要な Private Link Service 識別子を取得します

    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 アクセス IDを取得します。 この一意識別子は、 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")
    

Note

このコマンドの完全な概要については、 az networkcloud virtualmachine console show --helpを呼び出します。

プライベート ネットワーク接続の確立

仮想マシンとのセキュリティで保護されたセッションを確立するには、ネットワークとクラスター マネージャーのプライベート ネットワークの間にプライベート ネットワーク接続を確立する必要があります。

このプライベート ネットワークは、Azure Private Link エンドポイント (PLE) と Azure Private Link サービス (PLS) に依存しています。

クラスター マネージャーによって PLS が自動的に作成されるため、ネットワークとクラスター マネージャーのプライベート ネットワークの間にプライベート ネットワーク接続を確立できます。

このセクションでは、プライベート ネットワーク接続の確立に役立つ詳細なガイドを提供します。

Diagram of Private Link networking.

  1. ネットワークとクラスター マネージャーのプライベート ネットワークの間にプライベートでセキュリティで保護された接続を確立するための PLE を作成します。 コンソール リソース の作成で取得した PLS リソース ID が必要です。

     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
    

Note

クラスター マネージャーごとに必要なプライベート エンドポイントは 1 つだけです。

  1. ssh セッションを確立するときに必要な PLE に割り当てられたプライベート IP アドレスを取得します。

     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 コンソール サービスは、指定された VM にセッションを 「リレー」 する ssh サーバーです。 sshmux_ple_ip は、VM コンソール サービスと VM の virtual_machine_access_id 識別子を間接的に参照します。

重要

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 コンソール サービスは、仮想マシンごとに 1 つ だけのセッション を許可するように設計されています。 VM への別の正常なセッションを確立したユーザーは、既存のセッションを閉じます。

重要

セッションの認証に使用される非公開 SSH キー (既定値: $HOME/.ssh/id_rsa) は、コンソール リソースの作成時にパラメータとして渡される公開 SSH キーと一致している必要があります。

コンソール リソースの更新

特定の VM へのセッションを無効にするには、有効期限の日付/時刻を更新するか、VM とのセッションの作成時に使用される公開 SSH キーを更新します。

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を使用してコンソール リソースを更新する必要があります。 この更新プログラムは、既存のセッションを閉じ、後続のセッションを制限します。

Note

VM へのセッションを作成する前に、対応するコンソール リソースが--enabled True に設定される必要があります

コンソール --expiration 時間が経過すると、コンソール リソースに対応するすべてのセッションが閉じられます。 新しいセッションを確立できるように、有効期限を将来の値で更新する必要があります。

コンソールの公開 SSH キーを更新すると、VM コンソール サービスは、コンソール リソースによって参照されているアクティブなセッションをすべて閉じます。 新しいセッションを確立するときに、新しい公開キーと一致する、一致の非公開 SSH キーを指定する必要があります。

クリーンアップ (省略可能)

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