当前位置: 代码网 > it编程>编程语言>rust > CentOS服务器+Win客户端安装部署远程控制RustDesk教程

CentOS服务器+Win客户端安装部署远程控制RustDesk教程

2025年12月21日 rust 我要评论
rustdesk是一款开源的远程桌面控制软件,采用 rust 语言编写。它允许用户通过网络远程控制另一台计算机,类似于 teamviewer、anydesk、向日葵等商业软件。1:rustdesk 概

rustdesk 是一款开源的远程桌面控制软件,采用 rust 语言编写。它允许用户通过网络远程控制另一台计算机,类似于 teamviewer、anydesk、向日葵等商业软件。

1:rustdesk 概览

1.1:项目简介

rustdesk 它是一个远程控制开源项目,该项目支持自己搭建服务器。

rustdesk 默认提供免费公共中继服务,但 rustdesk 的中继服务器在海外,所以延迟非常明显,所以可以自己搭建服务器。

1.2:工作原理

rustdesk 会先用 tcp 21116 信令服务 nat 打洞,如果打洞成功,直接 p2p 直连,rustdesk 不参与中继。

rustdesk 如果没有打洞成功,则走 tcp 21117 中继服务,延迟、画质取决于中继服务器的带宽。

hbbs 监听端口hbbr 监听端口
21115(tcp):用作 nat 类型测试21117(tcp):中继服务
21116(tcp):nat 打洞与连接服务21119(tcp):支持 web 客户端
21118(tcp):支持 web 客户端
21116(udp):id 注册与心跳服务

1.3:核心特性

  • 完全开源:代码在 github 上公开,可自行审查和部署

  • 跨平台支持:windows、macos、linux、android、ios、web 浏览器

  • 自托管选项:可以部署自己的中继服务器,数据完全自主掌控

  • 轻量高效:安装包小,资源占用低,连接速度快

  • p2p 直连:在理想网络条件下会自动建立点对点直连,减少延迟

1.4:核心功能

功能说明
远程桌面控制实时查看和操作远程计算机桌面
文件传输在本地和远程计算机间双向传输文件
远程终端访问远程计算机的命令行/终端(类 ssh)
语音通话远程协助时的语音沟通
聊天功能内置文字聊天窗口
多显示器支持支持远程多显示器切换
远程打印将远程文件打印到本地打印机
会议模式支持多人同时查看同一台远程桌面

1.5:相关链接

web、api 部署教程:https://www.52pojie.cn/thread-1708319-1-1.html

rustdesk 服务端下载:https://github.com/rustdesk/rustdesk-server/releases

rustdesk 客户端下载:https://github.com/rustdesk/rustdesk/releases/tag/1.2.3-2

rustdesk 官方部署教程:https://rustdesk.com/docs/zh-cn/

2:部署 rustdesk 服务

我的服务器是 centos7.6 64位,所以下载 rustdesk-server-linux-amd64.zip,用 unzip 解压后执行 hbbr(id)hbbs(中继)

请注意 tcp 21115-21119 和 1 个 udp 21116 都要在安全组放行,如果有宝塔,宝塔的防火墙也要放行。

unzip rustdesk-server-linux-amd64.zip
mv amd64 rustdesk_server
cd rustdesk_server
# 启动id注册服务,后台运行
# -k _ 用于强制被控端输入key,因为默认情况下只需要主控端输入key就能连接
./hbbs -k _ &
# 启动中继服务,后台运行
# 启动后生成公私密钥对(id_edxxxx,id_edxxxx.pub)
./hbbr -k _ &

3:部署客户端

3.1:win 客户端

由于我是 win 环境,所以下载 rustdesk-1.2.3-2-x86_64.exe,打开后是非安装版本,也可作为主控和被控端,但可能会有一些限制,最好用安装一下。

示例: 笔记本无影云电脑 都安装了 rustdesk for win 客户端,并且 id/中继服务器 均配置完成。笔记本获取无影电脑的 id 值和密码,连接成功。

3.2:web 客户端

web 客户端有静态源码,官方教程中也说只有 rustdesk server pro 才有 web 远控,github 项目中也没有给 web 客户端的资源,但网上却有下载,我猜是有人从 pro 版本扒出来源码修改了一点点😅。

0x01:宝塔创建一个站点,用于存放 web 静态文件。

0x02:将 web-client 文件夹里的文件全部剪切到根目录中,并修改所有者和用户组为 www。

