Introduzione al servizio console macchina virtuale
Il servizio console macchina virtuale fornisce l'accesso gestito a una macchina virtuale ospitata in un'istanza Di Operator Nexus. Usa collegamento privato di Azure Service (PLS) per fornire la connettività di rete nella rete privata di Azure. Il servizio Console vm è un modo sicuro e privato per accedere a una macchina virtuale senza esporla alla rete Internet pubblica.
Per altre informazioni sulle risorse di rete che consentono la connettività privata a un'istanza di Operator Nexus, vedere Introduzione alle collegamento privato di Azure.
Questo documento fornisce istruzioni guidate su come usare il servizio console di macchine virtuali per stabilire una sessione con una macchina virtuale in un'istanza Nexus operatore.
Questa guida consente di:
- Stabilire una connettività di rete privata sicura tra la rete e la rete privata di Cluster Manager.
- Creare una risorsa console nel gruppo di risorse del carico di lavoro/tenant usando il comando dell'interfaccia della
az networkcloud virtualmachine console
riga di comando. - Avviare una sessione SSH per connettersi alla console della macchina virtuale.
Nota
Per evitare di passare il parametro a ogni comando dell'interfaccia della --subscription
riga di comando di Azure, eseguire il comando seguente:
az account set --subscription "your-subscription-ID"
Operazioni preliminari
- Installare la versione più recente delle estensioni dell'interfaccia della riga di comando appropriate.
Impostazione delle variabili
Per configurare l'ambiente per l'accesso a Macchine virtuali, definire queste variabili di ambiente usate dai vari comandi in questa guida.
Nota
Questi valori delle variabili di ambiente non riflettono una distribuzione reale e gli utenti devono modificarli in modo che corrispondano ai propri ambienti.
Si noti che il primo set di variabili nella sezione seguente è relativo a Gestione cluster non al cluster.
Il valore CM_EXTENDED_LOCATION è reperibile con il comando 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"
Creazione di una risorsa console
La risorsa Console fornisce le informazioni sulla macchina virtuale Nexus. Fornisce il nome della macchina virtuale, la chiave SSH pubblica, la data di scadenza per la sessione SSH e così via.
Questa sezione fornisce una guida dettagliata per creare una risorsa console usando i comandi dell'interfaccia della riga di comando di Azure.
Per creare una risorsa console in Gestione cluster, è necessario raccogliere alcune informazioni, ad esempio gruppo di risorse (CM_HOSTED_RESOURCES_RESOURCE_GROUP) e percorso personalizzato (CM_EXTENDED_LOCATION). È necessario fornire il gruppo di risorse, ma è possibile recuperare la posizione personalizzata se si dispone dei diritti di accesso per eseguire i comandi seguenti:
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 '"')
La prima cosa prima di poter stabilire una sessione SSH con una macchina virtuale consiste nel creare una risorsa console in Gestione cluster.
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}"]
Se si omette il
--expiration
parametro, la scadenza verrà predefinito un giorno dopo la creazione della risorsa console. Si noti inoltre che ilexpiration
formato data e ora deve seguire RFC3339 (ad esempio, 2024-10-04T14:48:00Z) altrimenti la creazione della risorsa console non riesce.Nota
Per un riepilogo completo per questo comando, richiamare
az networkcloud console create --help
.Al termine della creazione della risorsa console, recuperare l'identificatore del servizio collegamento privato necessario per creare collegamento privato endpoint (PLE)
export pls_resourceid=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "privateLinkServiceId")
Recuperare anche l'ID di accesso alla macchina virtuale. È necessario usare questo identificatore univoco a partire
user
dallassh
sessione.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
Per un riepilogo completo per questo comando, richiamare az networkcloud virtualmachine console show --help
.
Definizione della connettività di rete privata
Per stabilire una sessione sicura con una macchina virtuale, è necessario stabilire la connettività di rete privata tra la rete e la rete privata di Gestione cluster.
Questa rete privata si basa sull'endpoint collegamento privato di Azure (PLE) e sul servizio collegamento privato di Azure (PLS).
Cluster Manager crea automaticamente un file PLS in modo che sia possibile stabilire una connessione di rete privata tra la rete e la rete privata di Gestione cluster.
Questa sezione fornisce una guida dettagliata per stabilire una connettività di rete privata.
Creare la ple per stabilire una connessione privata e sicura tra la rete e la rete privata di Cluster Manager. È necessario l'ID risorsa PLS ottenuto in Creazione della risorsa 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
Nota
Sarà necessario un solo endpoint privato per Cluster Manager.
Recuperare l'indirizzo IP privato allocato alla ple, necessario per stabilire la
ssh
sessione.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}"
Definizione di una sessione SSH con macchina virtuale
A questo punto, si dispone di virtual_machine_access_id
e .sshmux_ple_ip
Questo input è le informazioni necessarie per stabilire una sessione con la macchina virtuale.
Il servizio console della macchina virtuale è un ssh
server che "inoltra" la sessione a una macchina virtuale Nexus. Il sshmux_ple_ip
riferimento indiretto al servizio console della macchina virtuale e all'identificatore virtual_machine_access_id
per la macchina virtuale.
Importante
Il servizio console della macchina virtuale è in ascolto della porta 2222
, pertanto è necessario specificare questo numero di porta nel ssh
comando.
SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip
Il servizio console vm è stato progettato per consentire una sola sessione per ogni macchina virtuale. Chiunque stabilissi un'altra sessione con esito positivo in una macchina virtuale chiude una sessione esistente.
Importante
La chiave SSH privata usata per autenticare la sessione (impostazione predefinita: $HOME/.ssh/id_rsa
) DEVE corrispondere alla chiave SSH pubblica passata come parametro durante la creazione della risorsa console.
Aggiornamento della risorsa della console
È possibile disabilitare la sessione in una macchina virtuale aggiornando la data/ora di scadenza e la chiave SSH pubblica usata durante la creazione della sessione con una macchina virtuale.
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}"]
Se si vuole disabilitare l'accesso a una macchina virtuale, è necessario aggiornare la risorsa console con il parametro enabled False
. Questo aggiornamento chiude qualsiasi sessione esistente e limita le sessioni successive.
Nota
Prima di creare una sessione in una macchina virtuale, la risorsa console corrispondente deve essere impostata su --enabled True
.
Quando scade un'ora della console --expiration
, chiude qualsiasi sessione corrispondente alla risorsa console. Sarà necessario aggiornare l'ora di scadenza con un valore futuro in modo da poter stabilire una nuova sessione.
Quando si aggiorna la chiave SSH pubblica della console, il servizio console di macchine virtuali chiude tutte le sessioni attive. Viene visualizzata una nuova chiave SSH privata per creare una nuova sessione.
Pulizia (facoltativo)
Per pulire l'installazione dell'ambiente della console di macchine virtuali, è necessario eliminare la risorsa console e l'endpoint collegamento privato.
Eliminazione della risorsa console
az networkcloud virtualmachine console delete \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${VM_RESOURCE_GROUP}"
Eliminazione dell'endpoint collegamento privato
az network private-endpoint delete \ --name ${PRIVATE_ENDPOINT_NAME}-ple \ --resource-group ${PRIVATE_ENDPOINT_NAME}-rg