Udostępnij za pośrednictwem


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.

Diagram usługi konsoli maszyny wirtualnej.

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

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

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 (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 '"')
    
  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 (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.

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

Diagram sieci usługi Private Link.

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

  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