Поделиться через


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

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

Схема службы консоли виртуальной машины.

Дополнительные сведения о сетевых ресурсах, которые обеспечивают частное подключение к экземпляру Оператора 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_EXTENDED_LOCATION можно найти с помощью команды az networkcloud virtualmachine show --name <virtual machine name> --resource-group <virtual machine's resource group> --query "consoleExtendedLocation" | jq -r '.consoleExtendedLocation.name'.

    # 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. Он предоставляет имя виртуальной машины, открытый ключ SSH, дату окончания срока действия сеанса SSH и т. д.

В этом разделе приведены пошаговые инструкции по созданию ресурса консоли с помощью команд Azure CLI.

Схема ресурса консоли виртуальной машины.

  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 (например, 2024-10-04T14:48:00Z) в противном случае создание ресурса консоли завершается ошибкой.

    Примечание.

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

Диспетчер кластеров автоматически создает PLS, чтобы можно было установить частное сетевое подключение между сетью и частной сетью Диспетчера кластеров.

В этом разделе представлено пошаговое руководство по созданию подключения к частной сети.

Схема Приватный канал сети.

  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 сервер, который ретрансляция сеанса на виртуальную машину Nexus. Косвенно 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

Схема сеанса SSH консоли виртуальной машины.

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

Внимание

Закрытый ключ 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