RustDesk通过API防止服务器被滥用 自动编译将服务器等信息内置客户端

175次阅读
5 条评论

共计 5755 个字符,预计需要花费 15 分钟才能阅读完成。

提醒:本文最后更新于 2025-09-02 01:08,文中所关联的信息可能已发生改变,请知悉!

视频教程

引言

之前,鼠标出过 rustdesk 的搭建、编译等教程。近期,有同学反应,之前的教程,已经失效了!现在,Github 无法通过设置变量,将服务器等信息编译进客户端!这可能是作者更新了源码,或者 Github 升级的缘故!同时,也有同学提出新诉求,问可以不可通过 API,控制客户端的使用,防止服务器被滥用!今天,鼠标就一次性解决以上所有问题,话不多说,开始教程!

服务端及 API 安装

若想通过 API,控制 RustDesk 客户端使用,我们用到 Github 大佬 lejianwen 修改的服务端源码,以及该大佬开源的 API 项目。

SSH 远程连接服务器

教程开始之前,我们需要准备一台云服务器,并用 WindTerm SSH 连接服务器。之前的视频,鼠标有详细讲过,还是不会的同学,可以看这期视频,这里就直接看我演示吧!

安装 1Panel 管理面板

接下来安装 rustdesk 服务端的时候,会用到 docker compose,鼠标依旧选择 1Panel,免费开源,界面简洁易用。同样,之前的视频也有详细说过,这里就不赘述了,还是不会的同学,翻翻这期视频,这里还是看我操作吧!

1Panel 安装脚本:

#RedHat / CentOS:curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
#Ubuntu:curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
#Debian:curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

安装过程注意:

  • 你可以自定义面板访问端口,例:6666
  • 也可以自定义用户名密码

服务器后台开放端口

1Panel 安装好后,按住 Ctrl 点击这个地址,即可访问 1Panel 面板。多数情况,不能正常访问,我们还需要在服务器后台,开放该端口。同时,我们将 rustdesk 服务端及 API 用到的端口,也一并开启。这类教程,鼠标也讲了很多次,不会的,看这期视频,这里以阿里云为例,进行操作演示。

开放端口列表:

TCP:21114-21119,6666(1Panel 自定义端口)
UDP:21116

Compose 一键部署 RustDesk 服务端及 API

访问 1Panel 面板,左侧导航点击容器,编排 - 创建编排,名称随意,便于区分就好,粘贴如下代码:

 networks:
   rustdesk-net:
     external: false
 services:
   rustdesk:
     ports:
       - 21114:21114
       - 21115:21115
       - 21116:21116
       - 21116:21116/udp
       - 21117:21117
       - 21118:21118
       - 21119:21119
     image: lejianwen/rustdesk-server-s6:latest
     environment:
       - RELAY=<relay_server[:port]>
       - ENCRYPTED_ONLY=1
       - MUST_LOGIN=Y
       - TZ=Asia/Shanghai
       - RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]>
       - RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]>
       - RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]>
       - RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
       - RUSTDESK_API_JWT_KEY=xxxxxx #  
     volumes:
       - /data/rustdesk/server:/data
       - /data/rustdesk/api:/app/data #将数据库挂载
     networks:
       - rustdesk-net
     restart: unless-stopped

参数提示:

RELAY=<relay_server[:port]> #中继服务器:21117
MUST_LOGIN=N #默认为 N,设置为 Y 则必须登录才能链接
RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]> #ID 服务器
RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]> #中继服务器
RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]> #API 服务器
RUSTDESK_API_JWT_KEY=xxxxxx #随便设置个字符串
/data/rustdesk/server #查看 key

点击确定,等待拉取 docker 镜像,出现这个提示,意味着 rustdesk 服务端及 API 部署完成。一个 compose 文件,将 rustdesk 服务端,以及 API 都安装好了,服务端是作者基于原版修改,目的是更兼容作者的第三方 API,同时也添加了一些功能,譬如,只有登录客户端,才能发起远程连接,这就有效杜绝客户端被滥用的情况。

  • 通过 docker 挂载的路径,可以查看客户端所用的 key。
  • API 登录地址为服务器 IP:21114, 用户名默认是 admin,密码可以通过刚部署的容器里日志查看,登录 API 后台后,切记及时修改密码。

./apimain reset-admin-pwd < 你的新密码 >

测试部署的服务端及 API

