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. Opiera się on na usłudze Azure Private Link (PLS) w celu ustanowienia połączenia sieci prywatnej między siecią użytkownika a siecią prywatną menedżera klastra Nexus platformy Azure.

Diagram of VM Console service.

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:

  1. Ustanów bezpieczną łączność sieci prywatnej między siecią a siecią prywatną Menedżera klastra.
  2. Utwórz zasób konsoli w grupie zasobów obciążenia/dzierżawy przy użyciu polecenia interfejsu az networkcloud virtualmachine console wiersza polecenia.
  3. Zainicjuj 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

  1. 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.

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

Tworzenie zasobu konsoli

Zasób konsoli zawiera informacje o maszynie wirtualnej, takie jak nazwa maszyny wirtualnej, publiczny klucz SSH, data wygaśnięcia sesji SSH itp.

Ta sekcja zawiera szczegółowy przewodnik ułatwiający tworzenie zasobu konsoli przy użyciu poleceń interfejsu wiersza polecenia platformy Azure.

Diagram of VM Console Resource.

  1. Aby utworzyć zasób konsoli w Menedżerze klastra, należy zebrać niektóre informacje, np. 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 poleceń wymienionych poniżej.

    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. 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ć, że expiration format daty i godziny musi być zgodny z RFC3339 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.

  3. 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")
    
  4. Ponadto pobierz identyfikator dostępu do maszyny wirtualnej. Należy użyć tego unikatowego identyfikatora ssh jako user 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 Połączenie ivity sieci prywatnej

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ą.

Diagram of Private Link networking.

  1. 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.

  1. 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 wyznaczonej maszyny wirtualnej. 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

Diagram of VM Console SSH Session.

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

Możesz wyłączyć sesję dla danej maszyny wirtualnej, aktualizując datę/godzinę wygaśnięcia i/lub aktualizując 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 wszystkie kolejne sesje.

Uwaga

Przed utworzeniem sesji na maszynie wirtualnej odpowiedni zasób konsoli musi być ustawiony na --enabled Truewartość .

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 każdą aktywną sesję, do której odwołuje się zasób konsoli. Podczas ustanawiania nowej sesji musisz podać pasujący prywatny klucz SSH odpowiadający nowemu kluczowi publicznemu.

Czyszczenie (opcjonalnie)

Aby wyczyścić konfigurację środowiska konsoli maszyny wirtualnej, należy usunąć zasób konsoli i punkt końcowy usługi Private Link.

  1. Usuwanie zasobu konsoli

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Usuwanie punktu końcowego usługi Private Link

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