CentOS7.9云服务器上Rustdesk自建远程控制服务全流程(含端口配置避坑)

📅 发布时间:2026/7/8 1:58:09 👁️ 浏览次数:
CentOS7.9云服务器上Rustdesk自建远程控制服务全流程(含端口配置避坑)
在云服务器上构建专属的远程控制中枢RustDesk 自建服务深度实践你是否厌倦了依赖第三方服务的远程控制工具总担心连接不稳定、隐私泄露或是受制于免费版的种种限制对于需要频繁进行跨设备、跨地域技术支持的开发者、运维工程师或是小型团队而言拥有一个完全自主可控的远程协助平台不仅能提升工作效率更能带来十足的安全感。RustDesk这款以Rust语言编写、主打开源与自托管的远程桌面软件恰好为我们提供了这样一个绝佳的解决方案。它允许你将核心的中继与ID服务器部署在自己的云服务器上彻底摆脱对公共服务器的依赖。然而将RustDesk从“能用”变为“好用且稳定”尤其是在云服务器这一特殊环境下远不止运行两个二进制文件那么简单。云服务商的安全组规则、操作系统的防火墙策略、服务的持久化运行乃至网络环境的细微差异都可能成为部署路上的“暗礁”。本文将从零开始为你详细拆解在CentOS 7.9云服务器上搭建RustDesk私有服务的完整流程并将重点聚焦于那些容易被忽略的云环境特有配置与端口通信的深度避坑指南确保你的自建服务从一开始就建立在稳固的基础之上。1. 部署前的核心认知与环境准备在动手敲下第一条命令之前理解RustDesk的架构和云服务器的网络模型至关重要。这能帮助你在后续配置中知其然更知其所以然遇到问题时也能快速定位。RustDesk的服务端主要由两个核心组件构成hbbs (RustDesk ID Server)这是整个系统的“大脑”负责处理客户端的注册、ID分配以及协助建立点对点P2P连接。客户端启动时首先会向它“报到”。hbbr (RustDesk Relay Server)当两个客户端之间由于网络限制如NAT穿透失败无法直接建立P2P连接时hbbr就扮演了“中继站”的角色负责转发数据流量确保连接始终可用。在云服务器上部署最大的特殊性在于双重防火墙机制除了操作系统自带的防火墙如CentOS 7的firewalld云服务商还提供了一层安全组Security Group或网络ACL。这两层规则是“与”的关系意味着流量必须同时通过它们的检查才能到达你的应用程序。很多部署失败案例根源就在于只配置了其中一层。提示对于生产环境建议保持操作系统防火墙开启并精细配置规则而非简单粗暴地关闭。这能提供主机层面的额外安全防护。1.1 服务器系统初始化与依赖检查我们以一台全新的CentOS 7.9云服务器为例。首先进行系统更新并安装必要的工具。# 更新系统包到最新状态 sudo yum update -y # 安装可能需要的工具如wget用于下载unzip用于解压vim用于编辑 sudo yum install -y wget unzip vim接下来我们需要规划一个清晰的目录结构来存放RustDesk服务端文件。良好的习惯能避免后续管理混乱。# 创建一个专属目录例如在 /opt 下 sudo mkdir -p /opt/rustdesk-server cd /opt/rustdesk-server2. 服务端部署获取、配置与首次运行2.1 获取与解压官方服务端程序访问RustDesk服务器的GitHub Releases页面获取适用于Linux x86_64架构的最新稳定版本。你可以直接在服务器上使用wget下载。# 请替换以下链接中的版本号为实际最新版本例如 1.1.10 wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.10/rustdesk-server-linux-amd64.zip # 解压下载的压缩包 unzip rustdesk-server-linux-amd64.zip解压后目录下应至少包含hbbs、hbbr和rustdesk-utils三个可执行文件。使用ls -lh命令查看并确保它们具有执行权限通常已有。2.2 首次运行与关键文件生成在配置复杂的后台运行和防火墙之前我们先进行一次简单的前台运行这有两个目的一是验证程序能否正常启动二是生成后续客户端配置所必需的密钥文件。# 在前台运行hbbs使用 -k _ 参数可以指定一个空密钥仅测试后续会用到生成的密钥 ./hbbs # 在另一个SSH会话中同样前台运行hbbr ./hbbr运行hbbs后它会立即在当前目录下生成几个关键文件其中最重要的是id_ed25519.pub公钥文件。此时按CtrlC停止这两个前台进程。查看并记录公钥内容cat id_ed25519.pub # 输出类似OAXW28KX7HcFbAeB/RFjCxxuNtqk0KpL6pXoN4qQY这个字符串就是你的私有服务器的唯一“密码”客户端必须使用它才能连接到你的服务器而非官方的公共服务器。请妥善保管。3. 云服务器环境的核心配置端口与防火墙详解这是整个部署过程中最容易出错也最需要仔细对待的部分。我们将分步拆解操作系统防火墙和云平台安全组的配置。3.1 配置操作系统防火墙 (firewalld)CentOS 7默认使用firewalld。我们采取开放特定端口而非完全关闭防火墙的策略以增强安全性。首先查看防火墙状态和当前活跃区域sudo systemctl status firewalld sudo firewall-cmd --list-allRustDesk服务端需要监听以下端口服务端口协议用途说明hbbs21115TCP用于客户端发现和注册hbbs21116TCP/UDP关键端口。TCP用于信令UDP用于NAT穿透和心跳检测。UDP未开放是导致客户端显示“离线”的常见原因。hbbs21117TCP网页客户端访问如果启用hbbs21118TCP用于NAT类型测试hbbs21119TCP用于密钥交换和连接建立hbbr21116TCP中继服务监听端口与hbbs的UDP端口号相同但协议和用途不同现在我们通过firewall-cmd命令永久开放这些端口# 开放TCP端口范围 21115-21119 sudo firewall-cmd --permanent --add-port21115-21119/tcp # 单独开放 21116 端口的UDP协议至关重要 sudo firewall-cmd --permanent --add-port21116/udp # 重新加载防火墙配置使规则生效 sudo firewall-cmd --reload # 验证规则是否已添加 sudo firewall-cmd --list-ports3.2 配置云服务商安全组规则这是云服务器独有的、且必须配置的步骤。安全组是云平台层面的虚拟防火墙以阿里云、腾讯云、AWS等为例操作逻辑类似找到你的云服务器实例进入其关联的安全组配置页面。你需要添加入站规则Inbound Rules允许来自互联网0.0.0.0/0或根据需求限定IP段的流量访问上述端口。一个典型的安全组规则配置示例如下规则1 协议类型TCP端口范围21115-21119授权来源0.0.0.0/0或你的办公IP。规则2 协议类型UDP端口范围21116授权来源0.0.0.0/0或你的办公IP。注意将来源设置为0.0.0.0/0意味着允许全球任何IP访问仅建议在测试阶段或对公网暴露服务时使用。在生产环境中强烈建议根据实际情况限制来源IP段例如只允许公司办公网络的IP地址访问这是最重要的安全加固措施之一。3.3 验证端口连通性配置完成后如何确认端口在公网真正可访问你可以在本地电脑而非服务器本身上使用telnet或nc(netcat) 命令进行测试。# 在本地终端测试TCP端口例如21116 telnet 你的服务器公网IP 21116 # 或者使用nc nc -zv 你的服务器公网IP 21115-21119 # 测试TCP端口范围如果连接成功说明TCP通道已打开。对于UDP端口21116测试稍复杂可以使用nmapnmap -sU -p 21116 你的服务器公网IP看到open状态即为成功。如果测试失败请按顺序排查1) 安全组规则是否生效并应用到了正确的实例2) 服务器内firewalld规则是否正确加载3) 服务器上是否有其他安全软件如SELinux阻止了访问。4. 实现服务稳定运行进程管理与开机自启我们不可能一直开着SSH窗口运行服务。使用screen或tmux是一种简单的后台运行方式但更专业、更可靠的做法是将其配置为系统服务由systemd管理。4.1 创建 systemd 服务单元文件为hbbs和hbbr分别创建服务配置文件。首先创建hbbs服务sudo vim /etc/systemd/system/rustdesk-hbbs.service将以下内容写入文件注意修改ExecStart的路径为你实际的存放路径/opt/rustdesk-server[Unit] DescriptionRustDesk ID Server (hbbs) Afternetwork.target [Service] Typesimple Userroot WorkingDirectory/opt/rustdesk-server ExecStart/opt/rustdesk-server/hbbs Restartalways RestartSec3 # 可选如果你希望使用自定义密钥文件可以添加 -k 参数 # ExecStart/opt/rustdesk-server/hbbs -k /path/to/your/keyfile [Install] WantedBymulti-user.target同理创建hbbr服务sudo vim /etc/systemd/system/rustdesk-hbbr.service[Unit] DescriptionRustDesk Relay Server (hbbr) Afternetwork.target rustdesk-hbbs.service Wantsrustdesk-hbbs.service [Service] Typesimple Userroot WorkingDirectory/opt/rustdesk-server ExecStart/opt/rustdesk-server/hbbr Restartalways RestartSec3 [Install] WantedBymulti-user.target4.2 启动服务并设置开机自启创建好服务文件后重新加载systemd配置然后启动服务并启用开机自动启动。# 重新加载systemd配置 sudo systemctl daemon-reload # 启动hbbs和hbbr服务 sudo systemctl start rustdesk-hbbs sudo systemctl start rustdesk-hbbr # 设置开机自启 sudo systemctl enable rustdesk-hbbs sudo systemctl enable rustdesk-hbbr # 检查服务运行状态 sudo systemctl status rustdesk-hbbs sudo systemctl status rustdesk-hbbr如果状态显示为active (running)恭喜你服务已成功在后台稳定运行。你可以通过journalctl查看服务的详细日志sudo journalctl -u rustdesk-hbbs -f5. 客户端配置、连接测试与高级调优服务端部署并稳定运行后最后一步是在需要被控和控制的设备上配置RustDesk客户端。5.1 客户端安装与基础配置从RustDesk官网下载并安装对应操作系统Windows, macOS, Linux, Android, iOS的客户端。安装完成后进入设置界面通常需要配置以下三个核心参数ID服务器填写你的云服务器公网IP地址。如果服务器有域名也可以填写域名。中继服务器同上填写公网IP地址。密钥填写之前从服务器id_ed25519.pub文件中复制的那一串公钥字符串。配置完成后点击“应用”或“确定”。此时客户端主界面的状态栏应该从“未就绪”变为“就绪”。你的客户端现在已完全接入你自建的服务器网络。5.2 连接测试与问题排查进行一个简单的连接测试在一台电脑上查看自己的RustDesk ID和临时密码在另一台电脑上输入该ID进行连接。如果一切顺利远程桌面会话将建立。如果遇到问题可以按照以下思路排查客户端一直显示“离线”或“未就绪”99%的可能性是UDP 21116端口未通。请严格按照第3部分双重检查服务器firewalld的UDP规则和云平台安全组的UDP规则。检查客户端配置的IP和密钥是否正确确保没有多余空格。在服务器上使用netstat -tunlp | grep 21116命令查看hbbs和hbbr是否都在正常监听端口。可以显示在线但连接失败或卡在“正在连接”可能是TCP端口21115-21119中的某一个或多个未开放。同样检查防火墙和安全组。网络环境复杂P2P穿透失败且中继也未成功。可以尝试在客户端设置中强制使用中继连接如果服务器hbbr配置正确且端口开放中继连接是保底可用的。连接成功但非常卡顿中继服务器hbbr的带宽和延迟直接影响体验。确保你的云服务器带宽充足且地理位置与客户端不要相隔太远。考虑在服务器上启用hbbr的流量压缩功能启动参数-k _实际上会禁用加密但官方文档有更详细的性能调优参数或在客户端设置中调整画质和帧率。5.3 安全与性能进阶考量对于追求更高安全性和可用性的用户还可以考虑以下步骤使用域名与HTTPS为服务器IP配置一个域名并在hbbs启动时使用-k参数指定自定义密钥对甚至通过反向代理如Nginx为Web客户端21117端口配置HTTPS。监控与日志配置日志轮转logrotate定期检查/opt/rustdesk-server目录下的.log文件或使用journalctl持续监控服务状态便于故障回溯。备份密钥id_ed25519.pub和对应的私钥文件是服务的核心。务必将其备份到安全的地方。如果丢失私钥所有客户端需要重新配置公钥。整个部署过程从环境认知到稳定运行其实是一个典型的云原生应用部署的缩影理解应用架构、打通网络通道、实现服务化运维。当你看到客户端上“就绪”的绿灯亮起并通过自己搭建的服务器流畅地控制另一台设备时那种对技术栈的完全掌控感和隐私安全的满足感是使用任何现成商业软件都无法替代的。