将服务器、API,以及 Key 等信息填入 rustdesk 客户端,进行远程连接测试,不出意外的情况,一切都正常,确定不登录客户端的情况,无法发起远程协助。

修改 RustDesk 源码

正如视频开头所说,之前的教程中讲到,利用 Github 的环境变量,将服务器等信息,编译到客户端,现在已经失效,无法将服务器等信息编译到 rustdesk 客户端。上一步,我们已经部署好了 rustdesk 的服务端及 API,接下来,鼠标将通过修改源码的方式,将服务器等信息,保存到客户端源码,并用 Github 的 Actions 自动编译客户端。

修改源码准备工作

修改 rustdesk 源码,我们用到 Git,用来克隆源码到本地修改,并且推送修改后的源码。因为 rustdesk 源码包含子模块,鼠标不会直接在 Github 上修改,所以只能采取 git 的方式。还有就是代码编辑器,本来工具想用 Notepad++,奈何其作者是个垃圾,算了,使用更好用更美观的 HBuilder X 吧!最后一个,就是解决 github 的访问问题,推荐使用 dev-sidecar。

dev-sidecar 安装及使用

鼠标博客下载并安装 dev-sidecar,管理员运行 dev-sidecar,根据引导安装证书,证书安装好后,首页开启代理服务、系统代理,以及 Git 代理。此时,再次打开 github,我们就可以正常访问使用 github 了。还有一点需要注意,就是这段提示内容,忽略可能会引起电脑无法上网。

git 下载安装

鼠标博客或者软件官网下载 git,全程选项保持默认下一步即可。安装好后,通过终端输入 git 命令,测试安装是否成功。

HBuilder X 下载安装

鼠标博客或者软件官网下载 HBuilder X,该软件为绿色免安装版本,解压即用。

Fork rustdesk 项目

Github 注册登录账号,Fork rustdesk 及子模块项目到自己的账号下。rustdesk 项目 代码页,点击 libs 后再点击这个 hbb,即可跳转到该 子模块项目,直接 fork 到自己账号下即可。考虑到安全性的问题,fork 的仓库无法设置为私有,你也可以自建私有仓库,分别导入 rustdesk 及子模块源码,这样可以有效防止服务器等信息泄露。

配置 github SSHkey

想要正常克隆推送 github 源码,我们需要配置 github 的 sshkey,以此对接 git 和 github。任务栏搜索框,搜索 git bash 并运行。在 git bash 代码框,依次输入如下代码并执行:

# 配置 Git 的用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"

#生成密钥(一直回车直至这个界面)ssh-keygen -t rsa -C "邮箱"

#查看公钥
cat ~/.ssh/id_rsa.pub

打开 github 个人中心 - 设置,左侧导航点击 SSH and GPG keys,再点击 New SSH key,标题随意,将 git bash 窗口公钥复制到 key 这里,最后点击 这里添加保存。

打开 Windows 终端或者 git bash,运行如下代码,测试是否可以成功链接 gtihub

# 测试连接 github
ssh -T git@github.com

终端询问是否继续连接,输入 Yes 回车确认,出现这个提示,就意味着我们通过 SSH 方式,可以正常连接 gtihub。

通过 Git 克隆 RuestDesk 源码到本地

本地任意目录,运行 Windows 终端或者 git bash,复制我们 fork 的 rustdesk 项目 SSH 地址,终端输入如下命令 +SSH 地址,将 RustDesk 源码仓库克隆到本地。

git clone --recurse-submodules <SSH 地址 > #--recurse-submodules 参数,递归克隆子模块

修改子模块路径

输入如下命令,进入主仓库目

cd RestDesk

修改主目录下.gitmodules 文件,将原作者的子模块 URL 替换为我们 Fork 的 地址,运行 HBuilder X,将文件直接拖放到 HBuilder X 主窗口,修改替换如下内容:

[submodule "libs/hbb_common"]
	path = libs/hbb_common
	url = < 替换为我们 fork 的 hbb_common 项目地址 >

同步子模块地址

git submodule sync

提交修改后的代码,并推送到主仓库:

git add .gitmodules
git commit -m "更新所有子模块地址至我的 Fork(备注内容)"
git push origin < 主仓库分支名,默认 master>

修改 ID/ 中继服务器

进入子模块文件夹

cd libs/hbb_common

配置子模块并创建新分支

git checkout -b < 新建分支名 >

修改子模块源码

libs\hbb_common\src\config.rs #修改该文件的 101-102 行,分别是服务器及 KEY

