Cómo cambiar el puerto de escucha por defecto (3389) para Escritorio Remoto de Windows (RDP). Cómo cambiarlo mediante comandos PowerShell, para automatizar el proceso y poder ejecutarlo en varios equipos.
- Comprobar puerto actual de escucha para Escritorio Remoto RDP.
- Cambiar puerto por defecto 3389 para conexiones de Escritorio Remoto Remote Desktop RDP.
- Acceso externo por Escritorio Remoto RDP con puerto diferente al estándar 3389.
Comprobar puerto actual de escucha para Escritorio Remoto RDP
Para comprobar el puerto de escucha que tenemos configurado actualmente para Escritorio Remoto (anteriormente llamado Terminal Server, protocolo RDP), podemos ejecutar, desde una ventana de PowerShell, el siguiente comando:
1 |
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" |
Vemos que nos devuelve información interesante, como:
- PortNumber: puerto actual de escucha para conexiónes de Escritorio Remoto RDP. Por defecto el 3389.
- PSParentPath: clave del registro donde se configuran las opciones de Escritorio Remoto.
Cambiar puerto por defecto 3389 para conexiones de Escritorio Remoto Remote Desktop RDP
Para cambiar el puerto por defecto modificaremos la clave de registro:
1 |
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber |
Como podemos comprobar, la clave anterior coincide con la devuelta por el comando anterior (PSParentPath).
Para modificar el valor «PortNumber», abriremos una ventana de PowerShell como administradores y ejecutaremos los siguientes comandos (también añadiremos las reglas necesarias al cortafuegos de Windows):
1 2 3 4 |
$puerto = 5252 Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" -Value $puerto New-NetFirewallRule -DisplayName 'RDPPORTLatest-TCP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort $puerto New-NetFirewallRule -DisplayName 'RDPPORTLatest-UDP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol UDP -LocalPort $puerto |
En este ejemplo, se establecerá el puerto 5252 para Escritorio Remoto. Es importante mencionar que se debe asignar un puerto que no esté usado por otra aplicación.
Si todo es correcto, nos mostrará el siguiente texto:
En caso de no abrir la ventana de PowerShell como privilegios elevados, nos mostrará este error:
1 2 3 4 5 |
Set-ItemProperty : Acceso denegado al Registro solicitado. En línea: 1 Carácter: 1 + Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Termin ... + CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...tations\RDP-Tcp:String) [Set-ItemProperty], SecurityException + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand |
Si queremos volver a comprobar el puerto de escucha actual, ejecutaremos:
1 |
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" |
Que en este caso nos devolverá PortNumber : 5252.
Acceso externo por Escritorio Remoto RDP con puerto diferente al estándar 3389
Una vez modificado el puerto de defecto 3389 por otro (en nuestro caso el 5252), cuando queramos conectarnos desde fuera, usando Conexión a Escritorio remoto (mstsc.exe), introduciremos, en «Equipo» el nombre del equipo (o la dirección IP), seguda de dos puntos y el número de puerto, por ejemplo:
oficina.proyectoa.com:5252
En caso de no especificar el puerto con :5252, mstsc realizará la conexión por el puerto estándar 3389.