厭倦了商業遠程控制軟件的會員限制和功能閹割?渴望擁有一個自由掌控、安全可靠的遠程連接方案?開源軟件 RustDesk 正是你需要的答案!
相信從事互聯網工作的你,一定對向日葵和ToDesk等商業遠程控制軟件并不陌生。然而,受限于商業利益,它們往往對普通用戶不太友好,比如限制免費用戶的畫質和幀率,以此引導用戶開通會員。
今天,我們將向你介紹一款開源的遠程桌面軟件——RustDesk!它在 GitHub 上已收獲 74.6k 的 Star,并且開發社區活躍,版本迭代迅速。
由于 RustDesk 的官方中轉服務器位于國外,國內用戶使用時可能會遇到連接速度慢、延遲高等問題。為了獲得更流暢的體驗,我們可以選擇自建中轉服務器。
接下來,我將給大家提供一個詳細的自建 RustDesk 中轉服務器教程,助你打造屬于自己的高速、穩定、安全的遠程連接通道!
RustDesk 介紹
RustDesk 是一款開源、免費、高性能的遠程桌面軟件,它允許你通過互聯網或局域網遠程控制另一臺計算機。RustDesk 使用 Rust 語言編寫,注重安全性、速度和易用性,提供流暢、可靠的遠程桌面體驗。
與 TeamViewer 或 AnyDesk 等商業軟件不同,RustDesk 不依賴中心化的服務器,而是采用端到端加密技術,直接連接你的設備,確保你的隱私安全。你也可以選擇自建中繼服務器,進一步提升連接速度和穩定性,并完全掌控你的數據。
RustDesk 的主要特點
- 開源免費: RustDesk 代碼完全開源,可以免費使用,沒有任何功能限制或隱藏收費。
- 跨平臺支持: 支持 Windows、macOS、Linux、iOS、Android 等多個平臺,實現跨設備遠程控制。
- 高性能和低延遲: 采用高效的編碼和傳輸協議,提供流暢的屏幕傳輸和低延遲的操作體驗。
- 安全性高: 使用端到端加密技術,保護你的連接和數據安全,防止信息泄露。
- 易于使用: 界面簡潔直觀,操作簡單易懂,即使是新手也能輕松上手。
- 自建中繼服務器: 可以自行搭建中繼服務器,實現更快的連接速度和更高的穩定性。
RustDesk 架構
RustDesk 采用了經典的客戶端-服務器模型,其中涉及三個主要組件:RustDesk 客戶端、RustDesk 服務器和 ID Server。
- RustDesk 客戶端: 運行在你的設備上(Windows,macOS,Linux,Android, iPhone)用于連接兩個設備的軟件。
- RustDesk 中繼服務器(Relay Server): 運行在服務器上,充當客戶端之間的橋梁,轉發來自一方的數據包到另一方。在某些環境中(如經過 NAT 出網)設備之間無法進行 P2P 連接,可以用服務器來中轉。
- ID 服務器(ID Server): 運行在服務器上,用于維護客戶端及中繼服務器的連接信息,促進設備之間建立 P2P 連接。
在 RustDesk 的服務器端部署中,hbbr 和 hbbs 是兩個重要的組件,分別用于不同的功能:
- hbbs: 代表 RustDesk ID / Rendezvous Server,RustDesk ID 注冊服務器,用于分配和注冊 ID;hbbs 是 RustDesk 的中介服務器(Broker Server),用于管理和協調客戶端連接。它幫助客戶端找到并建立 P2P 連接。hbbs 負責維護客戶端的在線狀態,并處理連接請求。當客戶端 A 希望連接客戶端 B 時,它會向 hbbs 發送請求,hbbs 會幫助它們建立連接。
- hbbr: 代表 RustDesk Relay Server,RustDesk 中繼服務器,如果 P2P 無法連接,會使用 hbbr 進行流量中繼。hbbr 是 RustDesk 的中繼服務器(Relay Server),用于在兩臺客戶端之間進行連接中繼。它允許無法直接建立 P2P 連接的客戶端通過中繼服務器進行通信。當客戶端 A 和客戶端 B 之間無法建立直接連接時,它們會通過 hbbr 中繼服務器進行數據傳輸。
- rustdesk-utils: RustDesk 命令行工具
P2P 直連說明:
RustDesk 首先嘗試建立直接 P2P 連接,如果 P2P 失敗,將使用中繼服務器。
確認連接方式,首先連接到遠程主機,可以將鼠標移動到工具欄圖標(綠色圖標),將顯示它是直接連接還是通過中繼服務器連接。
使用端口說明:
序號 | 服務 | 端口 | 協議 | 用途 | 是否可選 |
---|---|---|---|---|---|
1 | hbbs | 21114 | TCP | 用于 Web 控制臺 API,僅在專業版中可用 | 可選 |
2 | hbbs | 21115 | TCP | NAT 類型測試 | 必選 |
3 | hbbs | 21116 | TCP/UDP | UDP 用于 ID 注冊和心跳服務,TCP 用于 TCP 打洞和連接服務 | 必選 |
4 | hbbr | 21117 | TCP | 用于 Relay 服務 | 必選 |
5 | hbbs | 21118 | TCP | 用于支持 Web 客戶端 | 可選 |
6 | hbbr | 21119 | TCP | 用于支持 Web 客戶端 | 可選 |
一般我們使用這些端口就好了:
- TCP: 21115,21116,21117,21118,21119
- UDP: 21116
準備工作
- 準備一臺云服務器
若尚未擁有服務器,可前往 雨云官網 https://rainyun.ivwv.site 進行注冊,新用戶有專屬優惠。
開始部署中轉服務器
rustdesk-server 官方倉庫地址: https://github.com/rustdesk/rustdesk-server
部署方式
RustDesk 提供了多種部署方式,您可以根據自己的需求和技術水平選擇合適的方式,主要有以下三種方式:
-
使用 Docker / Docker Compose 部署(推薦,選其一): 這是最簡單、最快速的部署方式,適合大多數用戶。您只需要運行幾條 Docker 命令,即可完成 RustDesk 中轉服務器的安裝和配置。
-
使用 PM2 部署: PM2 是一個 Node.js 進程管理工具,可以幫助您方便地管理和維護 RustDesk 服務器進程。
-
使用二進制文件運行: 下載預編譯的二進制文件,解壓后即可運行,無需編譯安裝,適合快速部署和測試。
我會依次向大家介紹如何部署。
前提要求(重要)
在進行部署之前,請確保您的服務器滿足以下前提要求:
- 一臺擁有公網 IP 的 Linux 服務器,例如騰訊云、阿里云等。
- 服務器已開啟必要的端口:
- TCP: 21115, 21116, 21117, 21118, 21119
- UDP: 21116
你可以通過服務器管理面板的安全組或防火墻配置中放行這些端口。
使用 Docker 部署(推薦)
1. 安裝 Docker
如果您的服務器上還沒有安裝 Docker,請使用以下命令安裝:
# 使用清華源,如果是國外云服務器可以不運行這一步
export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
# 安裝命令
curl -fsSL https://get.docker.com/ | sh
檢查是否安裝完畢,如果有正確輸出版本 ,那么就代表安裝成功了。
root@ubuntu:~# docker -v
Docker version 27.1.1, build 6312585
運行命令
mkdir -p ~/rustdesk
cd ~/rustdesk
sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v ./data:/root -td --net=host rustdesk/rustdesk-server hbbs
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v ./data:/root -td --net=host rustdesk/rustdesk-server hbbr
注意
如果你運行 docker 版本時候,要求注冊碼,說明你下載的是老版本,因為國內的 docker 鏡像緩存可能沒有更新
檢查是否正常運行
控制臺輸入 docker ps -a
,查看STATUS
狀態是否是 Up
root@ubuntu:~/rustdesk# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97e8dfc8939e rustdesk/rustdesk-server "hbbr" 44 seconds ago Up 43 seconds hbbr
64e629c8a41d rustdesk/rustdesk-server "hbbs" 49 seconds ago Up 48 seconds hbbs
運行好后,可以在當前目錄下列出文件,輸入ls -l data
root@ubuntu:~/rustdesk# ls -l data
total 132
-rw-r--r-- 1 root root 4096 Oct 26 15:25 db_v2.sqlite3
-rw-r--r-- 1 root root 32768 Oct 26 15:25 db_v2.sqlite3-shm
-rw-r--r-- 1 root root 82432 Oct 26 15:25 db_v2.sqlite3-wal
-rw-r--r-- 1 root root 88 Oct 26 15:25 id_ed25519
-rw-r--r-- 1 root root 44 Oct 26 15:25 id_ed25519.pub
可以看到有5個文件,其中 id_ed25519.pub
文件內容接下來會使用到。
也可以嘗試使用Docker Compose 部署(可選)
mkdir -p ~/rustdesk
cd ~/rustdesk
vim docker-compose.yaml
將以下內容復制粘貼進去
networks:rustdesk-net:external: falseservices:hbbs:container_name: hbbsports:- 21115:21115- 21116:21116- 21116:21116/udpimage: rustdesk/rustdesk-servercommand: hbbsvolumes:- ./data:/root # 自定義掛載目錄networks:- rustdesk-netdepends_on:- hbbrrestart: unless-stoppeddeploy:resources:limits:memory: 64Mhbbr:container_name: hbbrports:- 21117:21117image: rustdesk/rustdesk-servercommand: hbbrvolumes:- ./data:/root # 自定義掛載目錄networks:- rustdesk-netrestart: unless-stoppeddeploy:resources:limits:memory: 64M
運行 Docker compose
docker compose up -d
同樣控制臺輸入 docker ps -a
,查看STATUS
狀態是否是 Up
root@ubuntu:~/rustdesk# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97e8dfc8939e rustdesk/rustdesk-server "hbbr" 44 seconds ago Up 43 seconds hbbr
64e629c8a41d rustdesk/rustdesk-server "hbbs" 49 seconds ago Up 48 seconds hbbs
運行好后,也可以在當前目錄下列出文件,輸入ls -l data
root@ubuntu:~/rustdesk# ls -l data
total 132
-rw-r--r-- 1 root root 4096 Oct 26 15:25 db_v2.sqlite3
-rw-r--r-- 1 root root 32768 Oct 26 15:25 db_v2.sqlite3-shm
-rw-r--r-- 1 root root 82432 Oct 26 15:25 db_v2.sqlite3-wal
-rw-r--r-- 1 root root 88 Oct 26 15:25 id_ed25519
-rw-r--r-- 1 root root 44 Oct 26 15:25 id_ed25519.pub
可以看到有5個文件,其中 id_ed25519.pub
文件內容接下來會使用到。
到此位置,使用 Docker 的兩種方式都已經介紹完畢,客戶端的使用可以直接到下一個標題: 客戶端使用 查看,接下來我會介紹使用 PM2 部署。
使用 PM2 部署(推薦)
首先,是需要一個 NodeJS 的環境
安裝 NodeJS 和 NPM
# 更新軟件包列表
sudo apt update# 安裝 Node.js 和 npm
sudo apt install nodejs npm -y# 驗證安裝是否成功
node -v
npm -v
安裝 PM2
npm i -g pm2
# 驗證安裝是否成功
pm2 -v
下載 rustdesk-server
二進制文件
進入 Github - rustdesk-server - releases
找到自己服務器匹配的架構,一般市面上的云服務器都是amd64架構的,跟我一樣的命令即可
sudo apt update
sudo apt install curl unzip -y
mkdir -p ~/rustdesk
cd ~/rustdesk
curl -L "https://github.com/rustdesk/rustdesk-server/releases/download/1.1.12/rustdesk-server-linux-amd64.zip" -o "rustdesk-server-linux-amd64.zip"
unzip rustdesk-server-linux-amd64.zip
cd amd64
ls -l
運行完畢后且無誤后,會在終端列出三個二進制可執行文件,分別是:
- hddr
- hbbs
- rustdesk-utils
接下來運行下列命令
pm2 start hbbs
pm2 start hbbr
運行好后,會看到 pm2 輸出的列表(也可以后續使用 pm2 list
)
id | name | namespace | version | mode | pid | uptime | ? | status | cpu | mem | user | watching |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | hbbr | default | N/A | fork | 329446 | 0s | 0 | online | 0% | 696.0kb | root | disabled |
0 | hbbs | default | N/A | fork | 329432 | 7s | 0 | online | 0% | 4.4mb | root | disabled |
當看到 status
都是 online
時就表示啟動成功。 這里可以看到 cpu
和 mem
,其實運行這兩個程序并不會使用太多的內存和 cpu
接下來查看運行后,會在當前目錄下創建什么文件
root@ubuntu:~/rustdesk/amd64# ls -l
total 27688
-rw-r--r-- 1 root root 4096 Oct 26 16:13 db_v2.sqlite3
-rw-r--r-- 1 root root 32768 Oct 26 16:13 db_v2.sqlite3-shm
-rw-r--r-- 1 root root 82432 Oct 26 16:13 db_v2.sqlite3-wal
-rwxr-xr-x 1 root root 9194392 Oct 7 16:37 hbbr
-rwxr-xr-x 1 root root 14290448 Oct 7 16:37 hbbs
-rw-r--r-- 1 root root 88 Oct 26 16:13 id_ed25519
-rw-r--r-- 1 root root 44 Oct 26 16:13 id_ed25519.pub
-rwxr-xr-x 1 root root 4734920 Oct 7 16:37 rustdesk-utils
可以看到,增加了5個文件,其中 id_ed25519.pub
后續客戶端使用的時候會用到。
到此位置,使用 pm2
的方式已經介紹完畢,客戶端的使用可以直接到下一個標題: 客戶端使用 查看,接下來我會介紹使用 使用二進制文件運行 部署。
使用二進制文件運行(不推薦)
這種方式為什么不推薦呢,稍后會提到。
與pm2方式一樣,需要下載 rustdesk-server
二進制文件
進入 Github - rustdesk-server - releases
找到自己服務器匹配的架構,一般市面上的云服務器都是amd64架構的,跟我一樣的命令即可
sudo apt update
sudo apt install curl unzip -y
mkdir -p ~/rustdesk
cd ~/rustdesk
curl -L "https://github.com/rustdesk/rustdesk-server/releases/download/1.1.12/rustdesk-server-linux-amd64.zip" -o "rustdesk-server-linux-amd64.zip"
unzip rustdesk-server-linux-amd64.zip
cd amd64
ls -l
這里與 pm2 方式一樣,也會輸出同樣的文件
但是運行方式不一樣,由于時二進制文件,我們可以直接運行 hbbs
和 hbbr
文件
運行:
root@ubuntu:~/rustdesk/amd64# ./hbbs
[2024-10-26 16:47:14.908679 +08:00] INFO [src/common.rs:122] Private key comes from id_ed25519
[2024-10-26 16:47:14.908702 +08:00] INFO [src/rendezvous_server.rs:1205] Key: Ia42DxVS6hZ07cybqftPxAKXvszpbuj77aM=
[2024-10-26 16:47:14.908705 +08:00] INFO [src/peer.rs:84] DB_URL=./db_v2.sqlite3
[2024-10-26 16:47:14.909695 +08:00] INFO [src/rendezvous_server.rs:99] serial=0
[2024-10-26 16:47:14.909726 +08:00] INFO [src/common.rs:46] rendezvous-servers=[]
[2024-10-26 16:47:14.909730 +08:00] INFO [src/rendezvous_server.rs:101] Listening on tcp/udp :21116
[2024-10-26 16:47:14.909732 +08:00] INFO [src/rendezvous_server.rs:102] Listening on tcp :21115, extra port for NAT test
[2024-10-26 16:47:14.909734 +08:00] INFO [src/rendezvous_server.rs:103] Listening on websocket :21118
[2024-10-26 16:47:14.909762 +08:00] INFO [libs/hbb_common/src/udp.rs:36] Receive buf size of udp [::]:21116: Ok(212992)
[2024-10-26 16:47:14.909809 +08:00] INFO [src/rendezvous_server.rs:138] mask: None
[2024-10-26 16:47:14.909817 +08:00] INFO [src/rendezvous_server.rs:139] local-ip: ""
[2024-10-26 16:47:14.909822 +08:00] INFO [src/common.rs:46] relay-servers=[]
[2024-10-26 16:47:14.909870 +08:00] INFO [src/rendezvous_server.rs:153] ALWAYS_USE_RELAY=N
[2024-10-26 16:47:14.909898 +08:00] INFO [src/rendezvous_server.rs:185] Start
[2024-10-26 16:47:14.909929 +08:00] INFO [libs/hbb_common/src/udp.rs:36] Receive buf size of udp [::]:0: Ok(212992)
運行后發現,需要一直保持終端不斷開,所以這種方式并不推薦,因為這種方式需要同時打開兩個終端 ,一個終端運行 hbbr
另一個終端運行 hbbs
當終端結束后,服務也就停止了。
客戶端使用
我們進入 rustdesk官網:https://rustdesk.com/zh-cn/ 或者進入 Github-releases
由于rustdesk支持多個平臺的客戶端。
可以直接從這個表格點擊下載。
Architecture | Windows | Ubuntu | Mac | Android | Flatpak | AppImage | iOS |
x86-64 (64-bit) | EXE MSI | Download | Download | Universal | Download | Download | |
AArch64 (ARM64) | Download | Download | Download | Download | Download | TestFlight | |
ARMv7 (32-bit) | Download | Download | |||||
x86-32 (32-bit) | Download |
我這里以Windows為例,我的下載鏈接是: x86-64 (64-bit)。
下載完畢后,直接打開雙擊,同時在你的被控制端也需要下載安裝
安裝好打開界面如下:
可以看到底部 服務未運行 啟動服務
設置中繼服務器
點擊窗口右上角 三橫線 或 左側 ID 旁邊的 三個點 進入設置頁面。
再依次點擊: 網絡 -> 解鎖網絡設置
以下是四個輸入框的配置說明,具體配置可能會有所不同,取決于你的最初的設置,如果你使用docker方式時,更改了外部映射的端口,可以根據如下默認端口,填寫對應的外部端口。
ID 服務器(hbbs):
- 默認端口:21116
中繼服務器(hbbr):
- 默認端口:21117
API 服務器:
- 默認端口:21118
Key:
- 上面提到的
id_ed25519.pub
文件的內容 - 使用
cat id_ed25519.pub
命令查看 Key
# 具體根據你該文件的目錄來
cd ~/rustdesk/data/
cat id_ed25519.pub# 我的輸出
Ia42DxVS6hZ07cybqftPxAKXvszpbuj77aM=
如果是默認rustdesk官方推薦的端口,那么只需要填寫你的服務器 IP 到 ID 服務器 輸入框即可,如圖:
如果使用docker方式有更改端口,可以按照如下默認端口,找到自己映射的外部端口
最后點擊應用即可。
特別需要注意的是,你需要在每一個客戶端都這樣設置好中繼服務器。
啟動服務
進入 設置 -> 常規
返回主頁查看底部狀態,如果是綠色圓圈,并且是 就緒兩字,就表示成功了 。
被控端
被控端也同樣設置好后,就可以看到 ID 和 密碼了,將其給到控制端輸入就可以了,跟向日葵和Todesk一樣的操作
控制端功能
成功遠程后,控制端可以有這些功能操作。
相關鏈接
我的博客:https://blog.ivwv.site
雨云官網:https://rainyun.ivwv.site