前言

说起来,远程软件我也用过不少了,最早从学生时代的QQ远程桌面,到工作后接触到的Windows远程桌面、Teamviewer、VNC,再到后来的向日葵、AnyDesk、ToDesk,还有一些小众的远程工具。

一款款地用下来,这些软件虽然在使用体验上不断进步,也支持了越来越多的终端平台,但却也越来越臃肿,要么开始强制注册和非会员限速,要么在使用时会有一些限制,并且随着很多公司安全意识的提高,经常会出现把这些软件的服务器加入联网黑名单,限速甚至直接屏蔽的情况。

因此,我开始寻找一款新的远程软件,要求是功能足够简洁但满足基础使用、速度和画质兼顾、能通过代理或者其他方式绕过网络黑名单,如果能尽量便宜甚至免费就更好了。

幸运的是,我很快就找到了,也就是今天的主角——RustDesk。

 

RustDesk简介

RustDesk是一款在github上开源的免费远程桌面软件,主要基于Rust语言开发,有着以下的特性

  • 开源免费,没有账号,无需会员,终身免费使用
  • 开箱即用,Windows客户端免安装即可运行,无需多余配置
  • 兼容性好,客户端有Windows、MacOS、Linux、Android、IOS甚至网页端
  • 功能强大,支持文件传输、剪贴板、自定义画质、IP白名单、自定义ID等
  • 数据安全,端到端加密,并可以自行搭建服务器,保证数据的安全
  • 支持代理,可以设置Socks5代理绕过网络封锁

这其中最吸引我的一点就是自建服务器功能,传统的远程软件,都是由软件开发商提供服务器作为远程链路的中转,因此需要收取费用覆盖服务器维护成本,并且服务器也会因为距离、使用人数的原因出现网络卡顿的情况,还容易被办公网络进行针对性屏蔽导致无法使用,最后不可忽视的就是安全性,说不定哪天就会出现个人数据泄露的情况。

而自建服务器的话,就可以保证控制端、服务器、被控制端整个连接链路的关键节点都掌握在自己手里,大大提高了安全性,专供服务器的网速一般也很快,通常也不会被办公网络BAN掉服务器IP。

而且我手里正好有一个闲置的骨折价购买的国内服务器,那还不赶紧搞起来?

 

RustDesk自建服务器

如果使用官方提供的中转服务器的话可以跳过此部分。

服务端的搭建可以参考官方文档,如果服务器是Windows系统的可以看Windows&pm2方式,通过npm安装RustDesk服务。

而我的服务器是Ubuntu20.04系统,可以选择通过docker或者直接安装的方式进行搭建,这里就采用简单的直接安装的方式。

首先到github或者Gitee下载最新版的RustDesk-Server程序Linux版本,解压后得到hbbrhbbs两个文件,把这两个文件上传到自己服务器的目录下,例如/var/www/rustdesk/下,上传完后记得将文件权限改为可执行。

第二步,连接到自己的服务器上,安装pm2,这是一个用于管理后台运行服务的工具。

cd /var/www/rustdesk
apt install nodejs
apt install npm
npm install -g pm2

运行pm2 list查看pm2安装成功没问题后,使用pm2运行hbbrhbbs两个文件。

pm2 start hbbs -- -k _ -r 127.0.0.1:3000
pm2 start hbbr -- -k _

--后面的是传给pm2运行的程序的参数,其中-r参数以及后面的IP端口,用于指定服务器的IP和监听端口,可以省略掉此参数,这样就会使用默认的21117端口。

hbbs在第一次运行时,会自动产生一对加密私钥和公钥(分别位于运行目录下的id_ed25519id_ed25519.pub文件中),其主要用途是为了通讯加密。如果要更改密钥,可以删除这两个文件并重新启动hbbs和hbbr,就可以生成新的密钥。

在运行hbbs和hbbr的时候添加-k _ 参数,就可以禁止没有密钥的用户建立非加密连接,提高安全性。

默认情况下,hbbs 监听以下端口,务必在防火墙中开放这几个端口。

  • TCP(21115, 21116, 21117, 21118, 21119)
  • UDP(21116)

其中21115是hbbs用作NAT类型测试,21116/UDP是hbbs用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务,21117是hbbr用作中继服务, 21118和21119是为了支持网页客户端。

如果不需要网页客户端(21118,21119)支持,对应端口可以不开。

运行完毕后观察一下pm2的信息,确保hbbs和hbbr都是online状态。

到这一步,服务端就搭建完成了。

 

RustDesk客户端配置

先去官网下载RustDesk的客户端,以我常用的Windows客户端为例,打开后是这样的

看到这个界面,用过其他远程软件的人,应该就会使用了。

如果这台机器是被控机,那么最好还是安装一下,否则可能会出现一些问题。

 

自定义服务器配置

如果搭建了自定义服务器,那么可以点击ID右侧的三点按钮,在菜单中点击ID/中继服务器,会弹出以下窗口

在 ID 服务器输入框中填写自建服务器的域名或 ip 地址,另外两个地址可以不填,RustDesk会自动推导。

而key输入框中填写自建服务器时生成的id_ed25519.pub文件里面的内容。

点击确定后,观察RustDesk窗口下方的状态栏,如果显示就绪,那么就说明设置成功了;如果显示其他异常内容,那么要么自建服务器的服务运行异常,要么本地网络和自建服务器的端口不通,要么配置填写错误。

除了通过这个配置窗口添加自定义服务器配置以外,RustDesk客户端还可以通过客户端程序按一定格式命名实现快捷设置配置。

rustdesk.exe 修改为 rustdesk-host=<host-ip-or-name>,key=<public-key-string>.exe, 例如: rustdesk-host=192.168.1.137,key=xfdsfsd32=32.exe。

这样只要一启动客户端就可以设置好自建服务器设置,设置的参数可以在菜单-关于RustDesk中查看。

需要注意的是由于Windows系统中文件名里不能出现:等字符,因此这种方式不能设置服务器的端口,只能用于自建服务器时使用默认端口的情况,另外key也就是公钥的字符中也可能会出现特殊字符,此时就需要重新生成一对密钥使用。

 

总结

目前为止使用了一周左右,遇到的问题有以下几个:

  • 每次建立连接时不能秒连,需要等待十几秒钟左右
  • 组合快捷键的触发有问题,例如在按下Ctrl键后如果短时间内没能按下另一个触发键,会导致Ctrl出现连按的情况,而我的Listary快捷键是双击Ctrl,因此会造成搜索框不断闪烁
  • 被远程的电脑鼠标右键手势无效,只能变成普通右键效果,例如Quicker或者CentBrowser的右键手势

虽然有着这些问题,但在RustDesk的使用简单便捷、画面清晰流畅、链路安全放心、终身免费使用的优点下,我依然强烈推荐这款软件,而且随着版本更新,这些问题想必也会慢慢得到解决。

在此感谢RustDesk的开发者们。

 


人的一切痛苦,
本质上都是对自己的无能的愤怒。

——王小波