Использование инструментов удаленного управления для устранения неполадок виртуальной машины 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:
Подключение к виртуальной машине
Выполните следующую команду на основе расположения клиентского компьютера:
Вне виртуальной сети или развертывания
Для виртуальной машины, созданной с помощью классической модели развертывания, выполните следующую команду:
$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) и общедоступным портом. Кроме того, необходимо открыть этот общедоступный порт в группе безопасности сети.
На другой виртуальной машине в той же виртуальной сети откройте редактор реестра (regedit.exe).
Выберите Файл>Подключить сетевой реестр.
Найдите целевую виртуальную машину по имени узла или динамическому IP-адресу (предпочтительно), введя его в поле "Введите имя объекта" для выбора.
Введите учетные данные для целевой виртуальной машины.
Внесите в реестр необходимые изменения.
Консоль удаленных служб
Примечание.
TCP-порты 135 и 445 должны быть открыты для использования этой функции.
Для виртуальных машин Azure Resource Manager необходимо открыть порт 5986 в группе безопасности сети. Дополнительные сведения см. в статье о группах безопасности.
Для виртуальных машин RDFE необходима конечная точка с частным портом (5986) и общедоступным портом. Кроме того, необходимо открыть этот общедоступный порт в группе безопасности сети.
На другой виртуальной машине в той же виртуальной сети откройте экземпляр Services.msc.
Щелкните правой кнопкой мыши Службы (локальные).
Выберите Connect to another computer (Подключение к другому компьютеру).
Введите динамический IP-адрес целевой виртуальной машины.
Внесите необходимые изменения в службы.
Следующие шаги
- Дополнительные сведения о командлете ВВОД-PSSession см. в разделе ВВОД-PSSession.
- Дополнительные сведения о расширении пользовательского скрипта для Windows с помощью классической модели развертывания см. в разделе "Расширение пользовательского скрипта для Windows".
- PsExec является частью набора PSTools.
- Дополнительные сведения о PSTools Suite см. в разделе PSTools.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.