Solución de problemas de RDP


En algunas situaciones, es posible que no puedas conectarte a tu instancia de máquina virtual (VM) de Windows de Compute Engine con RDP. Esto puede deberse a errores de configuración, errores de red o es posible que el proceso de inicio no se haya completado.

Este documento describe una serie de consejos y enfoques para solucionar problemas comunes de RDP.

Asegúrese de que la máquina virtual esté en línea y lista

Una vez que la máquina virtual haya terminado de iniciarse, lo que puede tardar unos minutos, confirme su estado mediante uno de los siguientes métodos:

Puerto serie 1

El puerto serie 1 se utiliza para registrar la actividad del sistema y de las aplicaciones. Vea su resultado para determinar que su VM ha terminado de iniciarse y si los servicios se han iniciado correctamente.

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Haga clic en el nombre de la VM cuyos registros desea ver. Se abre la página de detalles de la instancia de VM.

  3. En registros , seleccione Puerto serie 1 .

  4. Revise la salida del puerto serie 1 y busque una salida similar a la siguiente:

    BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    
    UEFI: Attempting to start image.
    Description: Windows Boot Manager
    FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    OptionNumber: 3.
    
    2021/04/13 10:50:22 GCEGuestAgent: GCE Agent Started (version 20210128.00)
    2021-04-13T10:50:23.4621Z OSConfigAgent Info: OSConfig Agent (version 20210217.00.0+win@1) started.
    2021/04/13 10:50:42 GCEMetadataScripts: Starting startup scripts (version 20200129.00).
    2021/04/13 10:50:42 GCEMetadataScripts: No startup scripts to run.
    

La salida que contiene GCEGuestAgent o GCEMetadataScripts confirma que Windows se ha iniciado correctamente. Intente volver a conectarse a su VM usando RDP.

Puerto serie 2

El puerto serie 2 proporciona una conexión interactiva a la VM y también muestra la salida de la Consola administrativa especial (SAC) . Puede utilizar la consola serie 2 para determinar si los servicios del sistema se han iniciado correctamente.

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Haga clic en el nombre de la VM cuyos registros desea ver. Se abre la página de detalles de la instancia de VM.

  3. En registros , expanda Más y luego haga clic en Puerto serie 2 (consola) .

  4. Revise el resultado del puerto serie 2 y busque un resultado similar al siguiente:

    BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    
    UEFI: Attempting to start image.
    Description: Windows Boot Manager
    FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    OptionNumber: 3.
    
    <machine-info>
    <name>WINDOWS</name>
    <guid>b7ab5000-4000-e000-e000-bc5a738da000</guid>
    <processor-architecture>AMD64</processor-architecture>
    <os-version>10.0</os-version>
    <os-build-number>17763</os-build-number>
    <os-product>Windows Server 2019 Datacenter</os-product>
    <os-service-pack>None</os-service-pack>
    </machine-info>
    Computer is booting, SAC started and initialized.
    Use the "ch -?" command for information about using channels.
    EVENT: The CMD command is now available.
    SAC>
    

La salida que contiene SAC started and initialized o CMD command is now available y confirma que Windows se ha iniciado correctamente. Intente volver a conectarse a su VM usando RDP.

Captura de pantalla de la máquina virtual

Las capturas de pantalla de VM proporcionan una representación visual del estado de una VM, similar a un monitor de computadora.

  1. Antes de poder realizar una captura de pantalla de su VM, debe habilitar la pantalla virtual de la VM. Si aún no ha habilitado la pantalla virtual, consulte Habilitación de pantallas virtuales .

  2. Haz una captura de pantalla. Para obtener más información, consulte Captura de una captura de pantalla desde una VM .

  3. Revise la captura de pantalla para ver que la instancia esté lista.

Compare su captura de pantalla con la siguiente para determinar el estado actual:

Si Windows no se inició correctamente después de unos minutos, revise la guía de solución de problemas de Windows .

Verifique la conectividad entre su estación de trabajo y la instancia de VM

Si tiene problemas al conectar su máquina virtual Windows, es una buena práctica identificar si el problema está en la estación de trabajo que está utilizando para conectarse o en la máquina virtual a la que se está conectando. Verifique la conectividad entre su estación de trabajo y la VM ejecutando el siguiente comando desde su estación de trabajo Linux, macOS o Windows:

curl -v telnet://DESTINATION_IP_ADDRESS:PORT

Reemplace lo siguiente:

  • DESTINATION_IP_ADDRESS : la dirección IP de su máquina virtual Windows
  • PORT : el puerto configurado para conectarse a través de RDP en su máquina virtual Windows

También puede utilizar pruebas de conectividad para una verificación adicional de la conectividad entre la instancia de VM y otras Google Cloud productos y servicios. Además, también podría resultar útil configurar un host bastión en la misma subred para aislar problemas de conectividad RDP en la instancia de VM.

