在远程桌面方面博主以前一直用的是TeamViewer,官方各种查商用加限制之后换成了国产的ToDesk,但是近来ToDesk也开始炸鱼了,强制登陆加各种限制。最近恰好看到Rustdesk转为开源模式了就摸索着尝试一下它的使用,体验真的很棒~


一、软件简介

RustDesk,工具如其名,基于高效的Rust语言构建的开源远程桌面工具。这款工具最早我是在V2EX上看到的,但是当时自建服务端需要支付100美金购买授权,用于展示的demo只能实现最简单的演示功能,内置的服务器似乎位于境外,无法作为生产力软件使用。

最近又看到群友提起,发现RustDesk已经将服务端开源并允许自行搭建中转服务器。开学以来博主频繁用到远程桌面软件,因为即使不在办公室也时常需要在办公室的电脑上录制会议、接收文件、刷网课等。从去年开始博主一直使用的是ToDesk,但是近期几个新版本主控不仅强制登陆还加入了针对Android被控的限制,免费版仅有支持一台设备且并且一个月才能更换一次。软件本身也有点小bug,手机作为主控时断开连接把app置于后台一段时间之后,再打开就会提示“账号未登陆”,只有重启软件后才能继续正常控制账户内的电脑。

简单总结一下博主这几天使用RustDesk的优势:

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

二、准备工作

除了日常使用的主控、被控手机和电脑之外,要准备的就只有一台服务器。


三、构建服务端

Rustdesk官方有提供docker一把梭的的部署方式,可以很方便地将服务端搭建起来。不过本文着重记录一下手动配置的方式,毕竟作为Rustdesk本身硬件要求极低,还是要把优势最大化展示出来。

官方文档点击前往

Rustdesk的服务端(即转发服务器)需要最少3个端口,程序占用另外两个用于实现Web端的远程桌面(参考:点击前往)。官方文档对于各端口的用途说明比较简略,下表是一个简要的概述。我引入了一个“锚点”的概念,因为针对Rustdesk服务端的自定义端口设置是通过指定锚点再通过-1、+2来产生的,并不是让你自行随意指定五个端口。

端口号协议程序用途锚点
21115tcpHBBSNAT类型测试
21116tcp/udpHBBSTCP 打洞与连接服务/UDP ID注册与心跳服务HBBS锚点
21117tcpHBBR中继服务HBBR锚点
21118tcpHBBSWebSocket服务
21119tcpHBBRWebSocket转发

HBBR、HBBS服务端64位的Windows/Linux的预编译包可以通过GitHub Release进行获取,其余的架构则需要自行clone源码通过cargo进行编译(官方文档)。若构建中遇到问题可以在评论区留言,博主可以协助或者完善本文。

GitHub预编译包点击前往

官方的文档推荐使用PM2来守护进程(点击前往),但是我感觉为了一个轻量级的远程桌面工具,装一套Node.js的工具有一点不太合适。博主还是推荐通过systemd实现进程的管理、开机自启。

HBBS

解压出来的hbbs文件先通过chmod +x hbbs赋予可执行权限,先运行一次./hbbs,生成用于客户端认证使用的公钥id_ed25519.pub,随后用cat id_ed25519.pub命令查看公钥并记下。然后通过喜欢的编辑器编辑/etc/systemd/system/hbbs.service,将用于参考的以下配置根据需要进行修改并保存,这时也要将强制校验密钥以-k _参数写入启动命令中。

⚠警告:博主强烈建议增加-k参数设置,否则hbbs将不会强制校验客户端的密钥是否正确,导致转发服务器可能会被匿名使用!
1234567891011121314151617181920# systemd配置路径# /etc/systemd/system/hbbs.service [Unit]Description=RustDeskServiceAfter=network.target [Service]Type=simpleUser=rootRestart=on-failureRestartSec=5s#设置运行路径WorkingDirectory=/程序路径/rustdesk#可修改锚点端口,当前为21116(锚点)和21115(锚点-1)和21118(锚点+2)#-r用于指定网卡IP(适用多网卡),-k参数用于强制校验客户端公钥,用于避免未授权的使用ExecStart=/程序路径/rustdesk/hbbs-r0.0.0.0-p21116-k_ [Install]WantedBy=multi-user.target

HBBR

