把远程桌面从默认的 TCP 3389 移到其他端口,是减少公网 Windows 服务器被自动化程序不停尝试登录最快速的方法之一。本文说明如何用 PowerShell 修改 Windows Server RDP 端口(适用 2016、2019、2022),在切换前先于 Windows 防火墙开放新端口,万一出错也能通过 VNC 控制台安全还原。JUSTG 位于东京、首尔、莫斯科的云服务器以及 JUSTG 独立服务器皆适用。示例使用端口 40125、服务器 IP 203.0.113.10。
步骤 1:为远程桌面选择未被使用的端口
请在 1025 到 49151 之间挑一个没有其他程序使用的号码。49152–65535 是 Windows 对外连接使用的动态范围,建议避开。先确认目前的 RDP 端口,再确认新端口没有被占用(第二行命令应该没有任何输出):
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber
Get-NetTCPConnection -LocalPort 40125 -ErrorAction SilentlyContinue开始之前,先在另一个浏览器标签页打开 VNC 控制台:登录客户中心 → My Services(我的服务)→ 打开该 VPS(Product Details 页面)→ 在“Server Information”标签页的 VPS 面板中点击“VNC”。同一个 VNC 控制台也可在 Enduser Panel 中打开(Manage 卡片 → Virtualizor → “Enduser Panel”)。新端口若连不上,就靠它回到系统。
步骤 2:先在 Windows 防火墙开放新的 RDP 端口
一定要先放行新端口再改注册表,否则重启远程桌面服务后就会被挡在门外。RDP 通过 TCP 传输会话,并使用 UDP 改善高延迟网络下的体验,所以两条规则都要创建:
$port = 40125
New-NetFirewallRule -DisplayName "RDP custom TCP $port" -Direction Inbound -Protocol TCP -LocalPort $port -Action Allow
New-NetFirewallRule -DisplayName "RDP custom UDP $port" -Direction Inbound -Protocol UDP -LocalPort $port -Action Allow若服务器前面还有其他防火墙(例如独立服务器的硬件防火墙),也要在那里开放相同的端口。
步骤 3:修改注册表 PortNumber 并重新启动 TermService
RDP 监听的端口记录在 RDP-Tcp 注册表项的 PortNumber 值。修改后重新启动 Remote Desktop Services 服务;因为 UmRdpService 依赖于它,必须加上 -Force:
$port = 40125
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value $port
Restart-Service -Name TermService -Force步骤 4:以“IP:端口”连接并验证
在远程桌面客户端输入服务器地址,后面加上冒号与端口。也可以在 PowerShell 一次完成测试并打开客户端:
# On the server (VNC console or new RDP session)
Get-NetTCPConnection -LocalPort 40125 -State Listen
# On your PC
Test-NetConnection -ComputerName 203.0.113.10 -Port 40125
mstsc /v:203.0.113.10:40125若使用 IPv6,请把地址放进方括号:[2001:db8::10]:40125。别忘了更新已保存的 .rdp 文件、密码管理工具与同事的连接设置。
步骤 5:关闭 3389 并限制来源
确认能用新端口登录后,停用默认的远程桌面规则,让 3389 不再对外开放;也可以把新规则限制为只允许公司的 IP 范围:
# Built-in Remote Desktop rules (language-independent group ID)
Disable-NetFirewallRule -Group "@FirewallAPI.dll,-28752"
# Optional: only allow your own IP to reach the new port
Set-NetFirewallRule -DisplayName "RDP custom TCP 40125" -RemoteAddress 198.51.100.0/24步骤 6:被锁在外面时通过 VNC 控制台还原
如果新端口无法连接,请打开 VNC 控制台登录,然后还原默认设置:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 3389
Enable-NetFirewallRule -Group "@FirewallAPI.dll,-28752"
Restart-Service -Name TermService -Force几秒钟后远程桌面就会回到 3389。接着再仔细重做步骤 2 到 4,特别留意端口号是否打错,以及外部防火墙是否已放行。
常见问题
修改 RDP 端口后需要重启吗?
不需要,重新启动 TermService 服务就会生效。若服务无法重启,直接重启也可以。
已经改了端口,RDP 却仍在 3389 监听?
请确认是否有组策略或远程管理工具把值改回去,并确认修改的是 RDP-Tcp 注册表项而不是其他 WinStation。之后再运行一次步骤 4 的验证命令。
自定义 RDP 端口会影响从中国或非洲连接的速度吗?
不会。延迟取决于路由,与端口号无关。JUSTG 只有莫斯科机房使用中国电信 CN2 GIA,东京、首尔与约翰内斯堡机房使用亚洲优化线路,不论 RDP 走哪个端口都一样。
修改端口后仍无法连上远程桌面,请提交工单联系 JUSTG 技术支持,并附上您选择的端口与步骤 4 的输出结果。