Share via


Introducción al servicio de consola de máquina virtual

El servicio de consola máquina virtual (VM) proporciona acceso administrado a una máquina virtual hospedada en una instancia de Operator Nexus. Se basa en el servicio Azure Private Link (PLS) para establecer una conexión de red privada entre la red del usuario y la red privada de Azure Operator Nexus Cluster Manager.

Diagram of VM Console service.

Para más información sobre los recursos de red que habilitan la conectividad privada a una instancia de Operator Nexus, consulte Introducción a Azure Private Link.

En este documento se proporcionan instrucciones guiadas sobre cómo usar el servicio de consola de máquina virtual para establecer una sesión con una máquina virtual en una instancia de Operator Nexus.

Esta guía le ayuda a:

  1. Establezca una conectividad de red privada segura entre la red y la red privada del Administrador de clústeres.
  2. Cree un recurso de consola en el grupo de recursos de carga de trabajo o inquilino mediante el comando de la az networkcloud virtualmachine console CLI.
  3. Inicie una sesión SSH para conectarse a la consola de la máquina virtual.

Nota:

Para evitar pasar el parámetro a cada comando de la --subscription CLI de Azure, ejecute el siguiente comando:

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

Antes de empezar

  1. Instale la versión más reciente de las extensiones de la CLI adecuadas.

Establecer variables

Para ayudar a configurar el entorno para el acceso a máquinas virtuales, defina estas variables de entorno usadas por los distintos comandos de esta guía.

Nota:

Estos valores de variable de entorno no reflejan una implementación real y los usuarios DEBEN cambiarlos para que coincidan con sus entornos.

Debe tenerse en cuenta que el primer conjunto de variables de la sección siguiente es para el Administrador de clústeres no para el clúster.

    # 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"

Creación de un recurso de consola

El recurso consola proporciona la información sobre la máquina virtual, como el nombre de la máquina virtual, la clave SSH pública, la fecha de expiración de la sesión ssh, etc.

En esta sección se proporciona una guía paso a paso para ayudarle a crear un recurso de consola mediante comandos de la CLI de Azure.

Diagram of VM Console Resource.

  1. Para crear un recurso de consola en el Administrador de clústeres, deberá recopilar información, por ejemplo, grupo de recursos (CM_HOSTED_RESOURCES_RESOURCE_GROUP) y ubicación personalizada (CM_EXTENDED_LOCATION). Debe proporcionar el grupo de recursos, pero puede recuperar la ubicación personalizada si tiene derechos de acceso para excute los comandos que se enumeran a continuación.

    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. Lo primero antes de poder establecer una sesión SSH con una máquina virtual es crear un recurso de consola en el Administrador de clústeres.

    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}"]
    

    Si omite el --expiration parámetro , la expiración se usará de forma predeterminada a un día después de la creación del recurso console. Tenga en cuenta también que el expiration formato de fecha y hora debe cumplir con RFC3339 de lo contrario, se produce un error en la creación del recurso de consola.

    Nota:

    Para obtener una synopsis completa para este comando, invoque az networkcloud console create --help.

  3. Tras la creación correcta del recurso de consola, recupere el identificador del servicio Private Link necesario para crear el punto de conexión de 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. Además, recupere el identificador de acceso de la máquina virtual. Debe usar este identificador único a partir user de la ssh sesión.

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

Nota:

Para obtener una synopsis completa para este comando, invoque az networkcloud virtualmachine console show --help.

Establecimiento de Conectar de red privada

Para establecer una sesión segura con una máquina virtual, debe establecer la conectividad de red privada entre la red y la red privada del Administrador de clústeres.

Esta red privada se basa en el punto de conexión de Azure Private Link (PLE) y el servicio Azure Private Link (PLS).

El Administrador de clústeres crea automáticamente un PLS para que pueda establecer una conexión de red privada entre la red y la red privada del Administrador de clústeres.

En esta sección se proporciona una guía paso a paso que le ayudará a establecer una conectividad de red privada.

Diagram of Private Link networking.

  1. Cree el PLE para establecer una conexión privada y segura entre la red y la red privada del Administrador de clústeres. Necesita el identificador de recurso de PLS obtenido en Crear recurso de consola.

     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
    

Nota:

Solo necesitará un punto de conexión privado por administrador de clústeres.

  1. Recupere la dirección IP privada asignada a la PLE, que necesita al establecer la ssh sesión.

     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}"
    

Establecimiento de una sesión SSH con máquina virtual

En este momento, tiene y virtual_machine_access_id .sshmux_ple_ip Esta entrada es la información necesaria para establecer una sesión con la máquina virtual.

El servicio de consola de máquina virtual es un ssh servidor que "retransmite" la sesión a la máquina virtual designada. Hace sshmux_ple_ip referencia indirectamente al servicio de consola de máquina virtual y al virtual_machine_access_id identificador de la máquina virtual.

Importante

El servicio de consola de máquina virtual escucha el puerto 2222, por lo que debe especificar este número de puerto en el ssh comando .

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

Diagram of VM Console SSH Session.

El servicio de consola de máquina virtual se diseñó para permitir solo una sesión por máquina virtual. Cualquier persona que establezca otra sesión correcta en una máquina virtual cierra una sesión existente.

Importante

La clave SSH privada que se usa para autenticar la sesión (valor predeterminado: $HOME/.ssh/id_rsa) DEBE coincidir con la clave SSH pública que se pasa como parámetro al crear el recurso de consola.

Actualización del recurso de consola

Puede deshabilitar la sesión en una máquina virtual determinada actualizando la fecha y hora de expiración o actualizando la clave SSH pública que se usa al crear la sesión con una máquina virtual.

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}"]

Si desea deshabilitar el acceso a una máquina virtual, debe actualizar el recurso de consola con el parámetro enabled False. Esta actualización cierra cualquier sesión existente y restringe las sesiones posteriores.

Nota:

Antes de crear una sesión en una máquina virtual, el recurso de consola correspondiente debe establecerse en --enabled True.

Cuando expira una hora de la consola --expiration , cierra cualquier sesión correspondiente al recurso de consola. Deberá actualizar la hora de expiración con un valor futuro para poder establecer una nueva sesión.

Al actualizar la clave SSH pública de la consola, el servicio de consola de máquina virtual cierra cualquier sesión activa a la que hace referencia el recurso de consola. Debe proporcionar una clave SSH privada coincidente que coincida con la nueva clave pública al establecer una nueva sesión.

Limpieza (opcional)

Para limpiar la configuración del entorno de la consola de máquina virtual, debe eliminar el recurso de consola y el punto de conexión de Private Link.

  1. Eliminación del recurso de consola

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Eliminación del punto de conexión de Private Link

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