一、背景与需求场景

在日常工作和开发中,我们常常需要远程访问位于内网环境中的设备(例如家庭 NAS、公司内部测试服务器等)。传统的解决方案如 Tailscale + VNCNoMachine 虽然可行,但经常受限于带宽和延迟问题,体验不佳。而使用 FRP(内网穿透工具)加 VNC 的方式又配置复杂,维护成本较高。

因此,我决定尝试 RustDesk——一个开源的远程桌面软件,支持自建中继服务器,既能保障数据安全,又能提升连接质量。本文将详细介绍如何在阿里云服务器上部署 RustDesk 自托管服务,并实现跨网络远程桌面控制。


二、什么是 RustDesk?为什么选择自托管?

2.1 RustDesk 是什么?

RustDesk 是一款远程桌面控制软件,支持 Windows、Linux等多种平台。与 TeamViewer、AnyDesk 等商业软件类似,它提供远程控制、文件传输等功能,但更加轻量、开源,并允许用户自建服务器。

2.2 为什么选择自托管?

  • 数据隐私:所有远程连接数据经过自己的服务器,避免第三方窥探。
  • 性能优化:自建服务器可以选择合适的机房,优化网络延迟和带宽。
  • 不受限制:自托管版本没有连接时间或设备数量的限制。
  • 定制化强:可根据需要调整服务器配置和中继策略。

三、环境准备与架构说明

在开始之前,你需要:

  1. 一台阿里云 ECS 实例(建议 ≥ 2核4G,带宽按需选择)。
  2. 一个域名(可选,但推荐使用,方便后续维护)。
  3. 基本的 Linux 命令行操作经验。

整个系统的架构如下:

控制端(PC) → 阿里云中继服务器(RustDesk-Server) → 被控设备(内网机器)

中继服务器负责转发数据,使得两个不在同一局域网的设备能够建立远程桌面连接。


四、操作步骤

4.1 在阿里云上安装 RustDesk 服务端

4.1.1 下载并运行安装脚本

通过以下命令快速安装 RustDesk 服务端:

wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
chmod +x install.sh
./install.sh

安装完成后,你会看到类似下面的输出:

Creating /var/log/gohttp
Tidying up Go HTTP Server Install
Created symlink from /etc/systemd/system/multi-user.target.wants/gohttpserver.service to /etc/systemd/system/gohttpserver.service.
Your IP/DNS Address is <你的域名>.top
Your public key is <公钥字符串>
Install Rustdesk on your machines and change your public key and IP/DNS name to the above
You can access your install scripts for clients by going to http://<你的域名>:8000
Username is <用户名> and password is <密码>
Press any key to finish install
waiting for the keypress

请务必记录下:公钥(public key)、用户名和密码,后续配置客户端时需要用到。

4.1.2 获取注册配置信息

运行以下命令,获取被控端注册时所需的配置参数:

cat /opt/gohttp/public/linuxclientinstall.sh | grep "rustdesk_cfg="

输出结果中的 rustdesk_cfg 值需要记录下来,它在被控端注册时使用。

4.1.3 配置安全组

在阿里云控制台中,打开ECS实例的安全组设置,放行以下端口:

请添加图片描述


4.2 被控设备端安装与配置

在被控制的设备(如内网Linux机器)上执行如下命令:

wget https://github.com/rustdesk/rustdesk/releases/download/1.4.1/rustdesk-1.4.1-aarch64.deb
sudo dpkg -i rustdesk-1.4.1-aarch64.deb

# 安装依赖(某些环境可能需要)
apt install libxdo3
sudo apt install libxdo3 -y
apt --fix-broken install -y

# 设置随机访问密码并注册到服务器
rustdesk_pw=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
rustdesk_cfg="<替换为上一步获取的rustdesk_cfg>"
rustdesk_id=$(rustdesk --get-id)
rustdesk --password $rustdesk_pw &> /dev/null
rustdesk --config $rustdesk_cfg
systemctl restart rustdesk
systemctl status rustdesk
echo "ID:$rustdesk_id"
echo "password:$rustdesk_pw"

请记录最后显示的 ID 和 Password,控制端连接时需要用到。


4.3 控制端(PC)配置

4.3.1 下载 RustDesk 客户端

官方发布页 下载 Windows 版本并安装。

4.3.2 配置网络设置

打开 RustDesk,进入设置 → 网络,填写如下信息:

  • ID 服务器:你的域名或云服务器IP
  • 中继服务器:同上
  • API 服务器http://<你的域名或IP>
  • Key:之前记录的服务端公钥

如下图所示:

请添加图片描述
请添加图片描述

4.3.3 建立远程连接

返回主界面,输入被控端的 ID 点击“连接” ,之后输入密码登录
请添加图片描述
请添加图片描述

成功连接后,你就可以远程操作设备了:
请添加图片描述


五、常见问题与注意事项

  1. 无法连接?

    • 检查安全组端口是否开放。
    • 确认所有配置中的IP/域名是否正确。
  2. 性能调优

    • 可尝试调节分辨率和帧率提升流畅度。
    • 若服务器带宽较小,建议降低远程桌面画质。
  3. 安全建议

    • 定期更换密码。
    • 限制安全组IP访问范围(如仅允许自己的IP访问管理端口)。

六、总结

通过本文,你已经在阿里云上成功搭建了一套 RustDesk 自托管远程桌面服务。不仅实现了内网设备的远程控制,还拥有了完全自主的数据控制权。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