RDP 是什麼意思?遠端桌面協議的原理、連接埠與使用方式
RDP 是 Remote Desktop Protocol 的縮寫,即微軟的遠端桌面協議:把遠端 Windows 的桌面畫面傳到你的螢幕上,再把你的鍵盤和滑鼠操作傳回去,同時可以共享剪貼簿、本機磁碟、印表機和聲音。它預設使用 TCP 3389,網路允許時再加一條 UDP 3389 提升流暢度;Windows 自帶的“遠端桌面連線”(mstsc)就是 RDP 客戶端。
RDP 是什麼意思?RDP 是 Remote Desktop Protocol(遠端桌面協議)的縮寫,由微軟開發並內建在 Windows 中,用來遠端登入、操作另一台 Windows 電腦或伺服器的圖形桌面。伺服器端把桌面畫面編碼後發給客戶端,客戶端把鍵盤、滑鼠操作發回伺服器;同一條連線裡還能共享剪貼簿、對映本機磁碟和印表機、傳輸聲音。RDP 的預設連接埠是 TCP 3389,從 RDP 8.0 開始可以額外使用 UDP 3389 傳輸,在高延遲、有丟包的線路上更流暢。微軟以開放規範的形式公佈了協議文件(MS-RDPBCGR 等),因此除了 Windows 自帶的 mstsc,Linux 上的 FreeRDP、Remmina 客戶端和 xrdp 服務端也能與之互通。
RDP 協議是基於 TCP 還是 UDP
兩者都用,但地位不同:
- 連線總是先透過 TCP 3389 建立。認證、協商加密方式和功能都在這條 TCP 連線上完成,TCP 是必需的。
- 雙方都支援時,再建立一條 UDP 3389 傳輸。Windows 8、Windows Server 2012 及以後的系統(RDP 8.0 起)支援;更老的 Windows 7 SP1 要先安裝微軟的 RDP 8.0 更新。
- UDP 不通時自動退回只用 TCP。連線照樣可用,只是在差的線路上更容易卡頓。
為什麼要加 UDP:TCP 丟一個包,後面已經到達的資料也要等它重傳完成才能交給應用,畫面就會停頓。RDP 的 UDP 傳輸(MS-RDPEUDP)定義了可靠和有損兩種模式,對即時性要求高、允許丟失的資料可以不等重傳,用後續更新覆蓋即可。
確認當前連線有沒有用上 UDP:mstsc 全屏時頂部有一條連線欄,點左側的連線品質圖示,彈出的視窗會顯示連線品質並註明是否啟用了 UDP。
UDP 偶爾也會帶來問題:有的網路對 UDP 限速,或者 NAT 裝置上的 UDP 會話超時很短,表現為連上之後畫面隔一陣就凍結幾秒。可以在客戶端關閉 UDP 做對比:
# 在客戶端電腦上以管理員身份執行,等同於組策略“Turn Off UDP On Client”
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client" /v fClientDisableUDP /t REG_DWORD /d 1 /f
重新連線後生效,確認問題出在 UDP 後再去查網路;要恢復時刪除這個值。伺服器一側對應的組策略是“計算機配置 → 管理範本 → Windows 元件 → 遠端桌面服務 → 遠端桌面會話主機 → 連線 → 選擇 RDP 傳輸協議”。
放行防火牆時要把 TCP 和 UDP 分開考慮。Windows 防火牆自帶“遠端桌面 - 使用者模式(TCP-In)”和“遠端桌面 - 使用者模式(UDP-In)”兩條規則;雲安全組或機房 ACL 只放行 TCP 3389 也能正常使用,只是用不上 UDP。
RDP 傳輸的是什麼:畫面、輸入和虛擬通道
RDP 不是把螢幕截圖一張張發過去,而是隻傳變化的部分,並把各種附加功能放在同一條連線的“虛擬通道”裡:
| 傳輸內容 | 方向 | 說明 |
|---|---|---|
| 桌面畫面 | 伺服器 → 客戶端 | 只傳送發生變化的區域;較新的系統會用 H.264 等編碼壓縮,取決於兩端版本和策略 |
| 鍵盤、滑鼠、觸控 | 客戶端 → 伺服器 | 輸入事件在遠端系統裡生效 |
| 剪貼簿 | 雙向 | 文字、圖片,以及在兩端之間複製檔案 |
| 驅動器對映 | 客戶端 → 伺服器 | 本機磁碟在遠端顯示為 \\tsclient\C 這樣的網路位置 |
| 印表機、智慧卡、USB 裝置 | 客戶端 → 伺服器 | 遠端程式可以使用本機的裝置 |
| 聲音 | 雙向 | 遠端的聲音在本機播放,也可以把本機麥克風傳過去 |
這些附加功能都不額外佔用連接埠。方便的另一面是風險:連線一台不可信的伺服器時把本機磁碟對映過去,對方就能讀寫這塊磁碟。伺服器管理員可以用組策略關閉驅動器、剪貼簿等重定向。
RDP 和 VNC 還有一個本質區別:RDP 登入的是一個 Windows 會話,而不是把伺服器顯示器上的畫面映象過來。遠端會話裡的操作在伺服器本地顯示器上看不到;同一個帳號已經在本地登入時,遠端連線預設接管那個會話,本地螢幕隨之回到鎖定介面。也正因為依賴 Windows 裡的遠端桌面服務,RDP 只能在系統啟動完成後使用,看不到開機自檢和 BIOS 介面。
RDP、VNC、SSH 和 BMC 控制檯怎麼選
| 對比項 | RDP | VNC | SSH | BMC 遠端控制檯 |
|---|---|---|---|---|
| 預設連接埠 | TCP 3389,可選 UDP 3389 | TCP 5900 起 | TCP 22 | 因廠商而異,Web 管理多為 443 |
| 介面 | 圖形桌面 | 圖形桌面 | 命令列 | 伺服器顯示器畫面 |
| 原理 | 遠端新建會話,傳輸變化區域和編碼後的畫面 | 傳輸幀緩衝區畫素,多為共享當前螢幕 | 加密的命令列會話 | BMC 擷取顯示卡輸出 |
| 主要用於 | Windows;Linux 可裝 xrdp | 跨平台 | Linux、網路裝置;Windows 可裝 OpenSSH 伺服器 | 與作業系統無關 |
| 依賴系統正常執行 | 是 | 系統內的 VNC 服務是;BMC、虛擬化平台提供的 VNC 不是 | 是 | 否,關機、藍色畫面、BIOS 階段都能用 |
| 加密 | TLS,支援 NLA 預認證 | 取決於實現,經典認證只保護密碼 | 全程加密 | HTTPS 或廠商協議 |
| 低頻寬表現 | 較好 | 一般 | 很好,只傳文字 | 一般 |
| 適合 | Windows 日常管理 | Linux 桌面、跨平台臨時協助 | Linux 維運、指令碼和批次操作 | 系統起不來、裝系統、改 BIOS |
簡單說:管理 Windows 伺服器日常用 RDP,Linux 用 SSH;系統崩潰、遠端桌面連不上的時候,用 BMC 控制檯或服務商面板裡的 VNC 救急。
RDP 怎麼用:mstsc 命令與 .rdp 檔案
Windows 自帶的客戶端叫“遠端桌面連線”,按 Win + R 輸入 mstsc 開啟。常用的命令列引數:
mstsc /v:203.0.113.10 # 連線預設連接埠 3389
mstsc /v:203.0.113.10:13389 # 伺服器改過連接埠時,用冒號接連接埠號
mstsc /v:203.0.113.10 /admin # 連線到伺服器的管理會話
mstsc /v:203.0.113.10 /f # 全屏
mstsc /edit C:\rdp\web01.rdp # 編輯已儲存的連線配置
經常連線的伺服器,可以在 mstsc 裡點“顯示選項 → 另存為”儲存成 .rdp 檔案。它是純文字,能直接編輯或批次生成:
full address:s:203.0.113.10:3389
username:s:Administrator
screen mode id:i:1
desktopwidth:i:1600
desktopheight:i:900
redirectclipboard:i:1
drivestoredirect:s:
audiomode:i:2
screen mode id 為 1 是視窗模式、2 是全屏;drivestoredirect:s: 後面留空表示不對映本機磁碟,寫成 * 則對映全部;audiomode:i:2 表示不傳聲音,省頻寬。雙擊這個檔案就能按設定連線。
其他系統:macOS、iOS、Android 安裝微軟官方客戶端(新版本名為 Windows App);Linux 用 Remmina 圖形客戶端,或者 FreeRDP 的命令列:
xfreerdp /v:203.0.113.10 /u:Administrator /size:1600x900 +clipboard /drive:share,/home/user/share
/drive:share,/home/user/share 把本機目錄對映到遠端,名字叫 share。FreeRDP 3 在部分發行版裡的命令名是 xfreerdp3。
第一次連線時,客戶端會提示“無法驗證遠端計算機的身份”,因為伺服器預設使用自簽名證書。不要直接勾選“不再詢問”:先透過服務商的 VNC 控制檯登入伺服器,檢視遠端桌面證書的指紋,和提示框裡“檢視證書”顯示的指紋核對一致後再連線,可以排除中間人:
Get-ChildItem "Cert:\LocalMachine\Remote Desktop" | Select-Object Subject, Thumbprint, NotAfter
修改 RDP 連接埠與基本安全設定
3389 是網際網路上被批次掃描和爆破的重點連接埠。比改連接埠更有效的順序是:限制來源 IP → 確認開啟 NLA → 及時安裝補丁 → 再考慮改連接埠。
1. 限制來源 IP。 在安全組或機房防火牆上只放行辦公網出口的位址;伺服器自己的防火牆也可以把遠端桌面規則的遠端位址收窄:
Get-NetFirewallRule -Group "@FirewallAPI.dll,-28752" | Set-NetFirewallRule -RemoteAddress 198.51.100.0/24
@FirewallAPI.dll,-28752 是“遠端桌面”規則組的內部名稱,中英文系統通用。
2. 確認網路級別身份驗證(NLA)已開啟。 NLA 要求客戶端在建立桌面會話之前先完成認證,未透過認證的連線不會讓伺服器去建立會話、繪製登入介面,也擋住了一部分只能在認證前利用的漏洞:
$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp'
Get-ItemProperty $key -Name UserAuthentication # 值為 1 表示要求 NLA
Set-ItemProperty $key -Name UserAuthentication -Value 1 # 開啟
3. 及時安裝安全更新。 RDP 歷史上出現過無需認證即可遠端利用的嚴重漏洞,例如 2019 年的 CVE-2019-0708(BlueKeep),影響 Windows 7、Windows Server 2008 和 2008 R2 等舊系統。已經停止支援的系統,不要把 RDP 暴露在公網上。
4. 修改連接埠(可選)。 順序是先放行新連接埠,再改登錄檔,最後重啟服務;順序反了會把自己鎖在外面:
$port = 13389
New-NetFirewallRule -DisplayName "RDP TCP $port" -Direction Inbound -Protocol TCP -LocalPort $port -Action Allow
New-NetFirewallRule -DisplayName "RDP UDP $port" -Direction Inbound -Protocol UDP -LocalPort $port -Action Allow
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value $port
Restart-Service TermService -Force # 當前遠端會話會斷開
重啟服務後用 mstsc /v:IP:13389 重新連線,再用 netstat -ano | findstr :13389 確認 TCP 和 UDP 都在新連接埠上監聽;安全組和機房 ACL 也要同步放行新連接埠。動手前確認手裡有 BMC 控制檯或服務商面板的 VNC,萬一連不上可以從那裡改回來。
日常還要定期看一眼有沒有人在爆破。登入失敗記錄在安全日誌的 4625 事件裡,第 20 個欄位(下標 19)是來源 IP:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 50 |
Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SourceIP';e={$_.Properties[19].Value}}
同一批位址反覆出現,就該收緊來源 IP 了。
租用或託管 Windows 伺服器後怎麼用 RDP 管理
| 步驟 | 做什麼 | 要點 |
|---|---|---|
| 1. 拿到連線資訊 | 公網 IP、連接埠、管理員帳號和初始密碼 | 租用的伺服器由服務商交付;託管的伺服器要在裝系統時自己開啟遠端桌面、配好 IP |
| 2. 放行連接埠 | 安全組、機房防火牆放行 TCP 3389,可選 UDP 3389 | 來源只填自己的 IP |
| 3. 首次連線 | mstsc /v:IP,核對證書指紋後登入 |
連不上先用 Test-NetConnection IP -Port 3389 看連接埠通不通 |
| 4. 登入後加固 | 改掉初始密碼,給每位管理員建獨立帳號,確認 NLA 開啟,裝完系統更新 | 不要多人共用 Administrator |
| 5. 留好後路 | 記下服務商面板裡 VNC 控制檯或 BMC 的入口,並實際開啟一次 | 改連接埠、改防火牆、改網路卡之前先確認它可用 |
第 5 步最容易被省略。RDP 走的是伺服器自己的網路卡和作業系統,系統卡在更新、藍色畫面、網路卡配置寫錯、防火牆擋住了連接埠,RDP 都會一起失效,這時只能靠不依賴作業系統的通道進去修復。
在管理系統裡怎麼落地
服務商一側,Toplink DCIM 的 IPMI 遠端管理 在瀏覽器裡同時提供三種控制檯:VNC 經由 BMC 連線,從開機自檢、BIOS 設定到系統安裝都能看到;SSH 和 RDP 走作業系統通道,用於系統正常時的日常管理。三種都不需要安裝客戶端,每次會話自動錄影,可以倍速回放。租用伺服器的客戶在 客戶自助端 裡同樣能開啟 VNC 控制檯,或透過 SSH、RDP 登入名下的機器;RDP 連不上時直接切到 VNC 檢視畫面,不必先提工單等工程師。
常見問題
Windows 家庭版能被遠端桌面連線嗎?
不能。Windows 10、11 家庭版只帶 RDP 客戶端,可以去連別的電腦,但不能作為被連線的一端;專業版、企業版和 Windows Server 才能開啟遠端桌面。
RDP 改了連接埠為什麼還會被掃描?
掃描工具會探測全部 65535 個連接埠並識別上面跑的協議,改連接埠只能減少針對 3389 的批次爆破日誌,不能代替來源 IP 限制、NLA 和強密碼。
RDP 和遠端桌面服務(RDS)是什麼關係?
RDP 是協議;遠端桌面服務是 Windows Server 的一個角色,在 RDP 之上提供多使用者會話、遠端應用釋出、閘道器和授權管理。管理員只是遠端維護伺服器時,不需要安裝這個角色。