RustDesk官网 GitHub链接 全平台客户端链接

“rustdesk是一款可以平替 TeamViewer 的远程桌面软件”,这是rustdesk官方对自己的描述。它是开源的,由Rust编写的远程访问和远程控制软件。它支持Windows、macOS、iOS、Android 和 Linux 等操作系统。

RustDesk 的特点包括完全掌控数据、轻松自建、支持P2P 连接以及端到端加密,RustDesk有多种安装方式。

本人建议是使用二进制方式安装,占用资源小。

rustdesk服务端口号默认情况下,hbbs 监听 21115 (tcp),21116 (tcp/udp),21118 (tcp),hbbr 监听21117 (tcp),21119 (tcp),需要在防火墙开启这几个端口,请注意 21116 同时要开启TCP和UDP 。

其中 21115 是hbbs用作NAT类型测试,21116/UDP是 hbbs 用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务。

21117 是 hbbr 用作中继服务,21118 和 21119 是为了支持网页客户端。如果您不需要网页客户端(21118,21119)支持,对应端口可以不开。

建议在安装服务时使用自定义端口号,同时使用key密钥方式连接会进一步增加服务安全性。

本例服务器操作系统使用的是Debian 12.5,以最小系统方式安装系统。

操作系统安装所需要的软件包:

apt-get update
apt-get install -y wget unzip bash sudo

修改hostname,并将hostname解析到127.0.0.1中,本机为例

hostnamectl set-hostname rustdesk
nano /etc/hosts
127.0.0.1 rustdesk

服务器配置
第一种,二进制方式安装Rustdesk服务

  1. 给rustdesk创建用户和组以及家目录

    groupadd rustdesk
    useradd -m rustdesk -g rustdesk -s /bin/bash -d /home/rustdesk
    passwd rustdesk
  2. 给rustdesk用户授权root权限,执行命令:

nano /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# This fixes CVE-2005-4890 and possibly breaks some versions of kdesu
# (#1011624, https://bugs.kde.org/show_bug.cgi?id=452532)
Defaults        use_pty

# This preserves proxy settings from user environments of root
# equivalent users (group sudo)
#Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"

# This allows running arbitrary commands, but so does ALL, and it means
# different sudoers have their choice of editor respected.
#Defaults:%sudo env_keep += "EDITOR"

# Completely harmless preservation of a user preference.
#Defaults:%sudo env_keep += "GREP_COLOR"

# While you shouldn't normally run git as root, you need to with etckeeper
#Defaults:%sudo env_keep += "GIT_AUTHOR_* GIT_COMMITTER_*"

# Per-user preferences; root won't have sensible values for them.
#Defaults:%sudo env_keep += "EMAIL DEBEMAIL DEBFULLNAME"

# "sudo scp" or "sudo rsync" should be able to use your SSH agent.
#Defaults:%sudo env_keep += "SSH_AGENT_PID SSH_AUTH_SOCK"

# Ditto for GPG agent
#Defaults:%sudo env_keep += "GPG_AGENT_INFO"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
rustdesk ALL=(ALL) ALL      #在这里填写内容

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "@include" directives:

@includedir /etc/sudoers.d

