自建远程桌面连接服务,RustDesk搭建教程

本文最后更新于 2024年7月13日 上午

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

远程协助,除了可以用向日葵、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进行演示(亚马逊 EC2)。

如果你并没有服务器设备,需要一个购买/租借,可以先访问亚马逊的用户试用,免费试用。等试用期过,Linux差不多也使用熟练,EC2也不贵;甚至可以买亚马逊的Lightsail,性价比很高。

当然,如果你需要大陆服务器,强烈推荐:

另外,为大家争取到优惠*(੭ˊᵕˋ)੭ଘ:

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

实际上,就算再翻翻,估计也不会卡;亚马逊的EC2免费套餐的网络,可是300Mbps~1000Mbps的速度;理论上,一个中型企业使用都够,就是套餐内的100G流量中继情况下可能不够。

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

辅助视频

部分东西,还是视频比较清晰。

这里做个视频,主要内容:

  • 演示如何初始化亚马逊EC2
  • 如何在SSH连接服务器
  • 如何部署RustDesk服务
  • 如何注册为服务(Systemctl版本)

做教程视频不易(B站根本不会推荐引流),请务必一键三连嗷~

支持创作

制作教程不易,如果热心的小伙伴,想支持创作,可以加入我们的「爱发电」电圈(还可以解锁远程协助、好友位😃):

当然,也欢迎在B站或YouTube上关注我们:

更多:

服务器初始化

因为是第一次介绍亚马逊的EC2服务器,这里我们来详细介绍一下如何初始化亚马逊服务器。

启动实例

我们在拥有了亚马逊AWS的账号并绑定了VISA信用卡,就可以启动EC2的实例了,也就是启动一台服务器。 我们这里就启动一台服务器进行演示。

部署新的实例

出于个人习惯,我使用Debian系列的系统镜像;你可以和我一样,也可以按个人喜好选择Ubuntu、CentOS等,不过我不是很推荐CentOS、Redhat(毕竟CentOS现在已经停止维护)

本次部署新的实例

密钥对(登录)中,我们最好创建RSA密钥对,方便我们一会进行SSH的远程登录:
创建密钥对

创建好后,密钥会自动下载:
创建并下载下来的密钥

关于安全组,如果你是第一次使用服务器,那么我建议你刚开始可以放行所有端口;如果你已经对安全组轻车熟路,那么需要放行本次使用使用的端口:

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

放行全部端口

连接服务器

之后,我们就可以连接服务器;举个例子,我这次最后购买的EC2:
本次使用的EC2实例

点击进入,我们的可以使用公网IP进行登录(这里我分配了弹性IP):
公网IPV4

打开我们本地的SSH工具。macOS和Linux用户可直接使用自带的Terminal工具;Windows11可以使用自带的Windows Terminal(Windows10可以在自带的应用商店内找到Windows Terminal)。

连接的SSH命令:

1
ssh admin@<AWS的IP> -i <RSA地址>

其中:

  • admin为AWS服务器默认用户;
  • <AWS的IP>为上文我们创建的EC2公网IP;
  • <RSA地址>为上文我们创建并自动下载的密钥对

比如我远程登录成功:
使用RSA远程登录成功

登录好以后,记得更新软件包管理器:

1
sudo apt update -y

建议更改一下时区,方便我们后续查看日志时候,时间和本地统一:

1
2
# 设置时区为东八区的上海
sudo timedatectl set-timezone Asia/Shanghai

设置时区

创建新用户

为了方便我们后续操作,我们创建一个新用户,便于隔离我们后续的操作:

1
2
# 创建名叫mintimate的用户
sudo useradd -m mintimate

之后,设置mintimate的默认用户密码:

1
sudo passwd mintimate

设置过程中,密码会自动隐藏。

如果你想直接使用新用户进行SSH的登录,你可以修改SSH服务端配置(/etc/ssh/sshd_config),其中的运行密码登录注释或者设置为yes的:
允许密码登录

最后,重启SSH服务:

1
2
# 重启SSH服务
sudo systemctl restart sshd

这样,就可以使用用户进行密码登录:
密码登录成功

当然,设置密码登录是完全可选的;你也可以直接使用自带的admin用户配合密钥进行登录。

RustDesk部署

现在,我们就可以进行RustDesk的部署。如果你不是使用创建的用户进行登录,那么你可以使用su命令进行切换:

1
2
# 切换到mintimate用户
sudo su - mintimate

为了方便管理,我们创建一个目录,便于管理:

1
2
# 创建一个空目录,用于安装RustDesk
mkdir ~/myApplication

下载服务端

进入RustDesk的Github地址:

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

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

1
2
3
4
5
6
# 使用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双开两个虚拟终端,并以前台模式挂起后端进程:

1
2
# 安装screen
sudo apt install screen

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

1
2
3
4
RustDesk
├── hbbr
├── hbbs
└── rustdesk-utils

RustDesk Server内包含的内容

解释一下各个作用:

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

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

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

通常情况下就会启动成功:
使用screen启动hbbs

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

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

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

使用screen启动完成

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

1
2
3
4
5
6
7
8
9
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,并打开:
在macOS上打开RustDesk

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

找到网络配置:
网络配置界面

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

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

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

测试使用

现在,我使用一台Linux虚拟机和我的macOS进行演示,首先在Kali Linux上安装RustDesk:

1
2
3
4
# 下载最新版本的RustDesk Debian客户端
wget https://github.com/rustdesk/rustdesk/releases/download/1.2.2/rustdesk-1.2.2-aarch64.deb
# 使用dpkg进行安装
sudo dpkg -i rustdesk-1.2.2-aarch64.deb

Linux上安装RustDesk

安装好后,打开RustDesk:
Linux上打开RustDesk

和刚刚一样,我们需要配置好我们自己的服务器参数。在macOS上就可以远程它了:
macOS上发起远程请求

这个时候,实际上Linux上也是可以直接点击接受的:
Linux上接受远程请求

最后的“套娃”效果:
远程协助的效果

注册服务

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

使用pm2运行

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

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

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

1
2
3
4
5
6
7
8
9
10
11
# 安装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

安装好nvm

安装好pm2

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

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

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

使用Systemctl运行

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

1
2
3
4
5
6
7
8
9
10
11
12
13
[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:

1
2
3
4
5
6
7
8
9
10
11
12
13
[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 _:

1
2
./hbbr -k _
./hbbs -k _

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

END

好啦,本次的RustDesk演示就到这里;总的来说,还是很简单的;当然,对于小白用户可能会有一定的难度,建议配合教程和官方文档的同时,还需要配合一些网上Linux教程使用,尤其是亚马逊服务器的使用教程。

我在注册亚马逊服务器的时候,其实就卡了挺久的。

有什么问题,可以评论区留言哦。爱发电用户可以优先快速处理,我们有机会再见👋。



自建远程桌面连接服务,RustDesk搭建教程
https://www.mintimate.cn/2023/08/27/guideToHostRustDesk/
作者
Mintimate
发布于
2023年8月27日
许可协议