La forma más intuitiva de habilitar Escritorio remoto en Windows es usar una GUI. Para habilitar RDP en una computadora local, debe abrir el elemento del Panel de control "Sistema", ir a la pestaña "Configuración remota" y habilitar el Permitir conexiones remotas a esta computadora opción en la sección Escritorio remoto. Sin embargo, esto requiere acceso local a la computadora en la que desea habilitar RDP. Por lo general, puede solicitar esto al usuario (se requieren permisos de administrador local) o al soporte técnico local. Sin embargo, ¿qué hacer si nadie en la sucursal remota puede habilitar el Escritorio remoto localmente? De manera predeterminada, Escritorio remoto está deshabilitado en ambas versiones de escritorio de Windows y Windows Server.
Si desea habilitar Remote Desktop (RDP) de forma remota en un host remoto (servidor o computadora), pero no tiene acceso a la consola del dispositivo local, le mostraremos cómo hacerlo usando PowerShell.
Habilitar RDP mediante el servicio de registro remoto
Puede habilitar Escritorio remoto en una computadora remota usando el Editor del registro. Esto requiere:
- La computadora remota debe ser accesible a través de la red;
- Debe conocer las credenciales de una cuenta con permisos de administrador local en la computadora remota;
- El servicio de registro remoto debe estar ejecutándose en la computadora remota (puede habilitarlo a través del servicios.msc complemento o GPO).
Entonces, para habilitar el escritorio remoto a través del registro remoto, siga estos pasos:
- presione el Ganar + R combinación de teclas y en la ventana Ejecutar escriba regedit.exe > Bien;
- En el Editor del Registro seleccione Archivo > Conectar registro de red;
- Especifique el nombre de host o la dirección IP de la computadora remota. Si la computadora remota no pudo autorizarlo como el usuario actual, se le pedirá que ingrese las credenciales;
- El registro de la computadora remota aparecerá en el editor de registro (solo se puede acceder a las colmenas HKLM y HKEY_Users);
- Vaya a la siguiente clave de registro en la computadora remota: HKLMSISTEMACurrentControlSetControlTerminal Server. Cambie el valor DWORD de la fDenyTSConnections parámetro de 1 a 0;
- Si un firewall está habilitado en la computadora remota, debe habilitar la regla que permite las conexiones de escritorio remoto. Puede habilitarlo a través de GPO, a través de PowerShell Remoting (descrito en la siguiente sección de esta guía) o usando Psexec. En este último caso, se utilizan los siguientes comandos:
PsExec.exe \server1 -u contosoadmin -p password cmd netsh advfirewall firewall add rule name="allow RemoteDesktop" dir=in protocol=TCP localport=3389 action=allow shutdown –f –r –t 0
- Después de reiniciar, intente conectarse a la computadora remota a través de RDP.
¿Cómo habilitar RDP de forma remota con la herramienta Psexec?
Puede usar la herramienta de línea de comandos PSExec para habilitar Escritorio remoto en un dispositivo Windows remoto.
Descargue el kit de herramientas de PsExec desde el sitio web de microsoft y extraiga el archivo PSTools.zip a una carpeta local. Abra un símbolo del sistema y vaya al directorio PSTools:
CD c:PSPStools
Para habilitar RDP en una computadora remota en su dominio usando PSExec, ejecute el comando:
PsExec.exe /accepteula \RemoteComputerNameorIP reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
Luego habilite la regla para acceder al puerto RDP en el Firewall de Windows Defender:
PsExec.exe /accepteula \RemoteComputerNameorIP netsh firewall set service RemoteDesktop enable
Si la computadora remota está en un dominio o grupo de trabajo diferente, puede proporcionar un nombre de usuario con permisos de administrador para conectarse a la computadora remota:
PsExec.exe /accepteula \remote_computer -u administrator reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
Habilitar escritorio remoto de forma remota mediante PowerShell
Para habilitar RDP de forma remota, debe configurar y ejecutar el servicio WinRM (administración remota de Windows) en la computadora remota. El servicio WinRM está habilitado de manera predeterminada en todas las versiones de Windows Server a partir de Windows Server 2012. Sin embargo, WinRM está deshabilitado de manera predeterminada en los sistemas operativos de los clientes, como Windows 10.
Puede habilitar WinRM en equipos unidos a un dominio mediante GPO o localmente mediante PowerShell. La forma más fácil de habilitar el servicio WinRM en Windows 10/11 y permitir el acceso a través de PowerShell Remoting es usando el comando:
Enable-PSRemoting
WinRM se ha actualizado para recibir solicitudes.
El tipo de servicio de WinRM cambió correctamente.
Se inició el servicio WinRM.
A continuación, debe verificar si WinRM está habilitado en la computadora remota y si se permiten las conexiones a través de PSRemoting. Ejecute el comando:
Test-WsMan 192.168.31.102
Si responde el servicio WinRM en la computadora remota, recibirá esta respuesta:
Si el servicio está deshabilitado o el Firewall de Windows Defender bloquea el acceso, aparecerá un error:
Test-WsMan WSManFault: WinRM no puede completar la operación. Verifique que el nombre de la computadora especificada sea válida, que se pueda acceder a la computadora a través de la red y que una excepción de firewall para el servicio WinRM esté habilitada y permita el acceso desde esta computadora. De forma predeterminada, la excepción del cortafuegos WinRM para perfiles públicos limita el acceso a equipos remotos dentro de la misma subred local.
Por lo tanto, para habilitar Remote Desktop de forma remota a través de PowerShell, la computadora remota debe cumplir con los siguientes requisitos:
- El servicio WinRM debe iniciarse;
- Debe tener permisos de administrador en el dispositivo remoto;
-
El Firewall de Windows Defender con seguridad avanzada debe estar deshabilitado o las reglas que permiten el acceso remoto a través de PowerShell Remoting deben estar habilitadas.
Suponga que desea habilitar RDP de forma remota en Windows Server 2012 R2/2016/2019. Abra la consola de PowerShell en su computadora y ejecute el siguiente comando para conectarse a su servidor de forma remota:
Enter-PSSession -ComputerName server.domain.local -Credential domainadministrator
Consejo. Los cmdlets de PowerShell Enter-PSSession e Invoke-Command le permiten ejecutar comandos y scripts en una computadora remota a través de WinRM.
Entonces, ha establecido una sesión remota con una computadora y ahora puede ejecutar comandos de PowerShell en ella. Para habilitar Escritorio remoto, solo necesita cambiar el parámetro de registro fDenyTSConnections de 1 a 0 en el equipo remoto. Ejecute el comando:
Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal Server'-name "fDenyTSConnections" -Value 0
Cuando RDP está habilitado de esta manera (a diferencia del método GUI), la regla que permite conexiones RDP remotas no está habilitada en las reglas de Firewall de Windows. Para permitir conexiones RDP entrantes en el Firewall de Windows, ejecute el comando:
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Insinuación. Por defecto, TCP/3389 El puerto se utiliza para las conexiones de escritorio remoto entrantes en Windows. Puede cambiar el número de puerto RDP predeterminado a través del registro usando el Número de puerto parámetro en la clave de registro HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp.
Si por alguna razón falta esta regla de firewall, puede crearla manualmente usando netsh:
netsh advfirewall firewall add rule name="allow RemoteDesktop" dir=in protocol=TCP localport=3389 action=allow
o usando Powershell:
New-NetFirewallRule -DisplayName 'Allow RemoteDesktop' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('3389')
Si desea restringir hosts o subredes que pueden conectarse a Escritorio remoto, puede crear una regla personalizada que permita que Firewall de Windows acepte únicamente conexiones RDP entrantes desde direcciones IP, subredes o rangos de IP específicos. En este caso, en lugar del comando anterior, debe usar el siguiente:
New-NetFirewallRule -DisplayName “Restrict_RDP_access" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.1.0/24,192.168.2.100 -Action Allow
Si necesita habilitar la autenticación RDP segura (NLA: autenticación de nivel de red), ejecute el comando:
Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -name "UserAuthentication" -Value 1
Ahora puede verificar la disponibilidad del puerto TCP 3389 en el host remoto desde su computadora. Ejecute el comando:
Test-NetConnection 192.168.1.11 -CommonTCPPort rdp
Debería haber un resultado como este:
Nombre de la computadora: 192.168.1.11
Dirección remota: 192.168.1.11
Puerto remoto: 3389
Alias de interfaz: Ethernet0
Dirección de origen: 192.168.1.90
TcpTestSucceeded: Verdadero
Esto significa que RDP en el host remoto está habilitado y puede establecer una conexión de escritorio remoto mediante mstsc.exe, RDCMan o cualquier cliente RDP alternativo.
Insinuación. Si necesita habilitar RDP en varias computadoras remotas a la vez, puede usar el siguiente script de PowerShell:
$comps = “Server1”, “Server2”, “Server3”, “Server4” Invoke-Command –Computername $comps –ScriptBlock {Set-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal Server" -Name "fDenyTSConnections" –Value 0} Invoke-Command –Computername $comps –ScriptBlock {Enable-NetFirewallRule -DisplayGroup "Remote Desktop"}
De forma predeterminada, solo los miembros del grupo de administradores locales pueden conectarse a través del RDP de forma remota. Para permitir conexiones RDP para usuarios que no son administradores, simplemente agréguelos al local Usuarios de escritorio remoto grupo.
Puede agregar los usuarios deseados a la Usuarios de escritorio remoto localmente mediante el complemento Usuarios y grupos locales de MMC (LUSRMGR.MSC).
O puede cambiar la membresía del grupo de usuarios de RD de forma remota mediante la comunicación remota de PowerShell dentro de Enter-PSSession. Use el siguiente comando para agregar el usuario de dominio ASmith al grupo local:
net localgroup "remote desktop users" /add "contosoasmith”
Alternativamente, en lugar del cmdlet Enter-PSSession, puede usar otro comando de PS Remoting Invoke-Command:
Invoke-Command -Scriptblock {net localgroup "remote desktop users" /add "contosoasmith”} -Computer Server1.contoso.com
¿Cómo habilitar el escritorio remoto a través de WMI?
Si desea habilitar RDP en una computadora remota donde WinRM está deshabilitado (por ejemplo, en una computadora normal con Windows 10), puede usar el comando WMI PowerShell.
Consejo. Para acceder al espacio de nombres WMI en la computadora remota, el puerto TCP 135 debe estar abierto y la cuenta debe tener permisos de acceso WMI y DCOM.
Para verificar si el acceso RDP está habilitado en la computadora remota 192.168.1.90, ejecute el comando (vea el valor de la propiedad AllowTSConnections):
Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace rootCIMV2TerminalServices -Computer 192.168.1.90 -Authentication 6
Para habilitar RDP y agregar una regla de excepción de Firewall de Windows, ejecute el siguiente comando:
(Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace rootCIMV2TerminalService