保存退出,此时rustdesk用户就拥有了root权限

  1. 尝试进入到rustdesk用户

    su - rustdesk
  2. 开始准备安装rustdesk,下载rustdesk二进制软件包

    cd /home/rustdesk
    wget -O rustdesk.zip https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-linux-amd64.zip
  3. 解压缩到当前目录

    unzip rustdesk.zip
  4. 将解压后的amd64目录重命名为rustdesk

    mv amd64 rustdesk
  5. 进入rustdesk目录,将hbbs和hbbr赋予执行权限

    cd rustdesk
    sudo chmod +x hbbs
    sudo chmod +x hbbr
  6. 执行一次开启rustdesk服务,在当前目录会生成一个key密钥文件

    ./hbbs
    ./hbbr

    ctrl+c #断开服务
    查看当前目录,找到“id_ed25519.pub”密钥文件

    ls ./
    db_v2.sqlite3  db_v2.sqlite3-shm  db_v2.sqlite3-wal  hbbr  hbbs  id_ed25519  id_ed25519.pub  rustdesk-utils
  7. 查看公钥密钥,并记住key公钥,稍后需要在客户端上填写公钥

    cat /home/rustdesk/rustdesk/id_ed25519.pub
    BVToZviuiFN0zbSnkzIQhFN123456Y2+F8lUJy+VgvA=
  8. 为rustdesk创建启动项

    ####创建hbbs启动项
    sudo nano /etc/systemd/system/hbbs.service 
    [Unit]
    Description=Rustdesk Signal Server
    [Service]
    Type=simple
    LimitNOFILE=1000000
    #-p指定侦听端口号,-r指定网卡IP(适用多网卡),-M优化了传输数据包大小,-k启用加密传输(可以防止未授权用户加入到本服务器中)
    ExecStart=/home/rustdesk/rustdesk/hbbs -r 0.0.0.0 -p 21116 -M 52428800 -k _
    WorkingDirectory=/home/rustdesk/rustdesk/
    User=rustdesk
    Group=rustdesk
    Restart=always
    #日志文件位置
    StandardOutput=append:/var/log/rustdesk/hbbs.log
    StandardError=append:/var/log/rustdesk/hbbs.error
    # Restart service after 10 seconds if node service crashes
    RestartSec=10
    [Install]
    WantedBy=multi-user.target
    ####创建hbbr启动项
    sudo nano /etc/systemd/system/hbbr.service 
    [Unit]
    Description=Rustdesk Relay Server
    [Service]
    Type=simple
    LimitNOFILE=1000000
    #-p指定侦听端口号,-k启用加密传输(可以防止未授权用户加入到本服务器中)
    ExecStart=/home/rustdesk/rustdesk/hbbr -p 21117 -k _
    WorkingDirectory=/home/rustdesk/rustdesk/
    User=rustdesk
    Group=rustdesk
    Restart=always
    #日志文件位置
    StandardOutput=append:/var/log/rustdesk/hbbr.log
    StandardError=append:/var/log/rustdesk/hbbr.error
    # Restart service after 10 seconds if node service crashes
    RestartSec=10
    [Install]
    WantedBy=multi-user.target
  9. 创建日志文件,添加用户权限

    sudo mkdir -p /var/log/rustdesk
    sudo touch /var/log/rustdesk/hbbs.log
    sudo touch /var/log/rustdesk/hbbs.error
    sudo touch /var/log/rustdesk/hbbr.log
    sudo touch /var/log/rustdesk/hbbr.error
    sudo chown -R rustdesk:rustdesk /var/log/rustdesk
  10. 将hbbs和hbbr启动项文件修改权限

    sudo chmod +x /etc/systemd/system/hbbs.service
    sudo chmod +x /etc/systemd/system/hbbr.service
  11. 尝试启动

    sudo systemctl daemon-reload
    sudo systemctl restart hbbs.service
    sudo systemctl restart hbbr.service
  12. 查看服务状态

    ########查看hbbs启动状态
    systemctl status hbbs
    ● hbbs.service - Rust Desk Service
      Loaded: loaded (/etc/systemd/system/hbbs.service; disabled; preset: enabled)
      Active: active (running) since Thu 2024-06-13 20:30:19 CST; 2s ago
    Main PID: 115513 (hbbs)
       Tasks: 12 (limit: 19136)
      Memory: 3.0M
         CPU: 8ms
      CGroup: /system.slice/hbbs.service
              └─115513 /home/rustdesk/rustdesk/hbbs -r 0.0.0.0 -p 21116 -M 52428800 -k _
    ########查看hbbr启动状态
    systemctl status hbbr
    ● hbbr.service - Rust Desk Service
      Loaded: loaded (/etc/systemd/system/hbbr.service; disabled; preset: enabled)
      Active: active (running) since Thu 2024-06-13 20:32:58 CST; 4s ago
    Main PID: 115747 (hbbr)
       Tasks: 11 (limit: 19136)
      Memory: 2.7M
         CPU: 7ms
      CGroup: /system.slice/hbbr.service
              └─115747 /home/rustdesk/rustdesk/hbbr -p 21117 -k _
  13. 查看rustdesk端口是否已启用

    ss -antulp | grep hbb
    udp   UNCONN 0      0                  *:21116            *:*    users:(("hbbs",pid=116473,fd=12))    
    udp   UNCONN 0      0                  *:47121            *:*    users:(("hbbs",pid=116473,fd=16))    
    tcp   LISTEN 0      128                *:21115            *:*    users:(("hbbs",pid=116473,fd=14))    
    tcp   LISTEN 0      128                *:21118            *:*    users:(("hbbs",pid=116473,fd=15))    
    tcp   LISTEN 0      128                *:21119            *:*    users:(("hbbr",pid=116496,fd=10))    
    tcp   LISTEN 0      128                *:21116            *:*    users:(("hbbs",pid=116473,fd=13))    
    tcp   LISTEN 0      128                *:21117            *:*    users:(("hbbr",pid=116496,fd=9))    
  14. 关闭或杀死服务进程

    pkill hbbs
    pkill hbbr

    以上操作完毕后,二进制方式安装完毕。


