Se produce un error interno al intentar conectarse a una máquina virtual de Azure a través de Escritorio remoto
Se aplica a: ✔️ Máquinas virtuales de Windows
En este artículo se describe un error que puede experimentar al intentar conectarse a una máquina virtual (VM) en Microsoft Azure.
Nota
¿Le ha resultado útil este artículo? Su entrada es importante para nosotros. Use el botón Comentarios de esta página para informarnos de lo bien que este artículo ha funcionado para usted o cómo podemos mejorarlo.
Síntomas
No se puede conectar a una máquina virtual de Azure mediante el Protocolo de escritorio remoto (RDP). La conexión se queda bloqueada en la sección Configurando remoto o recibe el siguiente mensaje de error:
- RDP internal error (Error interno de RDP)
- An internal error has occurred (Se ha producido un error interno)
- This computer can't be connected to the remote computer (Este equipo no se puede conectar al equipo remoto). Try connecting again (Intente conectarse de nuevo). Si el problema no desaparece, póngase en contacto con el propietario del equipo remoto o con el administrador de red
Causa
Este error puede ocurrir debido a uno de los siguientes motivos:
- Es posible que la máquina virtual haya sido atacada.
- No se puede acceder a las claves locales de cifrado RSA.
- El protocolo TLS está deshabilitado.
- El certificado está dañado o ha expirado.
Solución
Para solucionar este problema, complete los pasos de las secciones siguientes. Antes de empezar, tome una instantánea del disco del sistema operativo de la máquina virtual afectada como copia de seguridad. Para obtener más información, consulte Instantánea de un disco.
Comprobación de la seguridad de RDP
En primer lugar, compruebe si el grupo de seguridad de red para el puerto RDP 3389 no es seguro (abierto). Si no está seguro y muestra * como la dirección IP de origen de entrada, restrinja el puerto RDP a la dirección IP de un usuario especular y, a continuación, pruebe el acceso RDP. Si no funciona, complete los pasos de la sección siguiente.
Uso del control serie
Use la consola serie o repare la máquina virtual sin conexión conectando el disco del sistema operativo de la máquina virtual a una máquina virtual de recuperación.
Para empezar, conéctese a la consola serie y abra una instancia de PowerShell. Si la consola serie no está habilitada en la máquina virtual, vaya a la sección de reparación de la máquina virtual sin conexión.
Paso: 1 Comprobar el puerto del RDP
En una instancia de PowerShell, use NETSTAT para comprobar si otras aplicaciones utilizan el puerto 3389:
Netstat -anob |more
Si Termservice.exe usa dicho puerto, vaya al paso 2. Si otro servicio o aplicación que no sea Termservice.exe usa el puerto 3389, siga estos pasos:
Detenga el servicio para la aplicación que utiliza el servicio 3389:
Stop-Service -Name <ServiceName> -Force
Inicie el servicio del terminal:
Start-Service -Name Termservice
Si la aplicación no se puede detener o si este método no le resulta válido, cambie el puerto de RDP:
Cambie el puerto:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -name PortNumber -value <Hexportnumber> Stop-Service -Name Termservice -Force Start-Service -Name Termservice
Establezca el firewall del nuevo puerto:
Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
Actualice el grupo de seguridad de red del nuevo puerto en el puerto RDP de Azure Portal.
Paso 2: Establecer los permisos correctos en el certificado autofirmado de RDP
En una instancia de PowerShell, ejecute los siguientes comandos, uno a uno, para renovar el certificado autofirmado de RDP:
Import-Module PKI Set-Location Cert:\LocalMachine $RdpCertThumbprint = 'Cert:\LocalMachine\Remote Desktop\'+((Get-ChildItem -Path 'Cert:\LocalMachine\Remote Desktop\').thumbprint) Remove-Item -Path $RdpCertThumbprint Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
Si no puede renovarlo mediante este método, pruebe a hacerlo de forma remota:
Desde una máquina virtual que tenga conectividad con la máquina con problemas, escriba mmc en el cuadro Ejecutar para abrir Microsoft Management Console.
En el menú Archivo, seleccione Agregar o quitar complemento, seleccione Certificadosy, después, seleccione Agregar.
Seleccione Cuentas de equipo , seleccione Otro equipo y, después, agregue la dirección IP de la máquina virtual con problemas.
Vaya a la carpeta Escritorio remoto/Certificados, haga clic con el botón derecho en el certificado y seleccione Eliminar.
En una instancia de PowerShell, desde la consola serie, reinicie el servicio de configuración de Escritorio remoto:
Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
Restablezca el permiso para la carpeta MachineKeys.
remove-module psreadline md c:\temp icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt Restart-Service TermService -Force
Reinicie la máquina virtual e intente iniciar una conexión mediante Escritorio remoto a la máquina virtual. Si el error no desaparece, vaya al paso siguiente.
Paso 3: Habilitar todas las versiones de TLS compatibles
El cliente de RDP usa TLS 1.0 como protocolo predeterminado. Sin embargo, es posible cambiarlo por TLS 1.1, que se ha convertido en el nuevo estándar. Si TLS 1.1 está deshabilitado en la máquina virtual, se producirá un error en la conexión.
En una instancia de CMD, habilite el protocolo TLS:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Para evitar que la directiva de AD sobrescriba los cambios, detenga temporalmente la actualización de la directiva de grupo:
REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f
Reinicie la máquina virtual para que los cambios surtan efecto. Si se resuelve el problema, ejecute el siguiente comando para volver a habilitar la directiva de grupo:
sc config gpsvc start= auto sc start gpsvc gpupdate /force
Si el cambio se revierte, significa que hay una directiva de Active Directory en el dominio de la empresa. Para que el problema no vuelva a aparecer tiene que cambiar dicha política.
Reparación de la máquina virtual sin conexión
Conecte el disco del sistema operativo a una máquina virtual de recuperación.
- Conecte el disco del sistema operativo a una máquina virtual de recuperación.
- Después de que el disco del sistema operativo esté conectado a una máquina virtual de recuperación, asegúrese de que el disco aparece marcado como En línea en la consola de administración de discos. Anote la letra de unidad que se asigna al disco del sistema operativo conectado.
- Inicie una conexión mediante el Escritorio remoto a la máquina virtual de recuperación.
Habilitación del registro de volcado de memoria y Serial Console
Para habilitar el registro de volcado de memoria y Serial Console, ejecute el siguiente script.
Abra una sesión de símbolo del sistema con privilegios elevados (Ejecutar como administrador).
Ejecute el siguiente script:
En este script, se supone que la letra de unidad que se asigna al disco del sistema operativo conectado es F. Reemplácela por el valor apropiado para su máquina virtual.
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REM Enable Serial Console bcdedit /store F:\boot\bcd /set {bootmgr} displaybootmenu yes bcdedit /store F:\boot\bcd /set {bootmgr} timeout 5 bcdedit /store F:\boot\bcd /set {bootmgr} bootems yes bcdedit /store F:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON bcdedit /store F:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200 REM Suggested configuration to enable OS Dump REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
Restablezca el permiso para la carpeta MachineKeys
Abra una sesión de símbolo del sistema con privilegios elevados (Ejecutar como administrador).
Ejecute el siguiente script. En este script, se supone que la letra de unidad que se asigna al disco del sistema operativo conectado es F. Reemplácela por el valor apropiado para su máquina virtual.
Md F:\temp icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt
Habilitación de todas las versiones de TLS compatibles
Abra una sesión de símbolo del sistema con privilegios elevados (Ejecutar como administrador) y ejecute los siguientes comandos. En el siguiente script se supone que la letra de unidad que se asigna al disco del sistema operativo conectado es F. Reemplácela por el valor apropiado para su máquina virtual.
Compruebe que TLS está habilitado:
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Si la clave no existe o su valor es 0, habilite el protocolo, para lo que debe ejecutar los siguientes scripts:
REM Enable TLS 1.0, TLS 1.1 and TLS 1.2 REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Habilite NLA:
REM Enable NLA REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
Desasocie el disco del sistema operativo y vuelva a crear la máquina virtual y, a continuación, compruebe si se ha resuelto el problema.
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.