Udostępnij za pośrednictwem


Rozwiązywanie problemów z maszyną wirtualną platformy Azure przy użyciu narzędzi zdalnych

Dotyczy: ✔️ maszyny wirtualne z systemem Windows

Podczas rozwiązywania problemów z maszyną wirtualną platformy Azure można nawiązać połączenie z maszyną wirtualną przy użyciu narzędzi zdalnych omówionych w tym artykule zamiast przy użyciu protokołu RDP (Remote Desktop Protocol).

Konsola szeregowa

Użyj konsoli szeregowej dla usługi Azure Virtual Machines , aby uruchamiać polecenia na zdalnej maszynie wirtualnej platformy Azure.

Zdalne zarządzanie kluczami

Pobierz program PsExec. Połącz się z maszyną wirtualną, uruchamiając następujące polecenie:

psexec \\<computer>-u user -s cmd

Uwaga

  • Polecenie musi być uruchamiane na komputerze, który znajduje się w tej samej sieci wirtualnej.
  • Adres DIP lub nazwa hosta może służyć do zastępowania <komputera>.
  • Parametr -s zapewnia, że polecenie jest wywoływane przy użyciu konta systemowego (uprawnienia administratora).
  • Program PsExec używa portów TCP 135 i 445. W związku z tym dwa porty muszą być otwarte w zaporze.

Uruchom polecenie

Aby uzyskać więcej informacji na temat używania funkcji uruchamiania poleceń do uruchamiania skryptów na maszynie wirtualnej, zobacz Uruchamianie skryptów programu PowerShell na maszynie wirtualnej z systemem Windows za pomocą polecenia run.

Rozszerzenie niestandardowego skryptu

Funkcja rozszerzenia niestandardowego skryptu umożliwia uruchamianie niestandardowego skryptu na docelowej maszynie wirtualnej. Aby korzystać z tej funkcji, należy spełnić następujące warunki:

  • Maszyna wirtualna ma łączność.

  • Agent maszyny wirtualnej platformy Azure jest zainstalowany i działa zgodnie z oczekiwaniami na maszynie wirtualnej.

  • Rozszerzenie nie zostało wcześniej zainstalowane na maszynie wirtualnej.

    Rozszerzenie wprowadza skrypt tylko po raz pierwszy, gdy jest używany. Jeśli ta funkcja zostanie użyta później, rozszerzenie rozpozna, że zostało ono już użyte i nie przekaże nowego skryptu.

Przekaż skrypt do konta magazynu i wygeneruj własny kontener. Następnie uruchom następujący skrypt w programie Azure PowerShell na komputerze, który ma łączność z maszyną wirtualną.

W przypadku maszyn wirtualnych usługi Azure Resource Manager

#Set up the basic variables.
$subscriptionID = "<<SUBSCRIPTION ID>>"
$storageAccount = "<<STORAGE ACCOUNT>>"
$storageRG = "<<RESOURCE GROUP OF THE STORAGE ACCOUNT>>" 
$localScript = "<<FULL PATH OF THE PS1 FILE TO EXECUTE ON THE VM>>" 
$blobName = "file.ps1" #Name you want for the blob in the storage.
$vmName = "<<VM NAME>>" 
$vmResourceGroup = "<<RESOURCE GROUP>>"
$vmLocation = "<<DATACENTER>>" 
 
#Set up the Azure PowerShell module, and ensure the access to the subscription.
Login-AzAccount #Ensure login with the account associated with the subscription ID.
Get-AzSubscription -SubscriptionId $subscriptionID | Select-AzSubscription

#Set up the access to the storage account, and upload the script.
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageRG -Name $storageAccount).Value[0]
$context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey
$container = "cse" + (Get-Date -Format yyyyMMddhhmmss)
New-AzureStorageContainer -Name $container -Permission Off -Context $context
Set-AzureStorageBlobContent -File $localScript -Container $container -Blob $blobName  -Context $context

#Push the script into the VM.
Set-AzVMCustomScriptExtension -Name "CustomScriptExtension" -ResourceGroupName $vmResourceGroup -VMName $vmName -Location $vmLocation -StorageAccountName $storageAccount -StorageAccountKey $storagekey -ContainerName $container -FileName $blobName -Run $blobName

Zdalny program PowerShell

Uwaga

Port TCP 5986 (HTTPS) musi być otwarty, aby można było użyć tej opcji.

W przypadku maszyn wirtualnych usługi Azure Resource Manager należy otworzyć port 5986 w sieciowej grupie zabezpieczeń. Aby uzyskać więcej informacji, zobacz Grupy zabezpieczeń.

W przypadku maszyn wirtualnych RDFE musisz mieć punkt końcowy, który ma port prywatny (5986) i port publiczny. Następnie należy również otworzyć ten publiczny port w sieciowej grupie zabezpieczeń.

Konfigurowanie komputera klienckiego

Aby zdalnie nawiązać połączenie z maszyną wirtualną przy użyciu programu PowerShell, należy najpierw skonfigurować komputer kliencki, aby zezwolić na połączenie. W tym celu dodaj maszynę wirtualną do listy zaufanych hostów programu PowerShell, uruchamiając następujące polecenie, zgodnie z potrzebami.

Aby dodać jedną maszynę wirtualną do listy zaufanych hostów:

Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName>

Aby dodać wiele maszyn wirtualnych do listy zaufanych hostów:

Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName1>,<ComputerName2>

Aby dodać wszystkie komputery do listy zaufanych hostów:

Set-Item wsman:\localhost\Client\TrustedHosts -value *