Verifique la contraseña de su instancia de Windows

Cada instancia de Compute Engine Windows debe tener una contraseña local configurada si aún no está en un dominio o imagen personalizada. Confirme que tiene la contraseña correcta configurada conectándose a la máquina virtual a través de la herramienta de línea de comandos Google Cloud CLI o la consola de Google Cloud. Para obtener más información, consulte Conexión al SAC de una máquina virtual Windows .

Si tiene problemas para conectarse, intente crear o restablecer la contraseña. Para obtener más información, consulte Creación de contraseñas para máquinas virtuales Windows .

Comprueba si estás usando Windows Server Core

Al conectarse mediante RDP, si recibe una ventana del símbolo del sistema con un fondo en blanco, probablemente indique que está utilizando Windows Server Core . Para confirmar que está ejecutando el siguiente comando:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType

Server Core en su resultado confirma que está utilizando la edición Windows Core.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    InstallationType    REG_SZ    Server Core

Si necesita una interfaz gráfica de usuario para su carga de trabajo, considere crear una instancia de Windows que contenga Desktop Experience en lugar de Server Core. Alternativamente, puede revisar la documentación de Microsoft para administrar el servidor Windows Core .

Verifique las reglas de su firewall de VPC

Compute Engine aprovisiona automáticamente nuevos proyectos con una regla de firewall que permite el tráfico RDP. Si tiene un proyecto existente o ha modificado las configuraciones, es posible que la regla de firewall predeterminada que permite RDP no exista. Confirme que una regla permita que el tráfico RDP se conecte a la red en la que se encuentra su instancia afectada.

Para comprobar si la regla de firewall default-allow-rdp existe en tu proyecto, consulta la página de reglas de firewall o ejecuta el siguiente comando CLI de gcloud:

gcloud compute firewall-rules list

Para crear una nueva regla si no existe ninguna, cree una regla con el siguiente comando:

gcloud compute firewall-rules create allow-rdp --allow tcp:3389

Verificar la dirección IP externa

Asegúrese de conectarse a la dirección IP externa correcta para la instancia. Vea la IP de la instancia desde la página de la instancia de VM o usando el siguiente comando CLI de gcloud:

gcloud compute instances list

Uso de los servicios de escritorio remoto (RDS) de Windows

Si tiene instalados los Servicios de Escritorio remoto de Windows (anteriormente conocidos como Servicios de Terminal) en su instancia, se aplican las condiciones de las Licencias de acceso de cliente (CAL). Con estas CAL, las conexiones RDP fallarán bajo cualquiera de las siguientes condiciones:

  • Has utilizado todas tus licencias disponibles.
  • Su licencia está instalada, pero no configurada o activada correctamente
  • Su período de prueba de RDS de 180 días ha caducado

Los síntomas de que es posible que no tenga suficientes licencias válidas incluyen mensajes como:

  • Esta sesión remota se desconectó porque no hay servidores de licencias de Escritorio remoto disponibles para proporcionar una licencia.
  • La sesión remota se desconectó debido a un error relacionado con la licencia en el servidor terminal.
  • La sesión remota se desconectó porque no hay licencias de acceso de cliente de Escritorio remoto disponibles para esta computadora.

Si sus conexiones RDP fallan, puede usar el interruptor de administrador para conectarse a la instancia con fines administrativos. Esto se puede hacer en una máquina con Windows utilizando el cliente nativo de Conexión a Escritorio remoto.

%SystemRoot%\System32\mstsc.exe /admin

Se incluyen dos sesiones de escritorio remoto simultáneas para administración con la imagen de Windows Server y SQL Server bajo demanda.

Para resolver problemas con las conexiones RDP, compre nuevas licencias RDS para su instancia. Para obtener más detalles sobre las CAL, revise la documentación de Microsoft . Alternativamente, si no se requieren Servicios de Escritorio remoto, desinstale el servicio y use conexiones RDP regulares.

Validar la configuración y los recursos a nivel del sistema operativo

Si el entorno invitado y las configuraciones de la instancia son correctos, es posible que el sistema operativo de la instancia esté mal configurado. Además, sin los recursos adecuados, es posible que no se pueda establecer una conexión RDP. Para validar la configuración a nivel del sistema operativo, conéctese al SAC de Windows :

Asegúrese de que la VM tenga los recursos adecuados

Verifique que la CPU, la memoria, el uso del disco y el espacio disponible en el disco no estén alcanzando sus límites. Estos datos se pueden inspeccionar viendo las métricas de observabilidad en la consola de Google Cloud. Algunas métricas están disponibles solo para máquinas virtuales que tienen instalado Ops Agent . Alternativamente, si Ops Agent no está instalado, use los siguientes comandos cuando esté conectado a SAC :

