把遠端桌面從預設的 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 的輸出結果。