Udostępnij przez


Wprowadzenie do usługi konsolowej maszyny wirtualnej

Usługa konsoli maszyny wirtualnej (VM) zapewnia zarządzany dostęp do maszyny wirtualnej (VM) hostowanej w wystąpieniu Operator 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.

Diagram usługi konsoli maszyny wirtualnej.

Aby uzyskać więcej informacji na temat zasobów sieciowych, które umożliwiają prywatną łączność z Operator Nexus Instance, zobacz Wprowadzenie do usługi Azure Private Link.

Ten dokument zawiera szczegółowe instrukcje dotyczące korzystania z usługi konsoli maszyny wirtualnej w celu nawiązania sesji z maszyną wirtualną w instancji Operatora Nexus.

Ten przewodnik ułatwia:

  1. Ustanów bezpieczną łączność sieci prywatnej między swoją siecią a siecią prywatną Menedżera klastra.
  2. Utwórz zasób "Console" w grupie zasobów obciążenia/dzierżawy, używając polecenia w interfejsie wiersza polecenia az networkcloud virtualmachine console.
  3. Uruchom sesję SSH, aby nawiązać połączenie z konsolą maszyny wirtualnej.

Uwaga / Notatka

Aby uniknąć przekazywania parametru do każdego polecenia Azure CLI, wykonaj następujące polecenie:

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

Zanim rozpoczniesz

  1. Zainstaluj najnowszą wersję odpowiednich rozszerzeń CLI.

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 / Notatka

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

    # CLUSTER_MANAGER_RESOURCE_GROUP: Cluster Manager resource group name
    export CLUSTER_MANAGER_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"
    # VIRTUAL_MACHINE_RG: Resource group name where the Virtual Machine is located
    export VIRTUAL_MACHINE_RG="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=$(az networkcloud virtualmachine show --name ${VIRTUAL_MACHINE_NAME} --resource-group ${VIRTUAL_MACHINE_RG} --query "consoleExtendedLocation.name" -o tsv)

    # 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="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD... user@hostname"
    # 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"

Ważne

Podczas ustawiania zmiennej środowiskowej CONSOLE_PUBLIC_KEY upewnij się, że poprawnie podano wartość klucza publicznego SSH, ponieważ zawiera spacje. Przykład:

export CONSOLE_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... user@hostname"

Klucz publiczny SSH powinien być kompletnym ciągiem klucza, w tym typem klucza (ssh-rsa, ssh-ed25519 itp.), danymi klucza i opcjonalnie komentarzem.

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.

Diagram zasobu konsoli maszyny wirtualnej.

  1. Aby utworzyć zasób konsoli w Menedżerze klastra, należy zebrać niektóre informacje, na przykład grupę zasobów (CLUSTER_MANAGER_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 ${CLUSTER_MANAGER_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 "${CLUSTER_MANAGER_RESOURCE_GROUP}" \
        --extended-location name="${CM_EXTENDED_LOCATION}" type="CustomLocation" \
        --enabled True \
        --ssh-public-key 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ż expiration, że 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 / Notatka

    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 "${CLUSTER_MANAGER_RESOURCE_GROUP}" \
        --query "privateLinkServiceId" -o tsv)
    
  4. Ponadto pobierz identyfikator dostępu do maszyny wirtualnej. Należy użyć tego unikatowego identyfikatora jako user sesji ssh.

    virtual_machine_access_id=$(az networkcloud virtualmachine console show \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CLUSTER_MANAGER_RESOURCE_GROUP}" \
        --query "virtualMachineAccessId" -o tsv)
    

Uwaga / Notatka

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 swoją 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 przewodnik krok po kroku, który pomoże Ci ustanowić łączność z siecią prywatną.

Diagram sieci usługi Private Link.

  1. Utwórz PLE na potrzeby ustanawiania prywatnego i bezpiecznego połączenia między siecią a prywatną siecią 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 / Notatka

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 nawiązywania sesji 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}"
    

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 serwer ssh, 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

Diagram sesji SSH konsoli maszyny wirtualnej.

Usługa konsoli maszyny wirtualnej została zaprojektowana tak, aby zezwalać tylko na jedną sesję dla maszyny wirtualnej. 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] \
    [--ssh-public-key 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 / Notatka

Przed utworzeniem sesji na maszynie wirtualnej odpowiedni zasób konsoli musi mieć ustawioną wartość na --enabled True.

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. Aby utworzyć nową sesję, używasz nowego prywatnego klucza 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.

  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}" \
    --resource-group "${PRIVATE_ENDPOINT_RG}"