Общие сведения о службе консоли виртуальной машины

Консольная служба виртуальной машины предоставляет управляемый доступ к виртуальной машине, размещенной в экземпляре Оператора Nexus. Он зависит от службы Приватный канал Azure (PLS) для установления частного сетевого подключения между сетью пользователя и частной сетью Диспетчера кластеров Azure Operator Nexus.

Diagram of VM Console service.

Дополнительные сведения о сетевых ресурсах, которые обеспечивают частное подключение к экземпляру Оператора Nexus, см. в статье "Общие сведения о Приватный канал Azure".

В этом документе приведены инструкции по использованию службы консоли виртуальной машины для создания сеанса с виртуальной машиной в экземпляре Оператора 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"

Создание ресурса консоли

Ресурс консоли содержит сведения о виртуальной машине, например имя виртуальной машины, открытый ключ SSH, дату окончания срока действия сеанса 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. Прежде чем установить сеанс 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. После успешного создания ресурса консоли получите идентификатор службы Приватный канал, необходимый для создания конечной точки Приватный канал (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. Кроме того, получите идентификатор доступа к виртуальной машине. Этот уникальный идентификатор необходимо использовать в сеансе userssh .

    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 (PLE) и службы Приватный канал Azure (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. Получите частный IP-адрес, выделенный для PLE, который необходимо при установке сеанса 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_id и sshmux_ple_ip. Это входные данные, необходимые для создания сеанса с виртуальной машиной.

Служба консоли виртуальной машины — это ssh сервер, который передает сеанс на назначенную виртуальную машину. Косвенно sshmux_ple_ip ссылается на службу консоли виртуальной машины и virtual_machine_access_id идентификатор виртуальной машины.

Важно!

Служба консоли виртуальной машины прослушивает порт2222, поэтому в команде ssh необходимо указать этот номер порта.

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

Diagram of VM Console SSH Session.

Служба консоли виртуальной машины была разработана для разрешения только одного сеанса на виртуальную машину. Любой пользователь, устанавливающий другой успешный сеанс на виртуальной машине, закрывает существующий сеанс.

Важно!

Закрытый ключ SSH, используемый для проверки подлинности сеанса (по умолчанию: ) $HOME/.ssh/id_rsaдолжен совпадать с открытым ключом SSH, переданным в качестве параметра при создании ресурса консоли.

Обновление ресурса консоли

Сеанс можно отключить на заданной виртуальной машине, обновив дату и время окончания срока действия и(или) обновив открытый ключ 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}"]

Если вы хотите отключить доступ к виртуальной машине, необходимо обновить ресурс консоли с параметром enabled False. Это обновление закрывает любой существующий сеанс и ограничивает любые последующие сеансы.

Примечание.

Перед созданием сеанса на виртуальной машине необходимо задать соответствующий --enabled Trueресурс консоли.

Когда истекает срок действия консоли --expiration , он закрывает любой сеанс, соответствующий ресурсу консоли. Необходимо обновить время истечения срока действия с будущим значением, чтобы можно было установить новый сеанс.

При обновлении открытого ключа SSH консоли консоли виртуальной машины служба консоли виртуальной машины закрывает любой активный сеанс, на который ссылается ресурс консоли. При создании нового сеанса необходимо предоставить соответствующий закрытый ключ SSH, соответствующий новому открытому ключу.

Очистка (необязательно)

Чтобы очистить настройку среды консоли виртуальной машины, необходимо удалить ресурс консоли и конечную точку Приватный канал.

  1. Удаление ресурса консоли

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Удаление конечной точки Приватный канал

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