远程桌面软件已经在使用者非常普遍了,常见的有 QQ 自带的桌面服务、TeamViewer,向日葵、Todesk 等等
QQ:用过都知道,非常卡, 延迟高
TeamViewer:官方查询商业用途非常频繁
向日葵:强制登陆、免费用户限速、限画质
Todesk:强制登陆加各种限制

一、Rustdesk 简介

RustDesk,基于高效的 Rust 语言构建的开源远程桌面工具。现已开源,可自行部署服务端、搭建中转服务器
我也经常使用各种远程桌面软件,在外面远程控制家里电脑、 Windows 服务器(自带 RDP 卡)、手机远程协助等。前段时间一直用的都是 Todesk,但现在必须强制登陆且 Android 被控也有设备限制了,免费版仅有支持一台设备且并且一个月才能更换一次。

RustDesk 的优势:

  • 轻量化:不论服务端还是客户端、不论哪个平台,软件小巧、功能完备。
  • 全平台支持:支持Android、Linux、Windows任意双向控制。
  • 安全可控:软件开源,服务端自建,通信加密。
  • 低带宽占用:仅需 2-3M 即可流畅 1080P,支持 TCP 打洞端对端 P2P 连接。

二、搭建服务端

首先我们确定需求,我所需要控制与被控的设备都在国内,所以这里我使用腾讯云上海的服务器来搭建服务端
Rustdesk 官方文档: https://rustdesk.com/docs/zh-cn/self-host/

Rustdesk 有两种搭建方法,一是手动搭建 | 二是 Docker 搭建,这里我手动搭建。Rustdesk 对硬件要求比较低,所以各位在搭建时选择适合自己的即可。

Rustdesk 的服务端(即转发服务器)需要至少3个端口,服务端本身占用一个,另外两个用于实现 Web端的远程桌面。

Rustdesk 服务端的自定义端口设置是通过指定锚点再通过-1、+2来产生的,这里不能随意指定五个端口

端口 协议 程序 用途 锚点
21115 TCP HBBS NAT类型测试
21116 TCP/UDP HBBS TCP 打洞与连接服务/UDP ID注册与心跳服务 HBBS锚点
21117 TCP HBBR 中继服务 HBBR锚点
21118 TCP HBBS WebSocket服务
21119 TCP HBBR WebSocket转发

HBBR、HBBS 服务端 64 位的 Windows/Linux 的预编译包可以通过官方 GitHub Release 进行获取,其余的架构则需要自行 Clone 源码通过 cargo 进行编译(官方文档)。

文件说明
HBBS - RustDesk ID注册服务器
HBBR - RustDesk 中继服务器

Github 预编译包:https://github.com/rustdesk/rustdesk-server/releases/latest

NodeJs+pm2 手动搭建

安装 NodeJs、pm2 步骤请参照本站另一篇文章: https://xkl.me/archives/19.html
1、在 home 目录下创建 Rustdesk 文件夹并下载解压编译包

1
2
3
cd /home && mkdir /home/Rustdesk && cd /home/Rustdesk
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.6/rustdesk-server-linux-x64.zip
unzip rustdesk-server-linux-x64.zip

2、将解压的 hbbr hbbs 赋予可执行权限

1
chmod +x hbb*

3、放行端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#CentOS firewalld
firewall-cmd --zone=public --add-port=21115/tcp --permanent
firewall-cmd --zone=public --add-port=21116/tcp --permanent
firewall-cmd --zone=public --add-port=21116/udp --permanent
firewall-cmd --zone=public --add-port=21117/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

#Debian/Ubuntu ufw
ufw allow 21115/tcp
ufw allow 21116/tcp
ufw allow 21116/udp
ufw allow 21117/tcp

#iptables
iptables -I INPUT 1 -p tcp --dport 21115 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 21116 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 21116 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 21117 -j ACCEPT
iptables-save //保存(解决重启失效)

4、初次运行生成公钥
进入目录,使用命令 ./hbbs 运行然后 CTRL+C 终止运行,再使用 cat id_ed25519.pub 查看公钥并复制

1
2
3
cd /home/Rustdesk
./hbbs
cat id_ed25519.pub

3.png
5、在服务器上使用 pm2 运行 hbbs 和 hbbr,并保存设置开机自启。

1
2
3
4
pm2 start hbbs -- -k _
pm2 start hbbr -- -k _
pm2 save
pm2 startup

三、配置客户端

新版的服务中,在 hbbs/hbbr 运行目录下使用命令 id_ed25519.pub 可以得到用于客户端与服务器认证的公钥。

1
2
cd /home/Rustdesk
cat id_ed25519.pub

如果要更改 key,请删除 id_ed25519id_ed25519.pub 文件并重新启动 hbbs/hbbr,hbbs 将会产生新的密钥对。

在 Rustdesk 客户端中,找到【ID/中继服务器】选项点进去设置成我们搭建好 hbbs/hbbr的
1.webp

ID服务器 填写:IP/域名:端口(默认21116端口可以不填)
Key 填写:从上面步骤获取到的 cat id_ed25519.pub 填入
中继服务器和IP服务器,两项暂无需填写,那是用于多服务器部署所需的选项

例如:👇

1
2
hbbs.example.com 或者 hbbs.example.com:21116
121.2.319.422 或者 121.2.319.422:21116

2.webp

保存后即可和 Todesk、Teamviewer 等一样通过 ID+密钥的形式控制其他客户端。

需要注意的是不论是主控还是被控,都需要设置为同一个ID/中继服务器才能够正常连接。其他平台更细节的使用可以参考官方文档(点击前往)进行学习和使用。

RustDesk 即使在后台运行,长时间未使用系统还是会进入休眠模式,目前版本不会阻止系统休眠,所以需要将系统设置成无休眠

设置成功后就可以使用远程加密中继连接了
4.png

四、结语

RustDesk 无疑是一款优秀的开源远程桌面工具,在这个远程桌面工具反复被商业公司养鱼、割韭菜的背景之下,它可谓是一股清流打破了这样的局面,给我们带来了更多的选择。

当然 RustDesk 本身仍有许多改进的空间,比如 APP 连接之后默认让画面适合屏幕的状态更好、扫码功能启动更流畅些、交互 UI 更友好一些等等。
希望 RustDesk 可以更好的发展下去吧

参照:https://youtu.be/EeFqj23jxMk