Włączanie usługi RemotePS na maszynie wirtualnej

W przypadku maszyn wirtualnych utworzonych przy użyciu klasycznego modelu wdrażania użyj rozszerzenia niestandardowego skryptu, aby uruchomić następujący skrypt:

Enable-PSRemoting -Force
New-NetFirewallRule -Name "Allow WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Action Allow -Direction Inbound -LocalPort 5986 -Protocol TCP
$thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My).Thumbprint
$command = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:computername""; CertificateThumbprint=""$thumbprint""}"
cmd.exe /C $command

W przypadku maszyn wirtualnych usługi Azure Resource Manager uruchom polecenia z portalu, aby uruchomić skrypt EnableRemotePS:

Zrzut ekranu przedstawiający kroki uruchamiania skryptu EnableRemotePS z portalu.

Nawiązywanie połączenia z maszyną wirtualną

Uruchom następujące polecenie na podstawie lokalizacji komputera klienckiego:

  • Poza siecią wirtualną lub wdrożeniem

    • W przypadku maszyny wirtualnej utworzonej przy użyciu klasycznego modelu wdrażania uruchom następujące polecenie:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName  "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
    • W przypadku maszyny wirtualnej usługi Azure Resource Manager najpierw dodaj nazwę DNS do publicznego adresu IP. Aby uzyskać szczegółowe instrukcje, zobacz Tworzenie w pełni kwalifikowanej nazwy domeny w witrynie Azure Portal dla maszyny wirtualnej z systemem Windows. Następnie uruchom następujące polecenie:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
  • W sieci wirtualnej lub wdrożeniu uruchom następujące polecenie:

    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
    Enter-PSSession -ComputerName  "<<HOSTNAME>>" -port 5986 -Credential (Get-Credential) -useSSL -SessionOption $Skip
    

Uwaga

Ustawienie flagi SkipCaCheck pomija wymaganie zaimportowania certyfikatu do maszyny wirtualnej podczas uruchamiania sesji.

Możesz również użyć polecenia cmdlet Invoke-Command, aby zdalnie uruchomić skrypt na maszynie wirtualnej.

Invoke-Command -ComputerName "<<COMPUTERNAME>" -ScriptBlock {"<<SCRIPT BLOCK>>"}

Rejestr zdalny

Uwaga

Aby można było użyć tej opcji, port TCP 135 lub 445 musi być otwarty.

W przypadku maszyn wirtualnych usługi Azure Resource Manager musisz otworzyć port 5986 w sieciowej grupie zabezpieczeń. Aby uzyskać więcej informacji, zobacz Grupy zabezpieczeń.

W przypadku maszyn wirtualnych RDFE musisz mieć punkt końcowy, który ma port prywatny 5986 i port publiczny. Musisz również otworzyć ten publiczny port w sieciowej grupie zabezpieczeń.

  1. Z innej maszyny wirtualnej w tej samej sieci wirtualnej otwórz edytor rejestru (regedit.exe).

  2. Wybierz pozycję Plik>Połącz rejestr sieci.

    Zrzut ekranu przedstawiający rejestr połączeń sieciowych... opcja w menu Plik w Edytorze rejestru

  3. Znajdź docelową maszynę wirtualną według nazwy hosta lub dynamicznego adresu IP (najlepiej), wprowadzając ją w polu Wprowadź nazwę obiektu do wybrania.

    Zrzut ekranu przedstawiający pole Wprowadź nazwę obiektu do wybrania w oknie dialogowym Wybieranie komputera.

  4. Wprowadź poświadczenia docelowej maszyny wirtualnej.

  5. Wprowadź wszelkie niezbędne zmiany rejestru.

Konsola usług zdalnych

Uwaga

Aby można było użyć tej opcji, porty TCP 135 lub 445 muszą być otwarte.

W przypadku maszyn wirtualnych usługi Azure Resource Manager musisz otworzyć port 5986 w sieciowej grupie zabezpieczeń. Aby uzyskać więcej informacji, zobacz Grupy zabezpieczeń.

W przypadku maszyn wirtualnych RDFE musisz mieć punkt końcowy, który ma port prywatny 5986 i port publiczny. Musisz również otworzyć ten publiczny port w sieciowej grupie zabezpieczeń.

  1. Z innej maszyny wirtualnej w tej samej sieci wirtualnej otwórz wystąpienie pliku Services.msc.

  2. Kliknij prawym przyciskiem myszy pozycję Usługi (lokalne).

  3. Wybierz pozycję Połącz z innym komputerem.

    Zrzut ekranu przedstawiający opcję Połącz z innym komputerem w menu po kliknięciu prawym przyciskiem myszy pozycji Usługi (lokalne).

  4. Wprowadź dynamiczny adres IP docelowej maszyny wirtualnej.

    Zrzut ekranu przedstawiający dynamiczne pole wprowadzania adresu IP w opcji Inny komputer w oknie dialogowym Wybieranie komputera.

  5. Wprowadź wszelkie niezbędne zmiany w usługach.

Następne kroki

  • Aby uzyskać więcej informacji na temat polecenia cmdlet Enter-PSSession, zobacz Enter-PSSession.
  • Aby uzyskać więcej informacji na temat rozszerzenia niestandardowego skryptu dla systemu Windows przy użyciu klasycznego modelu wdrażania, zobacz Niestandardowe rozszerzenie skryptu dla systemu Windows.
  • PsExec jest częścią pakietu PSTools.
  • Aby uzyskać więcej informacji na temat pakietu PSTools, zobacz PSTools.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pomoc techniczną społeczności platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.