Wprowadzenie do usługi konsolowej maszyny wirtualnej
Usługa konsoli maszyny wirtualnej zapewnia zarządzany dostęp do maszyny wirtualnej hostowanej w wystąpieniu operatora Nexus. Używa usługi Azure Private Link (PLS) do zapewnienia łączności sieciowej w sieci prywatnej platformy Azure. Usługa konsoli maszyny wirtualnej to bezpieczny i prywatny sposób uzyskiwania dostępu do maszyny wirtualnej bez uwidaczniania jej w publicznym Internecie.
Aby uzyskać więcej informacji na temat zasobów sieciowych, które umożliwiają prywatną łączność z wystąpieniem operatora Nexus, zobacz Wprowadzenie do usługi Azure Private Link.
Ten dokument zawiera instrukcje z przewodnikiem dotyczące używania usługi konsolowej maszyny wirtualnej w celu ustanowienia sesji z maszyną wirtualną w wystąpieniu operatora Nexus.
Ten przewodnik ułatwia:
- Ustanów bezpieczną łączność sieci prywatnej między siecią a siecią prywatną Menedżera klastra.
- Utwórz zasób konsoli w grupie zasobów obciążenia/dzierżawy przy użyciu polecenia interfejsu
az networkcloud virtualmachine console
wiersza polecenia. - Uruchom sesję SSH, aby nawiązać połączenie z konsolą maszyny wirtualnej.
Uwaga
Aby uniknąć przekazywania parametru do każdego polecenia interfejsu --subscription
wiersza polecenia platformy Azure, wykonaj następujące polecenie:
az account set --subscription "your-subscription-ID"
Zanim rozpoczniesz
- Zainstaluj najnowszą wersję odpowiednich rozszerzeń interfejsu wiersza polecenia.
Ustawianie zmiennych
Aby ułatwić skonfigurowanie środowiska dostępu do maszyn wirtualnych, zdefiniuj te zmienne środowiskowe używane przez różne polecenia w tym przewodniku.
Uwaga
Te wartości zmiennych środowiskowych nie odzwierciedlają rzeczywistego wdrożenia, a użytkownicy MUSZĄ je zmienić tak, aby były zgodne ze swoimi środowiskami.
Należy zauważyć, że pierwszy zestaw zmiennych w poniższej sekcji dotyczy Menedżera klastra, a nie klastra.
Wartość CM_EXTENDED_LOCATION można znaleźć za pomocą polecenia 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"
Tworzenie zasobu konsoli
Zasób konsoli zawiera informacje o maszynie wirtualnej Nexus. Udostępnia ona nazwę maszyny wirtualnej, publiczny klucz SSH, datę wygaśnięcia sesji SSH itd.
Ta sekcja zawiera szczegółowy przewodnik ułatwiający tworzenie zasobu konsoli przy użyciu poleceń interfejsu wiersza polecenia platformy Azure.
Aby utworzyć zasób konsoli w Menedżerze klastra, należy zebrać niektóre informacje, na przykład grupę zasobów (CM_HOSTED_RESOURCES_RESOURCE_GROUP) i lokalizację niestandardową (CM_EXTENDED_LOCATION). Musisz podać grupę zasobów, ale możesz pobrać lokalizację niestandardową, jeśli masz uprawnienia dostępu do wykonywania następujących poleceń:
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 '"')
Pierwszą rzeczą, zanim będzie można ustanowić sesję SSH z maszyną wirtualną, jest utworzenie zasobu konsoli w Menedżerze klastra.
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}"]
Jeśli pominięto
--expiration
parametr, wygaśnięcie zostanie domyślnie ustawione na jeden dzień po utworzeniu zasobu konsoli. Należy również pamiętać, żeexpiration
format daty i godziny musi być zgodny z RFC3339 (np. 2024-10-04T14:48:00Z) w przeciwnym razie tworzenie zasobu konsoli kończy się niepowodzeniem.Uwaga
Aby uzyskać pełną składnię dla tego polecenia, wywołaj metodę
az networkcloud console create --help
.Po pomyślnym utworzeniu zasobu konsoli pobierz identyfikator usługi Private Link, który jest wymagany do utworzenia punktu końcowego usługi 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")
Ponadto pobierz identyfikator dostępu do maszyny wirtualnej. Należy użyć tego unikatowego identyfikatora
ssh
jakouser
sesji.virtual_machine_access_id=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "virtualMachineAccessId")
Uwaga
Aby uzyskać pełną składnię dla tego polecenia, wywołaj metodę az networkcloud virtualmachine console show --help
.
Ustanawianie łączności z siecią prywatną
Aby ustanowić bezpieczną sesję z maszyną wirtualną, należy ustanowić łączność sieci prywatnej między siecią a siecią prywatną Menedżera klastra.
Ta sieć prywatna opiera się na punkcie końcowym usługi Azure Private Link (PLE) i usłudze Azure Private Link (PLS).
Menedżer klastra automatycznie tworzy usługę PLS, aby można było ustanowić połączenie sieciowe prywatne między siecią a siecią prywatną Menedżera klastra.
Ta sekcja zawiera szczegółowy przewodnik ułatwia nawiązywanie łączności z siecią prywatną.
Utwórz ple na potrzeby ustanawiania prywatnego i bezpiecznego połączenia między siecią a siecią prywatną Menedżera klastra. Potrzebny jest identyfikator zasobu PLS uzyskany w sekcji Tworzenie zasobu konsoli.
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
Uwaga
Będzie potrzebny tylko jeden prywatny punkt końcowy dla menedżera klastra.
Pobierz prywatny adres IP przydzielony do ple, który jest potrzebny podczas ustanawiania
ssh
sesji.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}"
Ustanawianie sesji SSH z maszyną wirtualną
W tym momencie masz element virtual_machine_access_id
i sshmux_ple_ip
. Te dane wejściowe to informacje potrzebne do ustanowienia sesji z maszyną wirtualną.
Usługa konsoli maszyny wirtualnej to ssh
serwer, który "przekazuje" sesję do maszyny wirtualnej Nexus. Pośrednio sshmux_ple_ip
odwołuje się do usługi konsoli maszyny wirtualnej i virtual_machine_access_id
identyfikatora maszyny wirtualnej.
Ważne
Usługa konsoli maszyny wirtualnej nasłuchuje portu 2222
, dlatego należy określić ten numer portu w poleceniu ssh
.
SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip
Usługa konsoli maszyny wirtualnej została zaprojektowana tak, aby zezwalać tylko na jedną sesję na maszynę wirtualną. Każda osoba, która ustanawia kolejną pomyślną sesję na maszynie wirtualnej, zamyka istniejącą sesję.
Ważne
Prywatny klucz SSH używany do uwierzytelniania sesji (wartość domyślna: $HOME/.ssh/id_rsa
) MUSI być zgodny z publicznym kluczem SSH przekazanym jako parametr podczas tworzenia zasobu konsoli.
Aktualizowanie zasobu konsoli
Sesję można wyłączyć na maszynie wirtualnej, aktualizując datę/godzinę wygaśnięcia i publiczny klucz SSH używany podczas tworzenia sesji z maszyną wirtualną.
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}"]
Jeśli chcesz wyłączyć dostęp do maszyny wirtualnej, musisz zaktualizować zasób konsoli przy użyciu parametru enabled False
. Ta aktualizacja zamyka dowolną istniejącą sesję i ogranicza wszelkie późniejsze sesje.
Uwaga
Przed utworzeniem sesji na maszynie wirtualnej odpowiedni zasób konsoli musi być ustawiony na --enabled True
wartość .
Po wygaśnięciu czasu konsoli --expiration
zostanie zamknięta dowolna sesja odpowiadająca zasobowi konsoli. Należy zaktualizować czas wygaśnięcia przy użyciu przyszłej wartości, aby można było ustanowić nową sesję.
Po zaktualizowaniu publicznego klucza SSH konsoli usługa konsoli maszyny wirtualnej zamyka wszystkie aktywne sesje. W celu utworzenia nowej sesji przedstawiono nowy prywatny klucz SSH.
Czyszczenie (opcjonalnie)
Aby wyczyścić konfigurację środowiska konsoli maszyny wirtualnej, należy usunąć zasób konsoli i punkt końcowy usługi Private Link.
Usuwanie zasobu konsoli
az networkcloud virtualmachine console delete \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${VM_RESOURCE_GROUP}"
Usuwanie punktu końcowego usługi Private Link
az network private-endpoint delete \ --name ${PRIVATE_ENDPOINT_NAME}-ple \ --resource-group ${PRIVATE_ENDPOINT_NAME}-rg