mv web-client/* wwwroot/
chown -r www:www wwwroot/*

0x03:浏览器访问 web 远控端,同样也要输入 id服务器 和 key。

如果服务器上行带框小,访问会比较慢

0x04:web 远控输入无影云主机id,输入密码后成功连接。

服务器上行带宽太小会导致延迟、画质过差

3.3:其它 客户端

rustdesk 还支持 linux(debian系列没问题,虽然也提供了radhat系列的rpm包,但好像有问题)、mac、android 等客户端,等有这方面的需求在搞。

4:部署优化

4.1:web 远控加载慢

web 远控慢是因为 canvaskit.wasm 太大了,足足 6mb 多,如果你服务器上行带宽很大,其实可以忽略。

优化:canvaskit.js 访问的 canvaskit.wasm,可以将访问地址换成网上免费的 插件cdn服务

cd canvaskit@0.33.0/
vim canvaskit.js
# 搜索 canvaskit.wasm,将后面的 if(!ab()){var cb=bb;bb=t.locatefile?t.locatefile(cb,ca):ca+cb} 删除
# 将 bb 变量修改为 cdn 加速链接,这样节省了带宽又加速了访问
# (如果cdn的带宽还没你服务器带宽大,就别搞这个)
var bb;bb="https://cdn.bootcdn.net/ajax/libs/canvaskit-wasm/0.33.0/canvaskit.wasm";

4.2:systemd 管理

0x01:创建 service 文件,workingdirectory 工作目录一定要指定,否则密钥对不会创建 。

cat > /etc/systemd/system/hbbr.service << eof
[unit]
description=rustdesk hbbs
after=network.target

[service]
user=root
type=simple
workingdirectory=/taosec/remote_control/rustdesk_server
execstart=/taosec/remote_control/rustdesk_server/hbbr
execstop=/bin/kill -term $mainpid

[install]
wantedby=multi-user.target
eof

cat > /etc/systemd/system/hbbs.service << eof
[unit]
description=rustdesk hbbs
after=network.target

[service]
user=root
type=simple
workingdirectory=/taosec/remote_control/rustdesk_server
execstart=/taosec/remote_control/rustdesk_server/hbbs
execstop=/bin/kill -term $mainpid

[install]
wantedby=multi-user.target
eof

0x02:启动 hbbr 和 hbbs 并开机自启动。

systemctl start hbbr
systemctl start hbbs
systemctl enable hbbr
systemctl enable hbbs

4.3:api 服务器

api 服务器 (登录、注册、记录等作用) 好像也是 pro 版本才有,但网上有很多大佬自己开发了 api 服务器,我在网上查了一下,甚至测试了 1 套,虽然登录没问题,将远程记录放到地址簿中,数据库确实有数据,但重新登录后,却无法获取地址簿的数据,可能是版本更新的原因吧,那套源码是 23 年的,还有一套不错的 api 项目,可惜只支持 win。

我看了一眼 api 服务器的php版本的源代码,很简单,几乎是套娃,我也懒得搞了,没这需求,搞得我也累。

5:docker 部署

# host是与宿主机共享网络,-r是指定中继服务器ip(端口可选),由于我们是 host 模式,所以 ip 填宿主机的就可以
docker run --restart=always --name hbbs  -v /opt/rustdesk/hbbs/root:/root -td --net=host rustdesk/rustdesk-server  hbbs  -r 10.0.0.11 -k 123456

docker run  --restart=always --name hbbr -v /opt/rustdesk/hbbr/root:/root -td --net=host rustdesk/rustdesk-server hbbr

6:故障排查指南 

连接失败:

  1. 检查两端网络连接
  2. 确认防火墙允许rustdesk通过
  3. 检查服务器地址和端口配置
  4. 尝试更换连接模式(tcp/udp)

画面卡顿:

1. 检查网络带宽和延迟
  2. 降低远程显示质量设置
  3. 关闭硬件加速(某些显卡)
  4. 更新显卡驱动程序

文件传输慢:

  1. 检查磁盘读写速度
  2. 暂停其他大流量操作
  3. 尝试小文件测试网络状况
  4. 检查杀毒软件是否干扰

声音问题:

  1. 检查音频设置是否启用
  2. 确认系统音频服务正常
  3. 尝试重新安装音频驱动
  4. 检查麦克风权限设置

7:总结

rustdesk 是一款强大且灵活的远程桌面工具,特别适合注重数据隐私和控制权的用户。通过合理配置和安全措施,它可以成为安全高效的远程访问解决方案。

(0)

相关文章:

  • Rust安装的图文教程

    rust 学习笔记:安装 rust在 windows 上安装 rust官方下载地址:https://www.rust-lang.org/zh-cn/tools/install下载安…

    2025年06月26日 编程语言
  • 深入理解Rust所有权

    所有权是 rust 最独特的特性,对语言的其他部分有着深刻的影响。它使 rust 能够在不需要垃圾收集器的情况下保证内存安全,因此理解所有权是如何工作的很重要。在本文中,我们将讨论…

    2025年06月26日 编程语言
  • Rust 通过异步实现并发的方法示例

    在本文中,我们将重点讨论线程和 future 之间的区别。在许多情况下,使用异步处理并发性的 api 与使用线程的 api 非常相似,但它们通常具有不同的行为,并且它们几乎总是具有…

    2025年06月26日 编程语言
  • kotlin中object:的用法和场景分析

    kotlin中object:的用法和场景分析

    在kotlin中,object:用于声明匿名对象(anonymous object),这是实现接口或继承类的轻量级方式,无需显式定义具名类。以下是核心用法和场景... [阅读全文]
  • Rust中枚举与模式匹配的使用

    Rust中枚举与模式匹配的使用

    在本文中,首先,我们将定义和使用枚举。接下来,我们将探讨一个特别有用的枚举,称为 option。然后,我们将了解 match 表达式中的模式匹配。最后,我们将介... [阅读全文]
  • Rust中print和println的区别实例解析

    Rust中print和println的区别实例解析

    print! 和 println! 的区别rust中的print!和println!宏均用于输出内容,两者的核心差异在于是否自动追加换行符。换行行为不同prin... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com