Introduktion till virtual machine-konsoltjänsten
Konsoltjänsten virtuell dator (VM) ger hanterad åtkomst till en virtuell dator som finns i en Operator Nexus-instans. Den använder Azure Private Link Service (PLS) för att tillhandahålla nätverksanslutning i ett privat Azure-nätverk. Vm-konsoltjänsten är ett säkert och privat sätt att komma åt en virtuell dator utan att exponera den för det offentliga Internet.
Mer information om nätverksresurser som möjliggör privat anslutning till en Operator Nexus-instans finns i Introduktion till Azure Private Link.
Det här dokumentet innehåller guidade instruktioner om hur du använder vm-konsoltjänsten för att upprätta en session med en virtuell dator i en Operator Nexus-instans.
Den här guiden hjälper dig att:
- Upprätta en säker privat nätverksanslutning mellan nätverket och Klusterhanterarens privata nätverk.
- Skapa en konsolresurs i din resursgrupp för arbetsbelastning/klientorganisation med hjälp av
az networkcloud virtualmachine console
CLI-kommandot. - Starta en SSH-session för att ansluta till den virtuella datorns konsol.
Kommentar
Kör följande kommando för att undvika att skicka parametern --subscription
till varje Azure CLI-kommando:
az account set --subscription "your-subscription-ID"
Innan du börjar
- Installera den senaste versionen av lämpliga CLI-tillägg.
Ange variabler
För att konfigurera miljön för åtkomst till virtuella datorer definierar du de miljövariabler som används av de olika kommandona i den här guiden.
Kommentar
Dessa miljövariabelvärden återspeglar inte en verklig distribution och användarna MÅSTE ändra dem för att matcha sina miljöer.
Det bör noteras att den första uppsättningen variabler i avsnittet nedan gäller klusterhanteraren, inte klustret.
Det CM_EXTENDED_LOCATION värdet finns med kommandot 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"
Skapa konsolresurs
Konsolresursen innehåller information om den virtuella Nexus-datorn. Den innehåller den virtuella datorns namn, offentlig SSH-nyckel, förfallodatum för SSH-sessionen och så vidare.
Det här avsnittet innehåller stegvis guide som hjälper dig att skapa en konsolresurs med hjälp av Azure CLI-kommandon.
Om du vill skapa en konsolresurs i Klusterhanteraren måste du samla in viss information, till exempel resursgrupp (CM_HOSTED_RESOURCES_RESOURCE_GROUP) och anpassad plats (CM_EXTENDED_LOCATION). Du måste ange resursgruppen, men du kan hämta den anpassade platsen om du har behörighet att ta ut följande kommandon:
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 '"')
Det första innan du kan upprätta en SSH-session med en virtuell dator är att skapa en konsolresurs i Klusterhanteraren.
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}"]
Om du utelämnar parametern
--expiration
förfaller förfallodatumet till en dag efter att konsolresursen har skapats. Observera också attexpiration
datum- och tidsformatet måste följa RFC3339 (t.ex. 2024-10-04T14:48:00Z) annars misslyckas skapandet av konsolresursen.Kommentar
Om du vill ha en fullständig synopsis för det här kommandot anropar
az networkcloud console create --help
du .När konsolresursen har skapats hämtar du den private link-tjänstidentifierare som krävs för att skapa en Private Link-slutpunkt (PLE)
export pls_resourceid=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "privateLinkServiceId")
Hämta även åtkomst-ID:t för den virtuella datorn. Du måste använda den här unika identifieraren från och med
user
ssh
sessionen.virtual_machine_access_id=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "virtualMachineAccessId")
Kommentar
Om du vill ha en fullständig synopsis för det här kommandot anropar az networkcloud virtualmachine console show --help
du .
Upprätta privat nätverksanslutning
För att upprätta en säker session med en virtuell dator måste du upprätta en privat nätverksanslutning mellan nätverket och klusterhanterarens privata nätverk.
Det här privata nätverket förlitar sig på Azure Private Link-slutpunkten (PLE) och Azure Private Link Service (PLS).
Klusterhanteraren skapar automatiskt en PLS så att du kan upprätta en privat nätverksanslutning mellan nätverket och klusterhanterarens privata nätverk.
Det här avsnittet innehåller en stegvis guide som hjälper dig att upprätta en privat nätverksanslutning.
Skapa PLE för att upprätta en privat och säker anslutning mellan nätverket och klusterhanterarens privata nätverk. Du behöver det PLS-resurs-ID som hämtats i Skapa konsolresurs.
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
Kommentar
Du behöver bara en privat slutpunkt per klusterhanterare.
Hämta den privata IP-adress som allokerats till PLE, som du behöver när du upprättar
ssh
sessionen.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}"
Upprätta en SSH-session med virtuell dator
Nu har virtual_machine_access_id
du och sshmux_ple_ip
. Den här indatan är den information som behövs för att upprätta en session med den virtuella datorn.
VM-konsoltjänsten är en ssh
server som "vidarebefordrar" sessionen till en virtuell Nexus-dator. Indirekt sshmux_ple_ip
refererar till VM-konsoltjänsten och identifieraren virtual_machine_access_id
för den virtuella datorn.
Viktigt!
VM-konsoltjänsten lyssnar på port 2222
. Därför måste du ange det här portnumret i ssh
kommandot .
SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip
VM-konsoltjänsten har utformats för att endast tillåta en session per virtuell dator. Alla som upprättar en annan lyckad session till en virtuell dator stänger en befintlig session.
Viktigt!
Den privata SSH-nyckel som används för att autentisera sessionen (standard: $HOME/.ssh/id_rsa
) MÅSTE matcha den offentliga SSH-nyckel som skickas som en parameter när du skapar konsolresursen.
Uppdatera konsolresurs
Du kan inaktivera sessionen till en virtuell dator genom att uppdatera förfallodatum/tid och den offentliga SSH-nyckel som används när du skapar sessionen med en virtuell dator.
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}"]
Om du vill inaktivera åtkomsten till en virtuell dator måste du uppdatera konsolresursen med parametern enabled False
. Den här uppdateringen stänger alla befintliga sessioner och begränsar eventuella senare sessioner.
Kommentar
Innan du skapar en session till en virtuell dator måste motsvarande konsolresurs vara inställd på --enabled True
.
När en konsoltid --expiration
går ut stängs alla sessioner som motsvarar konsolresursen. Du måste uppdatera förfallotiden med ett framtida värde så att du kan upprätta en ny session.
När du uppdaterar konsolens offentliga SSH-nyckel stänger VM-konsoltjänsten alla aktiva sessioner. Du presenterar en ny privat SSH-nyckel för att skapa en ny session.
Rensa (valfritt)
Om du vill rensa konfigurationen av vm-konsolens miljö måste du ta bort konsolresursen och private link-slutpunkten.
Ta bort konsolresursen
az networkcloud virtualmachine console delete \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${VM_RESOURCE_GROUP}"
Ta bort private link-slutpunkten
az network private-endpoint delete \ --name ${PRIVATE_ENDPOINT_NAME}-ple \ --resource-group ${PRIVATE_ENDPOINT_NAME}-rg