如何修改 Windows Server 遠端桌面 RDP 連接埠(3389)
把遠端桌面從預設的 TCP 3389 移到其他連接埠,是減少公網 Windows 伺服器被自動化程式不停嘗試登入最快速的方法之一。本文說明如何用 PowerShell 修改 Windows Server RDP 連接埠(適用 2016、2019、2022),在切換前先於 Windows 防火牆開放新連接埠,萬一出錯也能透過 VNC 主控台安全還原。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 主控台。新連接埠若連不上,就靠它回到系統。
步驟 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 的輸出結果。