提交修改后的代码,并推送到子模块仓库:

git add .
git commit -m "改为自己的 ID/ 中继服务器"
git push origin < 新建的分支名 >  # 推送分支到我们子模块 Fork

返回主仓库主目录:

cd ../../.. 

更新子模块的 Commit ID:

git add libs/hbb_common  # 提交子模块的新 Commit
git commit -m "更新修改后的子模块"
git push origin < 主仓库分支名 >

修改替换 API 地址

仓库主目录,修改如下文件:

src\common.rs #947 行替换 API 地址

提交修改并推送到主仓库:

git add .
git commit -m "修改替换 API 地址"
git push origin < 主仓库分支名,默认 master>

删除客户端广告提示

仓库主目录,修改如下文件:

flutter\lib\desktop\pages\connection_page.dart

#81-110 行代码替换如下:Widget setupServerWidget() => Flexible(
       child: Offstage(
         offstage: !(!_svcStopped.value &&
             stateGlobal.svcStatus.value == SvcStatus.ready &&
             _svcIsUsingPublicServer.value),
         child: Row(
           crossAxisAlignment: CrossAxisAlignment.center,
           children: [],),
       ),
     );

提交修改并推送到主仓库:

git add .
git commit -m "修改删除客户端广告"
git push origin < 主仓库分支名,默认 master>

Github 编译客户端

通过以上操作,我们将服务器及 API 信息,写入到 rustdesk 的源码里。通过 github 的 Actions 进行编译,之前的视频鼠标有讲过,这里再简单演示下,不会的同学,可以翻看早期的视频,或者评论区留言。配置好自动编译后,接下来就是耐心等待编译。大概过了一个小时左右,Windows 的客户端编译好了,我们就可以下载使用了,客户端没有了那串广告提示,没有登录的情况下,是无法发起远程连接,说明 API 用户控制已经生效,登录用户后可以正常发起远程。

总结

以上,就是本期视频的全部内容,鼠标讲了 rustdesk 的服务端及 API 一键部署,同时通过修改代码,将服务器等信息写入到客户端。新版服务端,通过 girhub 大佬的修改,可以实现通过 API 用户,来控制客户端发起远程链接,这样有效防止自己的服务器被滥用。视频中涉及的软件工具,以及脚本代码等,都可以在鼠标博客免费获取!本期视频就到这里,谢谢您的观看!如果感觉有用,不妨关注下,点赞收藏一波,也不是不可以呀!

下载地址

文件名称:WindTerm
文件大小:31.2MB
下载地址:点击下载
下载声明:本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息。

文件名称:Git
文件大小:67MB
下载地址:点击下载
下载声明:本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息。

文件名称:DevSidecar
文件大小:65.5MB
下载地址:点击下载
下载声明:本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息。

文件名称:HBuilderX
文件大小:52.92MB
下载地址:点击下载
下载声明:本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息。

正文完
 0
鼠标
版权声明:本站原创文章,由 鼠标 于2025-04-11发表,共计5755字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(5 条评论)
ivanyang 评论达人 LV.1
2025-04-22 18:44:12 回复

太棒了

     中国江苏省苏州市电信
a80815213 评论达人 LV.1
2025-05-09 21:44:04 回复

怎么可以内置固定的远程连接密码,安装好后直接通过统一密码进行管理。

     中国河北省石家庄市移动
a995718 评论达人 LV.1
2025-06-29 00:11:01 回复

也是在libs/hub_common/config.rs里面具体在73行左右,把HARD那排代码改成如下
pub static ref HARD_SETTINGS: RwLock<HashMap> = {
let mut map = HashMap::new();
map.insert(“password”.to_string(), “固定密码”.to_string());
RwLock::new(map)
};

     中国贵州省遵义市电信
a995718 评论达人 LV.1
2025-06-29 00:11:34 回复

大佬什么时候出一期在本地编译的教程

     中国贵州省遵义市电信
hwlove 评论达人 LV.1
2025-08-03 09:16:39 回复

2025/08/03 09:14:08 创建编排 [rustdesk] 任务开始 [START]2025/08/03 09:14:29 编排创建输出: rustdesk Pulling
Get “https://registry-1.docker.io/v2/”: context deadline exceeded (Client.Timeout exceeded while awaiting headers)
2025/08/03 09:14:30 创建编排 失败: exit status 1
2025/08/03 09:14:31 [TASK-END] 为啥我的失败??????????

     中国陕西省移动