Поделиться через


Использование инструментов удаленного управления для устранения неполадок виртуальной машины Azure

Область применения: ✔️ Виртуальные машины Windows

При устранении неполадок на виртуальной машине Azure можно подключиться к виртуальной машине с помощью средств удаленного доступа, которые рассматриваются в этой статье, а не с помощью протокола удаленного рабочего стола (RDP).

Последовательная консоль

Используйте последовательную консоль для Azure Виртуальные машины для выполнения команд на удаленной виртуальной машине Azure.

Удаленный сеанс командной строки

Скачайте PsExec. Подключитесь к виртуальной машине с помощью следующей команды.

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

Примечание.

  • Команда должна выполняться на компьютере, который находится в той же виртуальной сети.
  • DIP или HostName можно использовать для замены <компьютера>.
  • Параметр -s гарантирует, что команда вызывается с помощью системной учетной записи (с разрешениями администратора).
  • PsExec использует TCP-порты 135 и 445. В результате на брандмауэре должны быть открыты два порта.

Выполнение команд

Дополнительные сведения об использовании функции команды выполнения для запуска скриптов на виртуальной машине см. в разделе "Запуск сценариев PowerShell" в виртуальной машине Windows с помощью команды выполнения.

Расширение пользовательских сценариев

Можно использовать функцию расширения пользовательских сценариев для выполнения пользовательского сценария на целевой виртуальной машине. Для этого должны быть выполнены следующие условия.

  • Виртуальная машина доступна в сети.

  • Агент виртуальной машины Azure установлен и работает должным образом на виртуальной машине.

  • Расширение не было установлено на виртуальной машине.

    Расширение внедряет скрипт только при первом использовании. Если вы используете эту функцию позже, расширение распознает, что он уже использовался и не отправляет новый скрипт.

Отправьте скрипт в учетную запись хранения и создайте собственный контейнер. Затем выполните приведенный ниже сценарий в Azure PowerShell на компьютере, который может подключиться к виртуальной машине.

Для виртуальных машин 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

Удаленный сеанс PowerShell

Примечание.

Необходимо открыть TCP-порт 5986 (HTTPS), чтобы можно было использовать эту возможность.

Для виртуальных машин Azure Resource Manager необходимо открыть порт 5986 в группе безопасности сети (NSG). Дополнительные сведения см. в статье о группах безопасности.

Для виртуальных машин RDFE необходима конечная точка с частным портом (5986) и общедоступным портом. Затем необходимо также открыть этот общедоступный порт в NSG.

Настройка клиентского компьютера

Чтобы использовать PowerShell для удаленного подключения к виртуальной машине, необходимо сначала настроить клиентский компьютер, чтобы разрешить такое подключение. Для этого добавьте виртуальную машину в список доверенных узлов PowerShell, выполнив приведенную ниже команду соответствующим образом.

Чтобы добавить одну виртуальную машину в список доверенных узлов:

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

Чтобы добавить несколько виртуальных машин в список доверенных узлов:

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

Вот как можно добавить все компьютеры в список доверенных узлов.

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

Включение RemotePS на виртуальной машине

Для виртуальных машин, созданных с помощью классической модели развертывания, используйте расширение пользовательского скрипта для выполнения следующего сценария:

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

Для виртуальных машин Azure Resource Manager используйте команды выполнения с портала, чтобы запустить скрипт EnableRemotePS:

Снимок экрана: шаги по запуску скрипта EnableRemotePS на портале.

Подключение к виртуальной машине

Выполните следующую команду на основе расположения клиентского компьютера:

  • Вне виртуальной сети или развертывания

    • Для виртуальной машины, созданной с помощью классической модели развертывания, выполните следующую команду:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName  "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
    • Для виртуальной машины Azure Resource Manager сначала добавьте DNS-имя в общедоступный IP-адрес. Подробные инструкции приведены в статье Создание полного доменного имени на портале Azure для виртуальной машины Windows. Затем выполните следующую команду:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
  • В виртуальной сети или развертывании выполните следующую команду:

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

Примечание.

Если установить флаг SkipCaCheck, то можно обойти обязательный импорт сертификата на виртуальную машину при запуске сеанса.

Можно также использовать командлет Invoke-Command для удаленного запуска скрипта на виртуальной машине.

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

Удаленный реестр

Примечание.

TCP-порты 135 и 445 должны быть открыты для использования этой функции.

Для виртуальных машин Azure Resource Manager необходимо открыть порт 5986 в группе безопасности сети. Дополнительные сведения см. в статье о группах безопасности.

Для виртуальных машин RDFE необходима конечная точка с частным портом (5986) и общедоступным портом. Кроме того, необходимо открыть этот общедоступный порт в группе безопасности сети.

  1. На другой виртуальной машине в той же виртуальной сети откройте редактор реестра (regedit.exe).

  2. Выберите Файл>Подключить сетевой реестр.

    Снимок экрана: реестр сетевых подключений... параметр в меню

  3. Найдите целевую виртуальную машину по имени узла или динамическому IP-адресу (предпочтительно), введя его в поле "Введите имя объекта" для выбора.

    Снимок экрана: ввод имени объекта для выбора в диалоговом окне выбора компьютера.

  4. Введите учетные данные для целевой виртуальной машины.

  5. Внесите в реестр необходимые изменения.

Консоль удаленных служб

Примечание.

TCP-порты 135 и 445 должны быть открыты для использования этой функции.

Для виртуальных машин Azure Resource Manager необходимо открыть порт 5986 в группе безопасности сети. Дополнительные сведения см. в статье о группах безопасности.

Для виртуальных машин RDFE необходима конечная точка с частным портом (5986) и общедоступным портом. Кроме того, необходимо открыть этот общедоступный порт в группе безопасности сети.

  1. На другой виртуальной машине в той же виртуальной сети откройте экземпляр Services.msc.

  2. Щелкните правой кнопкой мыши Службы (локальные).

  3. Выберите Connect to another computer (Подключение к другому компьютеру).

    Снимок экрана: параметр

  4. Введите динамический IP-адрес целевой виртуальной машины.

    Снимок экрана: поле динамического ввода IP-адресов в параметре

  5. Внесите необходимые изменения в службы.

Следующие шаги

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.