首页
关于
Search
1
AdGuardHome 安装及部署教程
47,819 阅读
2
关于微软Azure学生白嫖指南
12,186 阅读
3
Oracle开放全部端口并关闭防火墙
12,169 阅读
4
搭建基于telegram的无限网盘
11,539 阅读
5
最新Cloudflare免费自选IP教程(非Partner)
10,195 阅读
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
登录
找到
1
篇与
rustdesk
相关的结果
2025-09-22
RustDesk 通过 API 防止服务器被滥用 自动编译将服务器等信息内置客户端
RustDesk 通过 API 防止服务器被滥用 自动编译将服务器等信息内置客户端 原文地址 https://smianao.com/1414.htmlimage图片 引言 现在,Github 无法通过设置变量,将服务器等信息编译进客户端!这可能是作者更新了源码,或者 Github 升级的缘故!同时,可以通过 API,控制客户端的使用,防止服务器被滥用 服务端及 API 安装 若想通过 API,控制 RustDesk 客户端使用,我们用到 Github 大佬 lejianwen 修改的服务端源码,以及该大佬开源的 API 项目。 服务器后台开放端口 1Panel 安装好后,按住 Ctrl 点击这个地址,即可访问 1Panel 面板。多数情况,不能正常访问,我们还需要在服务器后台,开放该端口。同时,我们将 rustdesk 服务端及 API 用到的端口,也一并开启。这类教程,鼠标也讲了很多次,不会的,看这期视频,这里以阿里云为例,进行操作演示。 开放端口列表: TCP:21114-21119,6666(1Panel 自定义端口) UDP:21116Compose 一键部署 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=N - 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 # jwt key 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 客户端,进行远程连接测试,不出意外的情况,一切都正常,确定不登录客户端的情况,无法发起远程协助。 通过 Github Action 编译 rustdesk 利用 Github 的环境变量,将服务器等信息,编译到客户端,现在已经失效,无法将服务器等信息编译到 rustdesk 客户端。上一步,我们已经部署好了 rustdesk 的服务端及 API,接下来,鼠标将通过修改源码的方式,将服务器等信息,保存到客户端源码,并用 Github 的 Actions 自动编译客户端。 修改源码准备工作 修改 rustdesk 源码,我们用到 Git,用来克隆源码到本地修改,并且推送修改后的源码。因为 rustdesk 源码包含子模块,鼠标不会直接在 Github 上修改,所以只能采取 git 的方式。还有就是代码编辑器,使用更好用更美观的 HBuilder X git 下载安装 软件官网下载 git,全程选项保持默认下一步即可。安装好后,通过终端输入 git 命令,测试安装是否成功。 Fork 或者 import rustdesk 项目 Github 注册登录账号,import rustdesk 及子模块项目到自己的账号下。rustdesk 项目 代码页,点击 libs 后再点击这个 hbb,即可跳转到该 子模块项目,直接 import 到自己账号下即可。(建议 import 并设置不公开,因为后面如果需要固定被控端密码的话,你的密码会以明文的形式公开在自己名下的仓库中) 配置 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。 克隆主项目并配置子模块 本地任意目录,运行 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原代码: pub const RENDEZVOUS_SERVERS: &[&str] = &["rs-ny.rustdesk.com"]; pub const RS_PUB_KEY: &str = "OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=";pub const RENDEZVOUS_SERVERS: &[&str] = &["<自己的id_server>,不带端口"]; pub const RS_PUB_KEY: &str = "<自己的id_ed25519.pub>";或者找到 HARD_SETTINGS 字段 将那一整行替换为如下代码块: pub static ref HARD_SETTINGS: RwLock<HashMap<String, String>> = { let mut map = HashMap::new(); map.insert("password".to_string(), "<明文填写你要固定的被控端密码>".to_string()); RwLock::new(map) };提交修改后的代码,并推送到子模块仓库: git add . git commit -m "改为自己的 ID/ 中继服务器" git push origin < 新建的分支名 > # 推送分支到我们子模块 Fork(hbb_common 仓库的相关改动直接在网页修改也可以) 返回主仓库主目录: cd ../../..更新子模块的 Commit ID: git add libs/hbb_common # 提交子模块的新 Commit git commit -m "更新修改后的子模块" git push origin < 主仓库分支名 >配置主项目文件 修改替换 API 地址 仓库主目录,修改如下文件:src\common.rs #1027 行替换 API 地址 可以通过搜索get_custom_rendezvous_server,然后往下翻找到.to_owned(),替换前面的URL即可 let s0 = get_custom_rendezvous_server(custom); if !s0.is_empty() { let s = crate::increase_port(&s0, -2); if s == s0 { return format!("http://{}:{}", s, config::RENDEZVOUS_PORT - 2); } else { return format!("http://{}", s); } } "https://admin.rustdesk.com".to_owned() }提交修改并推送到主仓库: git add . git commit -m "修改替换 API 地址" git push origin < 主仓库分支名,默认 master>删除客户端广告提示 仓库主目录,修改如下文件: 打开flutter/lib/desktop/pages/connection_page.dart 原代码为: #原代码为: setupServerWidget() => Flexible( child: Offstage( offstage: !(!_svcStopped.value && stateGlobal.svcStatus.value == SvcStatus.ready && _svcIsUsingPublicServer.value), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text(', ', style: TextStyle(fontSize: em)), Flexible( child: InkWell( onTap: onUsePublicServerGuide, child: Row( children: [ Flexible( child: Text( translate('setup_server_tip'), style: TextStyle( decoration: TextDecoration.underline, fontSize: em), ), ), ], ), ), ) ], ), ), );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>git clone 你自己名下的 rustdesk 仓库到本地,首先删除官方源码中的引用 hbb_common 子模块(直接在本地删除 libs/hbb_common 那个空文件夹即可) cd 到本地 rustdesk 仓库根目录,添加上面自己修改过的 hbb_common 子模块 git submodule add https://github.com/<你自己的github用户名>/hbb_common libs/hbb_common替换过子模块后 push,再输一次如下指令强制更新子模块 git submodule syncGithub Action开始编译 在 <自己名下的>/rustdesk 项目,找到 Settings → Actions → General,确保勾选 Allow all actions and reusable workflows 和 Read and write permissions 两项 回到本地 rustdesk 仓库,创建一个 tag git tag -a <自己拟一个tag名> -m "这是我的自定义客户端tag"在 <自己名下的>/rustdesk 项目,找到 Actions,点击 "i understand xxxx" 那个按钮,回到本地 rustdesk 仓库,输入 git push --tags将刚才新创建的标签同步到远程仓库 在 Action 页面中,选择 Flutter Nightly Build, 并点开 branch 下拉,选择刚才创建的标签 image图片
技术搬砖
# Github Action
# rustdesk
# 编译
# rustdesk-api
admin
9月22日
0
12
0