第二种,官方脚本方式安装rustdesk服务,官方文档说明

  1. 下载官方sh安装脚本

    wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
  2. 将下载的install.sh文件添加执行权限

    chmod +x install.sh
  3. 执行脚本

    bash install.sh
  4. 脚本会自动安装在/opt目录中

    ls /opt
    rustdesk
  5. 查看公钥密钥,并记住key公钥,稍后需要在客户端上填写公钥

    cat /opt/rustdesk/id_ed25519.pub 
    BQ5O3dwLmNfI9NIhHf123ertyui8S3klVKEMdzNmn1s=
  6. 查看服务启动项

    ######查看hbbs启动项,根据自身要求进行修改
    cat /etc/systemd/system/rustdesksignal.service 
    [Unit]
    Description=Rustdesk Signal Server
    [Service]
    Type=simple
    LimitNOFILE=1000000
    #修改端口号为23416,-M优化了传输udp数据包大小
    ExecStart=/opt/rustdesk/hbbs -r 0.0.0.0 -p 23416 -M 52428800 -k _
    WorkingDirectory=/opt/rustdesk/
    User=root
    Group=root
    Restart=always
    StandardOutput=append:/var/log/rustdesk/signalserver.log
    StandardError=append:/var/log/rustdesk/signalserver.error
    # Restart service after 10 seconds if node service crashes
    RestartSec=10
    [Install]
    WantedBy=multi-user.target
    ######查看hbbr启动项,根据自身要求进行修改
    cat /etc/systemd/system/rustdeskrelay.service 
    [Unit]
    Description=Rustdesk Relay Server
    [Service]
    Type=simple
    LimitNOFILE=1000000
    #修改端口号为23417
    ExecStart=/opt/rustdesk/hbbr -p 23417 -k _
    WorkingDirectory=/opt/rustdesk/
    User=root
    Group=root
    Restart=always
    StandardOutput=append:/var/log/rustdesk/relayserver.log
    StandardError=append:/var/log/rustdesk/relayserver.error
    # Restart service after 10 seconds if node service crashes
    RestartSec=10
    [Install]
    WantedBy=multi-user.target
  7. 重启启动服务

    systemctl daemon-reload
    systemctl restart rustdesksignal.service    #rustdesksignal是hbbs
    systemctl restart rustdeskrelay.service     #rustdeskrelay是hbbr
  8. 查看服务启动状态

  9. 关闭或杀死服务进程

  10. 日志文件路径

    /var/log/rustdesk/

第三种,Docker方式安装服务

  1. 使用官方源安装docker,加入 Docker 的 GPG 公钥和 apt 源

    curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
  2. 使用apt安装docker

    apt update
    apt install docker-ce docker-ce-cli containerd docker-compose-plugin
  3. 使用docker version命令查看是否安装成功

    docker version
  4. 使用docker-compose version命令检查是否安装成功

    docker-compose version
    docker-compose version 1.29.2, build unknown
    docker-py version: 5.0.3
    CPython version: 3.11.2
    OpenSSL version: OpenSSL 3.0.11 19 Sep 2023
  5. 使用docker compose version命令检查是否安装成功

    docker compose version
    Docker Compose version v2.27.1
  6. 使用docker-compose方式构建服务

mkdir rustdesk && cd rustdesk
nano docker-compose.yml
services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r 0.0.0.0 -p 31116 -k _
    volumes:
      - ./data:/root
    network_mode: "host"

    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr -p 31117 -k _
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped
  1. 查看公钥密钥,并记住key公钥,稍后需要在客户端上填写公钥

    cat ./data/id_ed25519.pub 
    sKSP5I7tkzEMzk5PGk7jenaYHIU9gd4b5s1n8ySqyEQ=
  2. 关闭docker-compose的rustdesk服务

    在刚刚创建的docker-compose.yml文件目录中执行
    docker-compose down
    Stopping hbbs ... done
    Stopping hbbr ... done
    Removing hbbs ... done
    Removing hbbr ... done
  3. 删除docker-compose的rustdesk服务镜像

    docker-compose down --rmi local
    Stopping hbbs ... done
    Stopping hbbr ... done
    Removing hbbs ... done
    Removing hbbr ... done

客户端配置

rustdesk是全平台远程控制软件,请根据自身系统进行下载,点击此处进行客户端下载。

本例客户端为Windows 11 64bit(手机端配置操作方法也是相同)

rustdesk01.jpg

rustdesk02.jpg

rustdesk03.jpg

rustdesk04.jpg

rustdesk05.jpg

/usr/lib/systemd/system下的rustdesk.service

[Unit]
Description=RustDesk
Requires=network.target
After=systemd-user-sessions.service

[Service]
Type=simple
#ExecStart=/usr/bin/rustdesk --service 目录/usr/lib/systemd/system下的rustdesk.service更改为如下:
ExecStart=/usr/bin/rustdesk --server
# kill --tray and --server both
ExecStop=/usr/bin/pkill -f "rustdesk --"
# below two lines do not work, have to use above one line
#ExecStop=/usr/bin/pkill -f "rustdesk --tray"
#ExecStop=/usr/bin/pkill -f "rustdesk --server"
PIDFile=/run/rustdesk.pid
KillMode=mixed
TimeoutStopSec=30
User=root
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target