什么时候需要远程协助呢? 可能是远程自己在家的电脑,方便游戏排队或者下载文件;也可能是远程单位电脑,进行远程办公;当然,我觉得更多情况是远程小伙伴,帮小伙伴解决一些技术问题。
远程协助,除了可以用向日葵、QQ远程和Todesk等软件,有没有一款安全、经济和快速的软件呢?
RustDesk
本次教程教给大家如何通过 RustDesk ,部署自己的自建远程平台。
主要的优点:
- 安全性:RustDesk使用安全的加密通信协议来保护数据传输,确保远程桌面连接的安全性和隐私保护。
- 跨平台支持:RustDesk支持跨多个操作系统平台,包括Windows、macOS和Linux、Android等,这使得它非常灵活和适用于不同的工作环境。
而且从名字可以看出,RustDesk是使用Rust所编写,而使用Rust编写的程序,两大特点就是高效和并发,实际使用上,一台亚马逊入门(1C1G)EC2或者Lightsail(1C2G)给个人或者小型团队使用是没有问题的。
准备工具
服务器
目前, RustDesk 支持 Linux Server 和 Windows Server 服务器;看自己的取舍,Linux比较节约资源,而Windows方便小白上手。
为了重新体现我们是Linux技术博主,本次搭建使用 Linux Server 进行演示。
根据 RustDesk 官网描述和实际测试,一台1C 1G的亚马逊EC2,中继模式下,8对设备远程依旧不卡!!!
如果你是Windows Server用户,那么建议至少选择2C 4G的服务器配置,毕竟需要让Windows Server可以跑起来;本文主要演示Linux Server的方法。
RustDesk部署
下载服务端
我们使用的是X86版本服务器,所以这里我们下载X86版本的服务包:
拷贝下载地址,到服务器上使用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
通常情况下就会启动成功:
紧接着,Ctrl+a
和 d
返回主终端,启动 hbbr 。
# 创建一个叫yHbb的虚拟终端:
screen -R myHbbr
# 运行hbbr
./hbbr
到此,如果没什么防火墙、安全组问题, RustDesk 就启动完成了。
查看这个 RustDesk 目录,就可以发现,多了一些数据库文件和一个证书文件:
RustDesk
├── db_v2.sqlite3
├── db_v2.sqlite3-shm
├── db_v2.sqlite3-wal
├── hbbr
├── hbbs
├── id_ed25519
├── id_ed25519.pub
└── rustdesk-utils
我们需要拷贝.pub这个公钥文件,用于接下来的本地配置:
比如,我的公钥文件内容:C6bJn7*50nCK3y4=
接下来,我们可以进行本地的配置。
本地配置
到 RustDesk 上的客户端下载地址,下载我们的客户端:
通常情况下,我们下载最新的发布版本即可:
比如:我这里安装macOS,并打开:
点击上面的三个点,进入配置:
找到网络配置:
解锁网络配置,上方两个输入你的服务器IP,下方的Key输入上一步内我们拷贝的公钥(对于我是C6bJn7*50nCK3y4=),如果你有使用域名,IP部分也可以使用域名(CDN不行):
我们没有开启强制加密,所以理论上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 默认服务器端会开启加密,但是并不强制。
如何你想开启强制加密,可以在启动 hbbr 和 hbbs 的时候,加上参数 -k _
:
./hbbr -k _
./hbbs -k _
这样,客户端建立的连接,就需要强制设置好 key ,也就是我们的 *.pub
文件,否则无法建立通讯和远程连接。