彻底解决 RustDesk API 自建服务器“强制登录”失效问题

0x00 缘起

在自建 RustDesk 远程桌面服务时,为了保障私有服务的安全性和防止 ID 被滥用,开启"强制登录(Must Login)"是核心安全需求。然而,在使用某些 Go 版本的 RustDesk API 管理后台时,发现网页端的 MUST_LOGIN 选项存在"配置无法持久化"的问题:每当重启 hbbs 服务或服务器后,该选项会自动回退为关闭状态,导致安全策略形同虚设。

本文旨在通过底层逻辑分析,找到该配置的真正归属,并提供一种"物理级"的永久解决方案。

0x01 环境

  • 操作系统:Linux (Ubuntu/CentOS/Debian)

  • 服务管理:Systemd

  • 核心组件

    • hbbs (RustDesk ID Server)

    • rustdesk-api (基于 Go 开发的第三方 API 适配器)

  • 数据库:SQLite (用于存储用户及审计日志)

0x02 对策

问题分析

通过对系统进行深度排查(包括检查 SQLite 数据库、MySQL 映射、环境变量注入以及 .env 配置文件),发现该 API 的 MUST_LOGIN 开关具有以下特性:

  1. 内存运行态 :网页端的开关本质上是通过 TCP 端口(如 21115)向正在运行的 hbbs 进程发送实时指令。

  2. 非持久化 :由于指令是直接发给进程内存的,一旦 hbbs 进程重启,内存状态清空,配置即刻失效。

  3. 环境隔离:Web API 尝试修改环境配置时可能受限于权限,无法将状态写入磁盘。

解决途径

与其依赖不稳定的 Web 指令下发,不如利用 hbbs 原生支持的启动参数。经查阅 hbbs --help,该程序内置了 --must-login 参数。

最终方案: 将强制登录逻辑硬编码进 Systemd 服务启动项。

  1. 修改服务文件

    编辑 hbbs.service 配置文件:

    复制代码
    vi /etc/systemd/system/hbbs.service
  2. 注入原生参数

    ExecStart 指令末尾添加 --must-login Y

    复制代码
    # 示例修改
    ExecStart=/opt/rustdesk-server/hbbs -r <your-domain> --must-login Y
  3. 应用配置

    复制代码
    systemctl daemon-reload
    systemctl restart hbbs.service

如何验证

  • 进程验证 :执行 ps aux | grep hbbs,确认启动命令中包含 --must-login Y 参数。

  • 功能验证 :使用 RustDesk 客户端在未登录状态下尝试连接,若服务器直接拦截并提示"未授权"或"需要登录",则说明策略已永久生效。

0x03 结论

在复杂的自建服务架构中,Web 管理面板往往只是"控制层",而真正的"逻辑层"位于底层进程的启动参数中。当遇到配置反复重置的现象时,跳过 UI 界面直接在 Systemd 服务层级进行参数硬编码,是实现配置持久化最稳妥、最可靠的手段。

0x04 参考

  1. RustDesk 官方文档: https://rustdesk.com/docs/en/self-host/

  2. RustDesk-API (Go) 项目仓库: https://github.com/lejianwen/rustdesk-api

  3. Systemd 入门指南: https://www.freedesktop.org/wiki/Software/systemd/

0x06 后记

"Truth can be stated in a thousand different ways, yet each one can be true." ------ Swami Vivekananda

相关推荐
Industio_触觉智能16 天前
玩转RK3588远程控制,Ubuntu22.04 Wayland安装RustDesk工具
linux·ubuntu·rk3588·远程工具·rustdesk·wayland·ubuntu22.04
Python-AI Xenon3 个月前
基于RustDesk自建服务器实战指南(跨平台免费远程控制安卓设备)
docker·远程控制·rustdesk·云计算运维
福大大架构师每日一题3 个月前
RustDesk 1.4.5 最新发布:远程权限细分、相对鼠标模式、移动端键盘优化,全平台更新来袭!
计算机外设·rustdesk
福大大架构师每日一题6 个月前
rustdesk 1.4.3 发布:新增虚拟鼠标、Wayland 多显示器支持等功能
计算机外设·rustdesk
未来之窗软件服务7 个月前
操作系统应用开发(二十七)网页访问远程桌面—东方仙盟筑基期
远程桌面·rustdesk·仙盟创梦ide·东方仙盟
未来之窗软件服务7 个月前
操作系统应用开发(二十八)rust OIDC服务器—东方仙盟筑基期
服务器·rustdesk·仙盟创梦ide·东方仙盟
行云流水剑7 个月前
【学习记录】宝塔面板 + Docker 快速部署 RustDesk 自建远程控制服务器
服务器·docker·开源·p2p·rustdesk
未来之窗软件服务7 个月前
操作系统应用开发(十四)RustDesk服务器配置——东方仙盟筑基期
运维·服务器·远程桌面·rustdesk·仙盟创梦ide·东方仙盟
未来之窗软件服务7 个月前
操作系统应用开发(十三)RustDesk文件服务搭建——东方仙盟筑基期
rustdesk·仙盟创梦ide·东方仙盟·远程桌