RustDesk 是一款開源的遠端桌面存取軟體,特別為提供跨平台的遠端桌面支援而設計。適用於不同的作業系統以便用戶可以在不同的設備之間輕鬆地共享桌面,使其能夠輕鬆實現遠端協作和技術支援。
RustDesk 自許為 TeamViewer 的開源替代方案
特色
您也可以選擇不同的付費方案,提供雙重認證 2FA 與解鎖更多功能。
不過是以年來計費
RustDesk Client
https://github.com/rustdesk/rustdesk/releases/download/1.2.3/rustdesk-1.2.3-x86_64.exe
只要兩台設備都下載 Client 就可以共享桌面了,因為 RustDesk 提供了幾個免費的中繼伺服器給我們使用。
支援的平台如下
執行 RustDesk Client 畫面如下
點擊右上方的設定
一般的部分建議勾選錄製,自動錄製連入的工作階段。
安全的部分可以自訂權限與密碼規則
也可以重新產生連線 ID 與進行 IP 白名單過濾,也可以偵測當使用者處於非活動狀態下自動關閉連線。
RustDesk 連線時會先採端對端的 P2P 連線,若失敗時才會改採中繼伺服器進行 Relay 傳送資料。
若您覺得 RustDesk 提供的中繼伺服器反應速度太慢,則可以考慮自架中繼伺服器,並將相關設定維護於此。
接著我們進行遠端桌面連線,提示輸入密碼(一次性或固定密碼)。
對方的畫面則會跳出存取請求
若直接點選接受,此時連線方則不需要輸入密碼即可登入。
同時使用兩種密碼
可將連線過的紀錄加入我的最愛,下一次就不用再輸入 ID 了。
RustDesk Web Client
RustDesk 也有提供網頁版的應用程式,建議使用 Docker 安裝。
docker pull keyurbhole/flutter_web_desk:v1.0.0
docker run -d -p 5000:5000 --name webdesk keyurbhole/flutter_web_desk:v1.0.0
開啟瀏覽器並前往 localhost:5000,輸入遠端 ID 即可。
連線畫面如下
網頁版有支援觸控模式,平板的使用者可以參考看看。
RustDesk Server
如果您對 RustDesk 免費的中繼伺服器有資安上疑慮,則建議改採自架中繼伺服器的方式。
伺服器要求
筆者使用 B1s 規格的 Azure VM 進行安裝,費用約每個月 330 台幣。
RustDesk Server 由以下兩個伺服器所構成
Client 與 Remote Computer 的 RustDesk 透過 Rendezvous Protocol 與 Rendezvous Server 進行註冊,當 RustDesk 連線時會先採端對端的 P2P 連線。
若 P2P 連線失敗時才會改採中繼伺服器進行 Relay 傳送資料
Rendezvous Protocol 詳細的內容如下
RustDesk ID / Rendezvous Server 負責的功能與埠號
RustDesk Relay Server 負責的功能與埠號
若不使用 RustDesk Web Client,可以停用 21118 與 21119 埠號。
設定 Azure VM 的網路安全性群組,允許上述埠號。
設定 Ubuntu 作業系統的防火牆,允許上述埠號。
sudo ufw allow 21115:21119/tcp
sudo ufw allow 8000/tcp
sudo ufw allow 21116/udp
sudo ufw enable
使用 Binary 檔案架設
下載最新版本的 RustDesk Server
cd /opt
sudo wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.9/rustdesk-server-linux-amd64.zip
將其解壓縮與重新命名
sudo apt install unzip
sudo unzip rustdesk-server-linux-amd64.zip
sudo mv amd64 rustdesk
賦予執行權限
hbbr 代表 RustDesk ID / Rendezvous Server
hbbs 代表 RustDesk Relay Server
cd rustdesk
sudo chmod +x hbbr
sudo chmod +x hbbs
先執行 hbbs 使其產出憑證
./hbbs
憑證的位置如下
cat /opt/rustdesk/id_ed25519.pub
EHyIOeeL7keiLHfXnr5aPii11ZazkgGsW2r3Ihvh1ZI=
建立 hbbs 服務
sudo vi /etc/systemd/system/hbbs.service
[Unit]
Description=Rust Desk Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
WorkingDirectory=/opt/rustdesk
# 參數 -k 是強制驗證客戶端公鑰,避免被未授權連線使用。
ExecStart=/opt/rustdesk/hbbs -r 0.0.0.0 -k _
[Install]
WantedBy=multi-user.target
啟動 hbbs 服務
sudo systemctl daemon-reload
sudo systemctl enable hbbs.service
sudo service hbbs start
建立 hbbr 服務
sudo vi /etc/systemd/system/hbbr.service
[Unit]
Description=Rust Desk Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
WorkingDirectory=/opt/rustdesk
# 參數 -k 是強制驗證客戶端公鑰,避免被未授權連線使用。
ExecStart=/opt/rustdesk/hbbr -k _
[Install]
WantedBy=multi-user.target
啟動 hbbr 服務
sudo systemctl daemon-reload
sudo systemctl enable hbbr.service
sudo service hbbr start
使用 Docker 架設
建立 rustdesk 資料夾,沒用過 Docker 的朋友可以參考這篇文章。
mkdir rustdesk
cd rustdesk
撰寫 docker-compose.yml,參數 -k 是強制驗證客戶端公鑰,避免被未授權連線使用。
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
command: hbbs -r your_server_ip_or_fqdn:21117 -k _
volumes:
- ./data:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
command: hbbr -k _
volumes:
- ./data:/root
networks:
- rustdesk-net
restart: unless-stopped
運行 RustDesk Server
sudo docker compose up -d
[+] Running 3/3
✔ Network azureadmin_rustdesk-net Created 0.1s
✔ Container hbbr Started 0.1s
✔ Container hbbs Started 0.1s
憑證的位置如下
cat rustdesk/data/id_ed25519.pub
EHyIOeeL7keiLHfXnr5aPii11ZazkgGsW2r3Ihvh1ZI=
填寫 RustDesk Client 的網路設定
就可以使用自架中繼伺服器進行連線了
假設您的伺服器名稱被別人知道了,但是對方不知道 Key。
由於有強制驗證客戶端公鑰,就不怕我們的中繼伺服器被別人拿來濫用了。
今天的分享就到這邊,感謝收看。
參考文件