什么时候需要远程协助呢? 可能是远程自己在家的电脑,方便游戏排队或者下载文件;也可能是远程单位电脑,进行远程办公;当然,我觉得更多情况是远程小伙伴,帮小伙伴解决一些技术问题。

远程协助,除了可以用向日葵、QQ远程和Todesk等软件,有没有一款安全、经济和快速的软件呢?

RustDesk

本次教程教给大家如何通过 RustDesk ,部署自己的自建远程平台。

主要的优点:

  • 安全性:RustDesk使用安全的加密通信协议来保护数据传输,确保远程桌面连接的安全性和隐私保护。
  • 跨平台支持:RustDesk支持跨多个操作系统平台,包括Windows、macOS和Linux、Android等,这使得它非常灵活和适用于不同的工作环境。

而且从名字可以看出,RustDesk是使用Rust所编写,而使用Rust编写的程序,两大特点就是高效和并发,实际使用上,一台亚马逊入门(1C1G)EC2或者Lightsail(1C2G)给个人或者小型团队使用是没有问题的。

准备工具

服务器

目前, RustDesk 支持 Linux ServerWindows Server 服务器;看自己的取舍,Linux比较节约资源,而Windows方便小白上手。

为了重新体现我们是Linux技术博主,本次搭建使用 Linux Server 进行演示。

根据 RustDesk 官网描述和实际测试,一台1C 1G的亚马逊EC2,中继模式下,8对设备远程依旧不卡!!!

如果你是Windows Server用户,那么建议至少选择2C 4G的服务器配置,毕竟需要让Windows Server可以跑起来;本文主要演示Linux Server的方法。

RustDesk部署

下载服务端

Github地址

我们使用的是X86版本服务器,所以这里我们下载X86版本的服务包:

lmsoqgld.png

拷贝下载地址,到服务器上使用wget进行下载和解压:

# 使用wget进行下载1.1.8-2版本(最新版本可以看上述发布地址)
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip
# 使用unzip解压
unzip rustdesk-server-linux-amd64.zip
# 重命名解压后文件(方便管理)
mv amd64 RustDesk

现在,我们的RustDesk前期的准备就完成了。接下来,我们尝试运行,之后再注册为服务。

尝试运行

我们可以先尝试运行一下;确保可以使用后,我们再使用pm2挂起访问,或者systemctl注册为服务。

为了方便我们测试,这里使用screen双开两个虚拟终端,并以前台模式挂起后端进程:

# 安装screen
sudo apt install screen

之后,在刚刚我们的RustDesk解压后的目录内,可以看到相关的文件:

RustDesk
├── hbbr
├── hbbs
└── rustdesk-utils

解释一下各个作用:

  • hbbs: RustDesk的ID服务,用于分配和注册ID;
  • hbbr: RustDesk的中继服务,主要远程访问就是这个,如果直连远程不行,会使用hbbr进行流量中继。

之后,我们使用两个screen进行启动:

# 创建一个叫myHbbs的虚拟终端:
screen -R myHbbs
# 运行hbbs
./hbbs

通常情况下就会启动成功:

lmsotzvk.png

使用screen启动hbbs

紧接着,Ctrl+ad 返回主终端,启动 hbbr

# 创建一个叫yHbb的虚拟终端:
screen -R myHbbr
# 运行hbbr
./hbbr

到此,如果没什么防火墙、安全组问题, RustDesk 就启动完成了。

lmsovjnx.png

使用screen启动hbbr

lmsow8xi.png

使用screen启动完成

查看这个 RustDesk 目录,就可以发现,多了一些数据库文件和一个证书文件:

RustDesk
├── db_v2.sqlite3
├── db_v2.sqlite3-shm
├── db_v2.sqlite3-wal
├── hbbr
├── hbbs
├── id_ed25519
├── id_ed25519.pub
└── rustdesk-utils

我们需要拷贝.pub这个公钥文件,用于接下来的本地配置:

