Compartilhar via


Use ferramentas remotas para solucionar problemas de VM do Azure

Aplica-se a: ✔️ VMs do Windows

Ao solucionar problemas em uma máquina virtual (VM) do Azure, você pode se conectar à VM usando as ferramentas remotas discutidas neste artigo em vez de usar o RDP (Remote Desktop Protocol).

Console serial

Use um console serial para Máquinas Virtuais do Azure para executar comandos na VM remota do Azure.

CMD remoto

Baixe PsExec. Conecte à VM executando o seguinte comando:

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

Observação

  • O comando deve ser executado em um computador que esteja na mesma rede virtual.
  • DIP ou HostName podem ser usados para substituir <computador>.
  • O parâmetro -s garante que o comando seja invocado usando a conta do sistema (permissão de administrador).
  • O PsExec usa as portas TCP 135 e 445. Como resultado, as duas portas devem estar abertas no firewall.

Execute o comando

Para obter mais informações sobre como usar o recurso de comando de execução para executar scripts na VM, consulte Executar scripts do PowerShell em sua VM do Windows com comando de execução.

Extensão de script personalizado

Você pode usar o recurso Custom Script Extension para executar um script personalizado na VM de destino. Para usar esse recurso, as seguintes condições devem ser atendidas:

  • A VM tem conectividade.

  • O Agente de Máquina Virtual do Azure está instalado e funcionando conforme o esperado na VM.

  • A extensão não foi instalada anteriormente na VM.

    A extensão injeta o script apenas na primeira vez em que é usado. Se você usar esse recurso posteriormente, a extensão reconhecerá que já foi usado e não carregará o novo script.

Carregue seu script em uma conta de armazenamento e gere seu próprio contêiner. Em seguida, execute o seguinte script no Azure PowerShell em um computador que tenha conectividade com a VM.

Para VMs do 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 Remoto

Observação

A porta TCP 5986 (HTTPS) deve estar aberta para que você possa usar esta opção.

Para VMs do Azure Resource Manager, você deve abrir a porta 5986 no grupo de segurança de rede (NSG). Para obter mais informações, consulte Grupos de segurança.

Para VMs RDFE, você deve ter um endpoint que tenha uma porta privada (5986) e uma porta pública. Então, você também precisa abrir essa porta voltada para o público no NSG.

Configurar o computador cliente

Para usar o PowerShell para se conectar à VM remotamente, primeiro você precisa configurar o computador cliente para permitir a conexão. Para fazer isso, adicione a VM à lista de hosts confiáveis do PowerShell executando o seguinte comando, conforme apropriado.

Para adicionar uma VM à lista de hosts confiáveis:

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

Para adicionar várias VMs à lista de hosts confiáveis:

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

Para adicionar todos os computadores à lista de hosts confiáveis:

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

Habilitar RemotePS na VM

Para VMs criadas usando o modelo de implantação clássico, use a Custom Script Extension para executar o seguinte script:

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

Para VMs do Azure Resource Manager, use comandos de execução do portal para executar o script EnableRemotePS:

Captura de tela das etapas para executar o script EnableRemotePS do portal.

Conectar-se à VM

Execute o seguinte comando com base no local do computador cliente:

  • Fora da rede virtual ou implantação

    • Para uma VM criada usando o modelo de implantação clássico, execute o seguinte comando:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName  "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
    • Para uma VM do Azure Resource Manager, primeiro adicione um nome DNS ao endereço IP público. Para obter etapas detalhadas, consulte Criar um nome de domínio totalmente qualificado no portal do Azure para uma VM do Windows. Em seguida, execute o seguinte comando:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
  • Dentro da rede virtual ou implantação, execute o seguinte comando:

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

Observação

Definir o sinalizador SkipCaCheck ignora o requisito de importar um certificado para a VM quando você inicia a sessão.

Você também pode usar o cmdlet Invoke-Command para executar um script na VM remotamente.

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

Registro Remoto

Observação

A porta TCP 135 ou 445 deve estar aberta para usar esta opção.

Para VMs do Azure Resource Manager, você precisa abrir a porta 5986 no NSG. Para obter mais informações, consulte Grupos de segurança.

Para VMs RDFE, você deve ter um endpoint que tenha uma porta privada 5986 e uma porta pública. Você também precisa abrir essa porta voltada para o público no NSG.

  1. De outra VM na mesma rede virtual, abra o editor de registro (regedit.exe).

  2. Selecione Arquivo>Conectar Registro de Rede.

    Captura de tela da opção Conectar Registro de Rede... no menu Arquivo do Editor do Registro

  3. Localize a VM de destino por nome do host ou IP dinâmico (preferível) inserindo-o na caixa Insira o nome do objeto a ser selecionado.

    Captura da tela de Insira o nome do objeto para selecionar a caixa de diálogo Selecione o Computador.

  4. Insira as credenciais para a VM de destino.

  5. Faça as alterações de registro necessárias.

Console de serviços remotos

Observação

As portas TCP 135 ou 445 devem estar abertas para usar esta opção.

Para VMs do Azure Resource Manager, você precisa abrir a porta 5986 no NSG. Para obter mais informações, consulte Grupos de segurança.

Para VMs RDFE, você deve ter um endpoint que tenha uma porta privada 5986 e uma porta pública. Você também precisa abrir essa porta voltada para o público no NSG.

  1. De outra VM na mesma rede virtual, abra uma instância de Services.msc.

  2. Clique com o botão direito em Serviços (Local).

  3. Selecione Conectar a outro computador.

    Captura de tela da opção Conectar a outro computador no menu do botão direito de Serviços (Local).

  4. Insira o IP dinâmico da VM de destino.

    Captura de tela da caixa de entrada de IP dinâmico na opção Outro computador na caixa de diálogo Selecionar computador.

  5. Faça as alterações necessárias nos serviços.

Próximas etapas

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.