Compartir a través de


Uso de herramientas remotas para solucionar problemas con la VM de Azure

Se aplica a: ✔️ Máquinas virtuales de Windows

Para solucionar problemas en una máquina virtual (VM) de Azure, puede conectarse a la VM mediante el uso de las herramientas remotas que se describen en este artículo en lugar de utilizar el Protocolo de escritorio remoto (RDP).

Consola de serie

Use una consola serie para Azure Virtual Machines para ejecutar comandos en la máquina virtual remota de Azure.

CMD remoto

Descargue PsExec. Conéctese a la máquina virtual ejecutando el comando siguiente:

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

Nota

  • El comando debe ejecutarse en un equipo que esté en la misma red virtual.
  • DIP o HostName se puede usar para reemplazar el <equipo>.
  • El parámetro -s asegura que se invoca el comando mediante el uso de la cuenta del sistema (permisos de administrador).
  • PsExec usa los puertos TCP 135 y 445. Por lo tanto, los dos puertos deben estar abiertos en el firewall.

Ejecute el comando

Para más información sobre cómo usar la característica de ejecución de comandos para ejecutar scripts en la máquina virtual, consulte Ejecución de scripts de PowerShell en la máquina virtual Windows mediante Ejecutar comando.

Custom Script Extension

Puede usar la característica Extensión de script personalizado para ejecutar un script personalizado en la máquina virtual de destino. Para poder usar esta característica, deben cumplirse las condiciones siguientes:

  • La máquina virtual debe tener conectividad.

  • El agente de máquina virtual de Azure está instalado y funciona según lo previsto en la máquina virtual.

  • La extensión no se instaló previamente en la máquina virtual.

    La extensión inserta el script solo la primera vez que se usa. Si usa esta característica más adelante, la extensión reconoce que ya se ha utilizado y el nuevo script no se carga.

Cargue el script en una cuenta de almacenamiento y genere su propio contenedor. A continuación, ejecute el siguiente script de Azure PowerShell en un equipo que tenga conectividad a la máquina virtual.

Para máquinas virtuales de 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

Nota

Puerto TCP 5986 (HTTPS) debe estar abierto para que pueda usar esta opción.

En el caso de las máquinas virtuales de Azure Resource Manager, debe abrir el puerto 5986 en el grupo de seguridad de red (NSG). Para más información, consulte Grupos de seguridad.

En el caso de las máquinas virtuales de RDFE, debe tener un punto de conexión con un puerto privado (5986) y un puerto público. A continuación, también tendrá que abrir ese puerto público en NSG.

Configuración del equipo cliente

Para usar PowerShell para conectarse de forma remota a la máquina virtual, primero debe configurar el equipo cliente para permitir la conexión. Para ello, agregue la máquina virtual a la lista de hosts de confianza de PowerShell ejecutando el comando siguiente, según corresponda.

Para agregar una máquina virtual a la lista de hosts de confianza:

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

Para agregar varias máquinas virtuales a la lista de hosts de confianza:

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

Para agregar todos los equipos a la lista de hosts de confianza:

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

Habilitar RemotePS en la máquina virtual

En el caso de las máquinas virtuales creadas con el modelo de implementación clásica, use la extensión de script personalizado para ejecutar el siguiente 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

En el caso de las máquinas virtuales de Azure Resource Manager, utilice Ejecutar comandos desde el portal para ejecutar el script EnableRemotePS:

Captura de pantalla de los pasos para ejecutar el script EnableRemotePS desde el portal.

Conexión a la máquina virtual

Ejecute el siguiente comando en función de la ubicación del equipo cliente:

  • Fuera de la red virtual o la implementación

    • Para una máquina virtual creada mediante el modelo de implementación clásica, ejecute el siguiente comando:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName  "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
    • Para una máquina virtual de Azure Resource Manager, primero agregue un nombre DNS a la dirección IP pública. Para obtener pasos detallados, vea Creación de un nombre de dominio completo en Azure Portal para una máquina virtual Windows. Ejecute el siguiente comando:

      $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
      Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
      
  • En la red virtual o implementación, ejecute el comando siguiente:

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

Nota

Al activar la marca SkipCaCheck se omite el requisito de importar un certificado a la máquina virtual cuando se inicia la sesión.

También puede usar el cmdlet Invoke-Command para ejecutar un script en la máquina virtual de forma remota.

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

Registro remoto

Nota

El puerto TCP 135 o 445 debe estar abierto para poder usar esta opción.

En el caso de las máquinas virtuales de Azure Resource Manager, tiene que abrir el puerto 5986 en el NSG. Para más información, consulte Grupos de seguridad.

En el caso de las máquinas virtuales de RDFE, debe tener un punto de conexión con un puerto privado 5986 y un puerto público. También tendrá que abrir ese puerto público en NSG.

  1. Desde otra máquina virtual en la misma red virtual, abra el editor del Registro (regedit.exe).

  2. Seleccione Archivo>Connect Network Registry (Conectar registro de red).

    Captura de pantalla del Registro de conexión de red... opción en el menú Archivo del Editor del Registro

  3. Busque la máquina virtual de destino por nombre de host o IP dinámica (preferible) introduciéndola en el cuadro Escriba el nombre del objeto que desea seleccionar.

    Captura de pantalla del cuadro Escribir el nombre del objeto que se va a seleccionar en el cuadro de diálogo Seleccionar equipo.

  4. Introduzca las credenciales para la VM de destino.

  5. Realice los cambios necesarios en el registro.

Consola de servicios remotos

Nota

Los puertos TCP 135 o 445 deben estar abiertos para poder usar esta opción.

En el caso de las máquinas virtuales de Azure Resource Manager, tiene que abrir el puerto 5986 en el NSG. Para más información, consulte Grupos de seguridad.

En el caso de las máquinas virtuales de RDFE, debe tener un punto de conexión con un puerto privado 5986 y un puerto público. También tendrá que abrir ese puerto público en NSG.

  1. Desde otra máquina virtual en la misma red virtual, abra una instancia de Services.msc.

  2. Haga clic con el botón derecho en Servicios (Local).

  3. Seleccione Conectarse a otro equipo.

    Captura de pantalla de la opción Conectar a otro equipo en el menú contextual de Servicios (local).

  4. Escriba la dirección IP dinámica de la máquina virtual de destino.

    Captura de pantalla del cuadro de entrada IP dinámica en la opción Otro equipo en el cuadro de diálogo Seleccionar equipo.

  5. Realice los cambios necesarios en los servicios.

Pasos siguientes

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.