如何修改 Windows Server 遠端桌面 RDP 連接埠(3389)

7 分鐘閱讀 5 次閱讀 0
本文目錄

把遠端桌面從預設的 TCP 3389 移到其他連接埠,是減少公網 Windows 伺服器被自動化程式不停嘗試登入最快速的方法之一。本文說明如何用 PowerShell 修改 Windows Server RDP 連接埠(適用 2016、2019、2022),在切換前先於 Windows 防火牆開放新連接埠,萬一出錯也能透過 VNC 主控台安全還原。JUSTG 位於約翰尼斯堡、莫斯科、東京、首爾的雲端伺服器與獨立伺服器皆適用。範例使用連接埠 40125、伺服器 IP 203.0.113.10。

修改連接埠可以減少掃描流量,但不能取代高強度密碼、網路層級驗證(NLA)與定期更新。

步驟 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
重新啟動 TermService 會立刻中斷目前的 RDP 連線,這是正常現象。執行後等待約 10 秒,再用新的連接埠重新連線。

步驟 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 的輸出結果。

这篇文章有帮助吗?

相關教學

Windows PowerShell PS> Test-NetConnection -ComputerName 203.0.113.10…PS> nc -vz 203.0.113.10 3389PS> Get-Service -Name TermService Windows 伺服器 遠端桌面無法連線 Windows Server VPS:RDP 連線問題排查教學 遠端桌面 RDP 無法連線 Windows Server?依序檢查 3389 連接埠、防火牆、NLA/CredSSP 錯誤,並用 VNC 主控台修復。 8 分鐘閱讀 2 閱讀教學 Windows PowerShell PS> Get-WinSystemLocalePS> Get-WinUILanguageOverridePS> Get-WinUserLanguageList Windows 伺服器 Windows Server 變更顯示語言、系統地區設定與時區(2016/2019/2022) 用 Install-Language 或語言套件變更 Windows Server 顯示語言,並設定系統地區(解決亂碼)、使用者語言與時區。 7 分鐘閱讀 2 閱讀教學 Windows PowerShell PS> Update-HostStorageCachePS> Get-Disk | Select-Object Number, FriendlyName…PS> Get-Partition -DiskNumber 0 | Select-Object P… Windows 伺服器 Windows Server 擴充 C 槽:升級硬碟後延伸磁碟區與初始化新資料硬碟 VPS 升級硬碟後擴充 Windows Server C 槽,處理擋住延伸的修復磁碟分割,並初始化與格式化新資料硬碟。 7 分鐘閱讀 2 閱讀教學 Windows PowerShell PS> Get-NetAdapterPS> Get-NetIPConfiguration -InterfaceAlias "Ether…PS> Get-NetIPInterface -InterfaceAlias "Ethernet"… Windows 伺服器 Windows Server 新增額外 IPv4 位址與設定 IPv6 教學 Windows Server 新增額外 IPv4 並設定 IPv6:PowerShell/netsh、SkipAsSource、閘道、DNS 與連線測試。 8 分鐘閱讀 2 閱讀教學