解压出来的hbbr文件先通过chmod +x hbbr赋予可执行权限,然后通过喜欢的编辑器编辑/etc/systemd/system/hbbr.service,将用于参考的以下配置根据需要进行修改并保存,同样将密钥校验以-k _参数写入启动命令中。

hbbr.service

1234567891011121314151617181920# systemd配置路径# /etc/systemd/system/hbbr.service [Unit]Description=RustDeskServiceAfter=network.target [Service]Type=simpleUser=rootRestart=on-failureRestartSec=5s#设置运行路径WorkingDirectory=/程序路径/rustdesk#可修改锚点端口,当前为21117(锚点)和21119(锚点+2)#-k参数用于强制校验客户端公钥,用于避免未授权的使用ExecStart=/程序路径/rustdesk/hbbr-p21117-k_ [Install]WantedBy=multi-user.target

为了简化这个流程,你可以将解压出来预编译的hbbrhbbs放于/home/rustdesk文件夹下,直接执行以下两个txt中的内容(点击前往)创建service。.service设置好后,即可通过service hbbs startservice hbbr start来启动这两项服务,启动后可以通过service hbbs statusservice hbbr status查看进程的运行状态,显示绿色的Active即无误。

一切准备就绪后即可通过systemctl enable hbbssystemctl enable hbbr允许它们开机自启。最后端口的放行,iptablesfirewalldufw的命令分别如下,其中的端口请按照你的设置的进行放行(默认21115-21117),这里需要注意hbbs锚点端口必须同时放行tcp和udp。WEB端由于正在测试加上博主暂时没有这个需求,就没有去尝试,如果你有好的实践欢迎在评论区分享你的经验~

端口放行

Shell

123456789101112131415161718#CentOS firewalldfirewall-cmd--zone=public--add-port=21115/tcp--permanentfirewall-cmd--zone=public--add-port=21116/tcp--permanentfirewall-cmd--zone=public--add-port=21116/udp--permanentfirewall-cmd--zone=public--add-port=21117/tcp--permanent #Debian/Ubuntu ufwufwallow21115/tcpufwallow21116/tcpufwallow21116/udpufwallow21117/tcp #iptablesiptables-IINPUT1-ptcp--dport21115-jACCEPTiptables-IINPUT1-ptcp--dport21116-jACCEPTiptables-IINPUT1-pudp--dport21116-jACCEPTiptables-IINPUT1-ptcp--dport21117-jACCEPTiptables-save//保存(解决重启失效)

四、配置客户端

在新版的服务中,在hbbs/hbbr运行目录下执行cat id_ed25519.pub可以得到用于客户端与服务器认证的公钥(配图操作有误,感谢作者指正)。

在Rustdesk客户端中,找到【ID/中继服务器】选项点进去设置成我们搭建好hbbs/hbbr的服务器(官方文档)。

其中第一项ID服务器处以【IP:端口】的形式填写服务器服务器IPhbbs锚点端口、第二项以相同的格式填写服务器IPhbbr锚点端口、第四项Key将上文获取到的id_ed25519.pub填入,保存后即可和Todesk、Teamviewer等一样通过ID+密钥的形式控制其他客户端。

需要注意的是不论是主控还是被控,都需要设置为同一个ID/中继服务器才能够正常连接使用。除此之外,局域网IP直连可以在被控的设置菜单中开启【允许IP直接访问】,然后在主控端连接框直接输入【被控IP:21116】进行连接。其他平台更细节的使用可以参考官方文档(点击前往)进行学习。


五、结语

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

当然RustDesk本身仍有许多改进的空间,比如APP连接之后默认让画面适合屏幕的状态更好、扫码功能启动更流畅些、交互UI更友好一些等等。根据同类的软件猜测RustDesk未来可能会有更高效的组件如NVENC、更完备的账户和控制系统等等,也希望RustDesk能够保持开源的初心并找到合适自己的盈利方式,毕竟光用爱发电是不可能的。这里有一个作者接受捐助的网址(点击前往),有余力可以考虑支持一下作者。

最后呢,就再次感谢作者带来这样一款好用的软件吧~

转载自: Luminous' Home » 【RustDesk】自建远程桌面服务替代TeamViewer/Todesk



如果觉得我的文章对你有用,请随意赞赏

本文标题:【RustDesk】自建远程桌面服务替代TeamViewer/Todesk

本文链接:https://oior.net/archives/55.html

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。