Partager via


Introduction to the Virtual Machine console service

Le service Console de machine virtuelle fournit un accès managé à une machine virtuelle hébergée dans une instance Nexus d’opérateur. Il utilise le service Azure Private Link Service (PLS) pour fournir une connectivité réseau sur un réseau privé Azure. Le service Console de machine virtuelle est un moyen sécurisé et privé d’accéder à une machine virtuelle sans l’exposer à l’Internet public.

Diagramme du service Console de machine virtuelle.

Pour plus d’informations sur les ressources réseau qui permettent une connectivité privée à une instance Nexus d’opérateur, consultez Présentation d’Azure Private Link.

Ce document fournit des instructions guidées sur l’utilisation du service Console de machine virtuelle pour établir une session avec une machine virtuelle dans une instance Nexus d’opérateur.

Ce guide vous aide à :

  1. Établir une connectivité de réseau privé sécurisée entre votre réseau et le réseau privé du gestionnaire de clusters.
  2. Créer une ressource Console dans votre groupe de ressources de charge de travail ou de locataire à l’aide de la commande CLI az networkcloud virtualmachine console.
  3. Démarrer une session SSH pour vous connecter à la console de la machine virtuelle.

Remarque

Pour éviter de transmettre le paramètre --subscription à chaque commande Azure CLI, exécutez la commande suivante :

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

Avant de commencer

  1. Installez la dernière version des extensions Azure CLI appropriées.

Définition des variables

Pour vous aider à configurer l’accès aux machines virtuelles pour l’environnement, définissez ces variables d’environnement utilisées par les différentes commandes de ce guide.

Remarque

Ces valeurs de variable d’environnement ne reflètent pas un déploiement réel et les utilisateurs DOIVENT les modifier pour qu’elles correspondent à leurs environnements.

Notez que le premier ensemble de variables de la section ci-dessous concerne le gestionnaire de clusters, et non le cluster. La valeur CM_EXTENDED_LOCATION est disponible avec la commande 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"

Création d’une ressource Console

La ressource Console fournit les informations sur la machine virtuelle Nexus. Elle fournit le nom de la machine virtuelle, la clé SSH publique, la date d’expiration de la session SSH, et ainsi de suite.

Cette section fournit un guide pas-à-pas pour vous aider à créer une ressource Console à l’aide de commandes Azure CLI.

Diagramme de la ressource Console de machine virtuelle.

  1. Pour créer une ressource Console dans le gestionnaire de clusters, vous devez collecter des informations, par exemple, un groupe de ressources (CM_HOSTED_RESOURCES_RESOURCE_GROUP) et un emplacement personnalisé (CM_EXTENDED_LOCATION). Vous devez fournir le groupe de ressources, mais vous pouvez récupérer l’emplacement personnalisé si vous disposez de droits d’accès pour exécuter les commandes suivantes :

    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. La première chose avant de pouvoir établir une session SSH avec une machine virtuelle consiste à créer une ressource Console dans le gestionnaire de clusters.

    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 vous omettez le paramètre --expiration, l’expiration est par défaut d’un jour après la création de la ressource Console. Notez également que le format de date et d’heure expiration doit impérativement suivre RFC3339 (par exemple, 2024-10-04T14:48:00Z), sinon, la création de la ressource Console va échouer.

    Remarque

    Pour obtenir un résumé complet pour cette commande, appelez az networkcloud console create --help.

  3. Une fois la ressource Console créée, récupérez l’identificateur Private Link Service requis pour créer un point de terminaison 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. Récupérez également l’ID d’accès de machine virtuelle. Vous devez utiliser cet identificateur unique comme user de la session 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")
    

Remarque

Pour obtenir un résumé complet pour cette commande, appelez az networkcloud virtualmachine console show --help.

Établir une connectivité de réseau privé

Pour établir une session sécurisée avec une machine virtuelle, vous devez établir une connectivité réseau privée entre votre réseau et le réseau privé du gestionnaire de clusters.

Ce réseau privé s’appuie sur le point de terminaison Azure Private Link (PLE) et le service Azure Private Link Service (PLS).

Le gestionnaire de clusters crée automatiquement un PLS afin de pouvoir établir une connexion réseau privée entre votre réseau et le réseau privé du gestionnaire de clusters.

Cette section fournit un guide pas-à-pas pour vous aider à établir une connectivité de réseau privée.

Diagramme de mise en réseau Private Link.

  1. Créez le PLE pour établir une connexion privée et sécurisée entre votre réseau et le réseau privé du gestionnaire de clusters. Vous avez besoin de l’ID de ressource PLS obtenu dans Création d’une ressource Console.

     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
    

Remarque

Vous n’aurez besoin que d’un seul point de terminaison privé par gestionnaire de cluster.

  1. Récupérez l’adresse IP privée allouée au PLE, dont vous avez besoin lors de l’établissement de la session 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}"
    

Établissement d’une session SSH avec une machine virtuelle

À ce stade, vous disposez de virtual_machine_access_id et de sshmux_ple_ip. Cette entrée correspond aux informations nécessaires pour établir une session avec la machine virtuelle.

Le service Console de machine virtuelle est un serveur ssh qui « relaye » la session sur une machine virtuelle Nexus. Le sshmux_ple_ip fait indirectement référence au service Console de machine virtuelle, et virtual_machine_access_id, à l’identificateur de la machine virtuelle.

Important

Le service Console de machine virtuelle écoute le port 2222. Par conséquent, vous devez impérativement spécifier ce numéro de port dans la commande ssh.

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

Diagramme de session SSH de la console de machine virtuelle.

Le service Console de machine virtuelle a été conçu pour autoriser uniquement une session par machine virtuelle. Toute personne établissant une autre session réussie sur une machine virtuelle ferme une session existante.

Important

La clé SSH privée utilisée pour l’authentification de la session (par défaut : $HOME/.ssh/id_rsa) doit impérativement correspondre à la clé SSH publique passée en tant que paramètre lors de la création de la ressource Console.

Mise à jour d’une ressource Console

Vous pouvez désactiver la session sur une machine virtuelle en mettant à jour la date et l’heure d’expiration et la clé SSH publique utilisée lors de la création de la session avec une machine virtuelle.

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 vous souhaitez désactiver l’accès à une machine virtuelle, vous devez mettre à jour la ressource Console avec le paramètre enabled False. Cette mise à jour ferme toute session existante et limite les sessions ultérieures.

Remarque

Avant de créer une session sur une machine virtuelle, la ressource Console correspondante doit impérativement être définie sur --enabled True.

Lorsque la durée --expiration de console expire, elle ferme toute session correspondant à la ressource Console. Vous devez mettre à jour l’heure d’expiration avec une valeur future afin de pouvoir établir une nouvelle session.

Lorsque vous mettez à jour la clé SSH publique de la console, le service Console de machine virtuelle ferme toutes les sessions actives. Pour créer une session, présentez une nouvelle clé SSH privée.

Nettoyage (facultatif)

Pour nettoyer la configuration de votre environnement de console de machine virtuelle, vous devez supprimer la ressource Console et votre point de terminaison Private Link.

  1. Suppression de votre ressource Console

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Suppression du point de terminaison Private Link

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