news 2026/4/17 13:32:06

在Linux服务器上自建RustDesk远程桌面:从零部署到安全连接

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Linux服务器上自建RustDesk远程桌面:从零部署到安全连接

1. 为什么选择RustDesk自建服务器?

最近两年远程办公需求爆发式增长,TeamViewer和AnyDesk这些商业软件要么收费昂贵,要么对个人用户限制多多。作为一个长期和远程桌面工具打交道的运维,我实测过市面上几乎所有主流方案,最终发现RustDesk这个开源神器才是真正的"平民救星"。

RustDesk最大的优势在于它的全平台兼容性内网穿透能力。我去年给一家制造业客户部署时,他们的老旧产线电脑还在用Windows XP系统,RustDesk是少数能完美兼容的方案。更关键的是,它的中继服务器(hbbr)和ID服务器(hbbs)可以完全私有化部署,这意味着:

  1. 数据完全自主可控:所有远程会话流量都在自己的服务器上流转
  2. 内网穿透零成本:跨地域办公室访问内网机器不再需要额外购买服务
  3. 定制开发自由:基于MIT开源协议,可以二次开发特殊功能

上周我刚用一台2核4G的腾讯云轻量服务器搭建了整套环境,实测同时支持20个远程连接毫无压力。下面就把这个从零开始的完整部署过程分享给大家,包含我踩过的所有坑和优化技巧。

2. 部署前的环境准备

2.1 服务器硬件选择建议

虽然RustDesk官方文档说1核1G就能跑,但根据我的实战经验,生产环境建议最低配置

  • CPU:2核以上(中继服务很吃单核性能)
  • 内存:4GB起步(每个连接约消耗50-100MB)
  • 带宽:5Mbps以上(1080P画面需要约3Mbps/路)
  • 存储:20GB SSD(日志和录像文件会持续增长)

特别提醒:如果要用在跨国远程支持场景,务必选择BGP多线机房。去年我在阿里云新加坡节点部署时,发现电信用户连接延迟高达300ms,后来换到香港BGP线路才降到150ms以内。

2.2 操作系统优化

我推荐使用Ubuntu 22.04 LTSCentOS 7.9这两个经过充分验证的系统。以Ubuntu为例,部署前需要做这些基础优化:

# 更新系统 sudo apt update && sudo apt upgrade -y # 关闭swap(提升性能) sudo swapoff -a sudo sed -i '/swap/s/^/#/' /etc/fstab # 调整文件描述符限制 echo "* soft nofile 65535" | sudo tee -a /etc/security/limits.conf echo "* hard nofile 65535" | sudo tee -a /etc/security/limits.conf # 安装基础工具 sudo apt install -y curl wget unzip net-tools

2.3 网络端口规划

RustDesk默认使用以下端口,务必提前在防火墙放行

端口协议服务作用说明
21115TCPhbbsNAT类型测试
21116TCP/UDPhbbsID注册与心跳服务
21117TCPhbbr中继数据传输
21118TCPhbbs网页客户端支持(可选)
21119TCPhbbr网页客户端支持(可选)

如果是云服务器,还需要在安全组规则中添加这些端口的入站允许。有个容易忽略的点:21116必须同时开放TCP和UDP,很多连接失败问题都是因为这个。

3. 服务端部署实战

3.1 快速安装方案

官方提供了三种部署方式,这里推荐用预编译二进制包方案,最适合快速部署:

# 创建专用目录 mkdir -p /opt/rustdesk && cd /opt/rustdesk # 下载最新版本(当前1.3.8) wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.9/rustdesk-server-linux-amd64.zip # 解压安装包 unzip rustdesk-server-linux-amd64.zip -d amd64 # 安装PM2进程管理器 npm install pm2 -g

遇到过的问题:某些国内服务器下载GitHub资源很慢,可以先用本地电脑下载后上传。或者使用这个国内镜像地址:

wget https://static.rustdesk.com/server/rustdesk-server-linux-amd64.zip

3.2 服务启动与监控

进入解压目录启动服务:

cd /opt/rustdesk/amd64 # 启动ID服务器(hbbs) pm2 start hbbs -- -r <服务器公网IP> # 启动中继服务器(hbbr) pm2 start hbbr # 设置开机自启 pm2 save pm2 startup

关键参数说明:

  • -r参数指定公网IP,这对打洞成功率影响很大
  • 如果服务器有多个IP,需要用-k _禁用密钥验证

查看服务状态的小技巧:

# 实时日志监控(Ctrl+C退出) pm2 logs hbbs # 查看连接数(每秒刷新) watch -n 1 "netstat -ant | grep 21116"

3.3 密钥配置与安全

服务启动后会在目录生成关键密钥文件:

  • id_ed25519- 私钥(必须严格保密)
  • id_ed25519.pub- 公钥(客户端配置用)

安全建议:

  1. 立即备份密钥到安全位置
  2. 修改文件权限为600:
    chmod 600 id_ed25519*
  3. 在客户端配置时使用公钥内容,格式如下:
    key=公钥内容

4. 客户端连接全指南

4.1 Windows客户端配置

