自建远程桌面服务 - Rustdesk
远程桌面软件已经在使用者非常普遍了,常见的有 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 | cd /home && mkdir /home/Rustdesk && cd /home/Rustdesk |
2、将解压的 hbbr hbbs 赋予可执行权限
1 | chmod +x hbb* |
3、放行端口
1 | #CentOS firewalld |
4、初次运行生成公钥
进入目录,使用命令 ./hbbs
运行然后 CTRL+C 终止运行,再使用 cat id_ed25519.pub
查看公钥并复制
1 | cd /home/Rustdesk |
5、在服务器上使用 pm2 运行 hbbs 和 hbbr,并保存设置开机自启。
1 | pm2 start hbbs -- -k _ |
三、配置客户端
新版的服务中,在 hbbs/hbbr 运行目录下使用命令 id_ed25519.pub
可以得到用于客户端与服务器认证的公钥。
1 | cd /home/Rustdesk |
如果要更改 key,请删除
id_ed25519
和id_ed25519.pub
文件并重新启动 hbbs/hbbr,hbbs 将会产生新的密钥对。
在 Rustdesk 客户端中,找到【ID/中继服务器】选项点进去设置成我们搭建好 hbbs/hbbr的
ID服务器 填写:IP/域名:端口(默认21116端口可以不填)
Key 填写:从上面步骤获取到的 cat id_ed25519.pub
填入
中继服务器和IP服务器,两项暂无需填写,那是用于多服务器部署所需的选项
例如:👇
1 | hbbs.example.com 或者 hbbs.example.com:21116 |
保存后即可和 Todesk、Teamviewer 等一样通过 ID+密钥的形式控制其他客户端。
需要注意的是不论是主控还是被控,都需要设置为同一个ID/中继服务器
才能够正常连接。其他平台更细节的使用可以参考官方文档(点击前往)进行学习和使用。
RustDesk 即使在后台运行,长时间未使用系统还是会进入休眠模式,目前版本不会阻止系统休眠,所以需要将系统设置成无休眠
设置成功后就可以使用远程加密中继连接了
四、结语
RustDesk 无疑是一款优秀的开源远程桌面工具,在这个远程桌面工具反复被商业公司养鱼、割韭菜的背景之下,它可谓是一股清流打破了这样的局面,给我们带来了更多的选择。
当然 RustDesk 本身仍有许多改进的空间,比如 APP 连接之后默认让画面适合屏幕的状态更好、扫码功能启动更流畅些、交互 UI 更友好一些等等。
希望 RustDesk 可以更好的发展下去吧