Uso de CPU, uso de memoria, uso de disco y capacidad de disco

  • Uso de CPU:
    typeperf "\Processor(_Total)\% Processor Time" -sc 5
  • Uso de memoria:
    typeperf "\Memory\% Committed Bytes In Use" -sc 5
  • Uso del disco:
    typeperf "\LogicalDisk(*)\% Idle Time" -sc 5
  • Capacidad del disco:
    fsutil volume diskfree C:

Los siguientes son los usos de recursos recomendados para una conexión RDP; sin embargo, son solo estimaciones y pueden variar entre instancias.

  • CPU: <80%
  • Memoria: <80%
  • Espacio en disco: >20%
  • Disco inactivo: >50%

Si alguna de las estimaciones sugeridas está alcanzando sus límites, puede modificar ese recurso para la instancia de VM. Para editar las propiedades de la VM, vea cómo editar el tipo de máquina de una instancia de VM y aumentar el tamaño de un disco persistente .

Verifique la configuración del sistema operativo

Conéctese al SAC de la VM y ejecute los siguientes comandos para asegurarse de que la instancia acepte conexiones:

  1. Verifique que el adaptador de Ethernet esté habilitado:

    • Dominio:
      netsh interface show interface
    • Aprobado: el estado de administrador está configurado en Habilitado en el nombre de la interfaz etiquetado como Ethernet
    • Fallo: el estado de administrador está configurado en Desactivado en el nombre de la interfaz etiquetado como Ethernet
    • Solución: habilite el adaptador de Ethernet:
      netsh interface set interface Ethernet admin=enabled
  2. Verifique que la instancia tenga una configuración de IP válida:

    • Dominio:
      ipconfig /all
    • Pass: Adaptador Ethernet Ethernet mostrará una dirección IPv4 de la subred a la que está asignada la instancia.
    • Error: no hay dirección IPv4 o una dirección que no coincide con la que se muestra en la consola de Google Cloud.
    • Solución: continúe con el siguiente paso.
  3. Verifique que DHCP esté habilitado en la instancia:

    • Dominio:
      netsh interface ipv4 show addresses
    • Pass: La salida bajo Ethernet contiene DHCP habilitado: Sí .
    • Fallo: La salida en Ethernet contiene DHCP habilitado: No.
    • Solución: habilite DHCP en el adaptador Ethernet:
      netsh interface ipv4 set address Ethernet dhcp
  4. Verifique que el 'Servicio de Escritorio remoto' se esté ejecutando:

    • Dominio:
      net start | find "Remote Desktop Services"
    • Pase: Servicio de escritorio remoto
    • Error: (falta el servicio de escritorio remoto en la salida)
    • Solución: inicie los servicios de escritorio remoto:
      net start "Remote Desktop Services"
  5. Verifique que las conexiones remotas estén habilitadas:

    • Dominio :
      reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
    • Pasar : fDenyTSConnections REG_DWORD 0x0
    • Fallo : fDenyTSConnections REG_DWORD 0x1
    • Solución : habilite las conexiones de escritorio remoto en el registro:
      reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 0
  6. Asegúrese de que el firewall de Windows tenga habilitadas las conexiones a escritorio remoto:

    • Dominio :
      netsh advfirewall firewall show rule name="Remote Desktop -User Mode (TCP-In)"
    • Pasar : Habilitado: Sí, Dirección: En, Perfiles: Público, Agrupación: Escritorio remoto, IP local: Cualquiera, IP remota: Cualquiera, Protocolo: TCP, Puerto local: 3389, Puerto remoto: Cualquiera, Travesía de borde: No, Acción: Permitir

    • Fallo : (resultados inesperados, como habilitado = No)

    • Solución : habilite la regla de firewall predeterminada "Escritorio remoto" dentro del Firewall de Windows:

      netsh advfirewall firewall set rule group="remote desktop" new enable=Yes

  7. Verifique qué número de puerto está configurado para las conexiones RDP en la instancia remota:

    • Dominio :
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
    • Pasar : Número de puerto REG_DWORD [NÚMERO DE PUERTO]
    • Fallo : (número de puerto inesperado)
    • Solución : configure el número de puerto en el registro requerido para RDP:

      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /f /v PortNumber /t REG_DWORD /d [PORT NUMBER]

  8. Verifique que otra aplicación no esté intentando usar el mismo puerto:

    • Dominio :
      netstat -ano | find "3389"
    • Pass : busque una entrada para el puerto RDP asignado con un estado de escucha . El servicio coincidente se puede encontrar utilizando el identificador de proceso (PID) mediante el siguiente comando:
      tasklist /svc | find ""
      donde PID es el identificador del comando anterior. La salida solo debe devolver Termservice .
    • Fallo : todo lo que no sea Termservice está utilizando el puerto asignado.
    • Solución : Configure la aplicación/servicio para utilizar otro número de puerto.
  9. Asegúrese de que la cuenta de usuario conectada tenga permisos para conexiones remotas:

    • Dominio :
      net localgroup "Remote Desktop Users"
    • Pasar : (nombre de usuario local/de dominio de destino en la lista resultante)
    • Fallo : (falta el nombre de usuario local/de dominio de destino)
    • Solución : agregue la regla "Usuarios de escritorio remoto" a un usuario del dominio:

      net localgroup "Remote Desktop Users" /add [DOMAIN\USERNAME]

      El dominio solo es necesario para cuentas de usuario en un sistema unido a un dominio diferente. Para cuentas locales, especifique solo el nombre de usuario.

  10. Verifique que la negociación de seguridad cliente/servidor esté configurada en su valor predeterminado :

    • Dominio :
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer
    • Pasar : SecurityLayer REG_DWORD 0x1
    • Fallo : SecurityLayer REG_DWORD 0x0 (o 0x2)
    • Solución : establezca el valor de negociación de seguridad en el registro:
      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 1 /f
  11. En situaciones en las que su instancia está conectada a un dominio de Active Directory, pero no se pudo establecer la conexión, es posible que reciba el siguiente error al intentar acceder a su instancia:

    The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA.
    

    Verifique que la autenticación de nivel de red (NLA) del usuario esté configurada en su valor predeterminado :

    • Dominio :
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication
    • Pasar : autenticación de usuario REG_DWORD 0x0
    • Error : autenticación de usuario REG_DWORD 0x1
    • Solución : establezca el valor de autenticación de nivel de red en el registro:
      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
  12. Verifique que el tamaño de su MTU no sea mayor que el MTU de la red:

    • Dominio :
      netsh interface ipv4 show subinterfaces
    • Pass : Cuando el número después de la MTU coincide con la MTU de la red VPC.
    • Fallo : cuando el número después de MTU es mayor que el MTU de la red VPC.
    • Solución : configure la MTU de la interfaz en la MTU de la red VPC:

      netsh interface ipv4 set subinterface Ethernet mtu=MTU_OF_VPC_NETWORK

      Para obtener más información sobre las incompatibilidades de tamaño de MTU, consulte nuestra documentación sobre fragmentación de paquetes .

  13. Si intenta conectarse a la máquina virtual mediante RDP y la máquina virtual muestra la pantalla de distribución del teclado, deberá seleccionar un idioma conectándose a Windows SAC. Para seleccionar un idioma, complete los siguientes pasos:

    1. Conéctese al SAC .
    2. Abra Powershell escribiendo powershell .
    3. Obtenga la cadena de idioma correcta.

      Get-WinUserLanguageList
    4. Establezca el diseño deseado. Reemplace LANGUAGE_TAG con el diseño de idioma que desee (por ejemplo, en-US ).

      Set-WinUserLanguageList -LanguageList LANGUAGE_TAG -force
    5. Reinicie su instancia.

      shutdown -r -t 0
  14. Para los errores de RDP en la pantalla de inicio de sesión que mencionan you need the right to sign in through Remote Desktop Services o you must be granted the Allow log on through Terminal Services right , el grupo Usuarios o Administradores de Escritorio remoto se eliminó de la configuración de Política de computadora local que se encuentra en Permitir inicio de sesión a través de Servicios de Escritorio remoto o SeRemoteInteractiveLogonRight .

  15. Verifique que no falten permisos que bloqueen la autenticación de certificados:

    • Dominio :
      icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"
    • Pasar : La salida se parece a Todos:(R,W) BUILTIN\Administradores:(F)
    • Error : la salida no coincide con Todos:(R,W) BUILTIN\Administradores:(F)
  16. Asegúrese de que la configuración de su cliente de protección antivirus/endpoint permita el número de puerto y los servicios configurados.

Verificar los límites de tiempo de espera de la sesión

Si puede establecer una conexión RDP pero se desconecta después de un tiempo con un mensaje que menciona que su temporizador expiró, verifique que los siguientes valores sean los esperados:

Ruta de registro: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Claves de registro:

  • MaxDisconnectionTime
  • MaxIdleTime
  • MaxConnectionTime
  • MaxDisconnectionTime
  • RemoteAppLogoffTimeLimit

Estos valores se establecen en milisegundos. Si estas claves faltan en su registro, entonces no hay límites de sesión en su instancia de VM. Si estas claves están presentes en su registro pero sus valores están establecidos en 0 , entonces su sesión nunca caducará.

Solucionar problemas de inicio de Windows

Si los pasos de solución de problemas anteriores no han resuelto su problema de conexión RDP, es posible que su instancia de Windows no se esté iniciando o ejecutando correctamente. En este caso, revise nuestra guía para solucionar problemas de Windows .

¿Qué sigue?