lmsoy67w.png

拷贝公钥文件

比如,我的公钥文件内容:C6bJn7*50nCK3y4=

接下来,我们可以进行本地的配置。

本地配置

RustDesk 上的客户端下载地址,下载我们的客户端:

RustDesk 客户端 Github 发布地址

通常情况下,我们下载最新的发布版本即可:

lmsp0j17.png

比如:我这里安装macOS,并打开:

lmsp1p1s.png

点击上面的三个点,进入配置:

lmsp2b10.png

找到网络配置:

lmsp2v9x.png

解锁网络配置,上方两个输入你的服务器IP,下方的Key输入上一步内我们拷贝的公钥(对于我是C6bJn7*50nCK3y4=),如果你有使用域名,IP部分也可以使用域名(CDN不行):

lmsp3l37.png

我们没有开启强制加密,所以理论上key不填写,也可以进行连接;只是,不填写key,网络传输可能不安全。

到此,我们的配置配置就完成了。我们可以体验一下。

注册服务

现在,我们回到服务端。刚刚使用的screen可能不太优雅,这里我们准备了两个方案注册为访问,方便管理。

使用pm2运行

如果要使用pm2运行,需要提前安装nodejs,使用nodejs的软件包管理器(npm或者yarn)安装pm2。

安装nodejs的方法,我在之前的文章内已经说的十分详细,这里就不再过多介绍,如果不知道如何操作,可以参考:

Windows/macOS/Linux上安装Node.js,并使用NVM管理多版本Node.js

就简单说一下思路和使用命令吧:

# 安装nvm
git clone https://github.com/nvm-sh/nvm.git ~/.nvm
# 追加到环境变量
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.zshrc
# 重载环境变量
source ~/.zshrc
# 使用nvm安装18版本nodejs
nvm install 18
# 使用nodejs的npm安装pm2
npm install -g pm2

之后,使用pm2的命令,启动hbbr和hbbs:

# 当前正在RustDesk的目录内
pm2 start hbbs
pm2 start hbbr

之后,就可以发现。RustDesk已经启动。 具体的pm2使用,以后有机会和大家讲解。

使用Systemctl运行

我其实挺喜欢用 systemctl 的;但是上篇文章,其实已经足够详细,这里就直接给配置的脚本吧,我们需要创建两个Server,首先是 hbbs :

[Unit]
Description=RustDesk Hbbs
After=network.target

[Service]
User=mintimate
Type=simple
WorkingDirectory=/home/mintimate/myApplication/RustDesk
ExecStart=/home/mintimate/myApplication/RustDesk/hbbs
ExecStop=/bin/kill -TERM $MAINPID

[Install]
WantedBy=multi-user.target

之后是 hbbr :

[Unit]
Description=RustDesk Hbbr
After=network.target

[Service]
User=mintimate
Type=simple
WorkingDirectory=/home/mintimate/myApplication/RustDesk
ExecStart=/home/mintimate/myApplication/RustDesk/hbbr
ExecStop=/bin/kill -TERM $MAINPID

[Install]
WantedBy=multi-user.target

到此,使用 Systemctl 注册为服务就完成啦。其实也可以使用 screen ,就是重启系统后,再次启动比较麻烦。

Q&A

个人的一些使用经验,还有一些常见的问题。

如何开启强制加密

如果你搭建好了 RustDesk 后,会发发现:不需要设置 key ,也可以进行 RustDesk 的连接。

这是因为 RustDesk 默认服务器端会开启加密,但是并不强制。

如何你想开启强制加密,可以在启动 hbbrhbbs 的时候,加上参数 -k _ :

./hbbr -k _
./hbbs -k _

这样,客户端建立的连接,就需要强制设置好 key ,也就是我们的 *.pub 文件,否则无法建立通讯和远程连接。

最后修改:2023 年 09 月 21 日
如果觉得我的文章对你有用,请随意赞赏o(* ̄▽ ̄*)ブ