下载官方客户端安装后,右键任务栏图标进入设置:

  1. 网络→ID服务器:填写服务器IP:21116
  2. 网络→密钥:粘贴id_ed25519.pub内容
  3. 高级→强制使用中继:建议关闭(直连更快)

实测技巧:在集团客户部署时,可以用组策略批量推送这些配置:

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\RustDesk] "rendezvous_server"="your-server-ip:21116" "api_server"="https://your-server-ip:21114" "key"="公钥内容"

4.2 移动端使用技巧

Android/iOS客户端配置类似,但有两个特殊功能:

  • 手势操作:双指缩放调整画面比例
  • 虚拟鼠标:长按唤出右键菜单

企业用户建议开启固定密码功能,避免每次都要确认连接。在服务端可以这样设置:

# 启动hbbs时添加-f参数 pm2 start hbbs -- -r <IP> -f 固定密码

4.3 网页版使用方案

如果需要通过浏览器访问,需要额外步骤:

  1. 开放21118和21119端口
  2. 部署Nginx反向代理:
server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:21118; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }

5. 安全加固与性能优化

5.1 防火墙深度配置

除了基础端口开放,建议添加这些安全规则:

# 仅允许办公网络访问管理端口 iptables -A INPUT -p tcp --dport 21115 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 21115 -j DROP # 限制每分钟新连接数 iptables -A INPUT -p tcp --dport 21116 --syn -m limit --limit 30/minute -j ACCEPT

5.2 日志分析与监控

RustDesk的日志在~/.pm2/logs目录,建议用logrotate管理:

# /etc/logrotate.d/rustdesk /root/.pm2/logs/*.log { daily rotate 30 compress missingok notifempty sharedscripts postrotate pm2 flush >/dev/null 2>&1 endscript }

关键监控指标:

  • 在线客户端数:netstat -ant | grep 21116 | wc -l
  • 中继流量:iftop -i eth0 -f 'port 21117'

5.3 高可用方案

对于关键业务环境,可以部署多节点集群:

  1. 多个hbbs节点使用相同密钥
  2. DNS轮询或负载均衡分发请求
  3. 共享Redis存储会话状态:
hbbs -r <IP> --redis redis://127.0.0.1:6379 hbbr --redis redis://127.0.0.1:6379

6. 常见问题排错指南

6.1 连接失败排查流程

按照这个顺序检查:

  1. 服务进程是否存活:pm2 list
  2. 端口是否监听:netstat -tulnp | grep 211
  3. 防火墙是否放行:iptables -L -n -v
  4. 客户端能否telnet测试:telnet 服务器IP 21116

6.2 性能问题优化

如果遇到画面卡顿,可以尝试:

  1. 客户端设置→图像质量→改为"平衡"
  2. 服务端调整编码参数:
    hbbr --video-bitrate 5000 --audio-bitrate 128
  3. 启用硬件加速(需要NVIDIA显卡):
    hbbr --encoder nvenc --decoder nvdec

6.3 企业级功能扩展

通过API可以实现自动化管理:

# 获取在线设备列表 curl http://服务器IP:21114/api/device/list # 发起远程协助 curl -X POST http://服务器IP:21114/api/remote/connect \ -d '{"id":"目标ID","operator":"操作员"}'

对于需要审计的场景,可以启用会话录像:

hbbr --record /path/to/records --record-format mp4
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:28:25

英雄联盟回放分析的智能助手:ROFLPlayer深度体验指南

英雄联盟回放分析的智能助手&#xff1a;ROFLPlayer深度体验指南 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 在英雄联盟竞技环境中&…

作者头像 李华
网站建设 2026/4/17 13:27:56

高效时间序列分类:InceptionTime框架完整实战指南

高效时间序列分类&#xff1a;InceptionTime框架完整实战指南 【免费下载链接】InceptionTime InceptionTime: Finding AlexNet for Time Series Classification 项目地址: https://gitcode.com/gh_mirrors/in/InceptionTime 时间序列分类是机器学习领域的重要研究方向&…

作者头像 李华
网站建设 2026/4/17 13:27:20

Java设计模式——模板方法模式在框架源码与微服务架构中的实战解析

1. 模板方法模式的核心思想 第一次接触模板方法模式时&#xff0c;我正被一个重复代码问题困扰着。项目中需要处理多种文件导入流程&#xff0c;每种文件的校验规则不同&#xff0c;但解析、日志记录、异常处理的步骤却完全一致。当时写了大量重复代码&#xff0c;直到发现Spri…

作者头像 李华
网站建设 2026/4/17 13:24:13

深度解析:Windows 10平台高效运行Android应用的全新方案

深度解析&#xff1a;Windows 10平台高效运行Android应用的全新方案 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 在Windows 10系统上直接运行A…

作者头像 李华
网站建设 2026/4/17 13:23:14

Juniper设备运维排错实战:手把手教你用这些命令定位网络故障

Juniper设备运维排错实战&#xff1a;从基础到高阶的故障定位指南 当SRX防火墙突然阻断关键业务流量&#xff0c;或是EX交换机莫名丢包时&#xff0c;大多数工程师的第一反应是"先看看接口状态"。但真正的排错高手知道&#xff0c;网络故障就像悬疑剧&#xff0c;表面…

作者头像 李华