赞
踩
适配主流的操作系统
GitHub:https://github.com/rustdesk/rustdesk
rustdesk有快照模式,连接过一次后便能记录下机器码id
https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F
采用rendezvous protocols协议,进行P2P式的网络连接,客户端双方由rendezvous protocols搭建的服务器进行数据的传输和保留隐私性
Rendezvous_protocol:
rendezvous protocols协议是一种计算机网络协议,它使资源或P2P网络对等体能够相互查找。集合协议使用握手模型,这与直接复制数据的 eager 协议不同。在集合协议中,当目的地说数据准备就绪时发送数据,但在预先协议中,假设目的地可以存储数据,则发送数据。
由于防火墙网络地址转换 (NAT) 问题,rendezvous protocols协议通常要求至少有一个未阻止和未 NATed 的服务器,该服务器允许对等方相互定位并启动并发数据包。
安装的话直接看文档就行
Windows和Android可直接使用安装包执行程序进行安装
Linux、mac有deb程序包,进行编译安装
arm内核的嵌入式设备也有执行编译文件
或者采用docker的方式来部署
https://github.com/rustdesk/rustdesk-server/releases
下载或者使用docker rustdesk/rustdesk-server。
提供版本:
以下针对Linux版本做使用说明。
有两个可执行文件和一个文件夹:
Linux版本在Centos7构建,在 Centos7/8,Ubuntu 18/20上测试过,Debian系列的发行版本应该都没有问题。如果有其他发行版本需求,请联系我。
服务器要求
硬件要求很低,最低配置的云服务器就可以了,CPU和内存要求都是最小的。关于网络大小,如果TCP打洞直连失败,就要耗费中继流量,一个中继连接的流量在30k-3M每秒之间(1920x1080屏幕),取决于清晰度设置和画面变化。如果只是办公需求,平均在100K/s。
在服务器上运行 hbbs/hbbr (Centos 或 Ubuntu)。建议使用pm2 管理服务。
./hbbs -r <hbbr运行所在主机的地址[:port]>
./hbbr
或者使用 pm2 运行 hbbs/hbbr
pm2 start hbbs -- -r <relay-server-ip[:port]>
pm2 start hbbr
pm2 需要 nodejs v16+,如果你运行 pm2 失败(例如在 pm2 list 中看不到 hbbs/hbbr),请从 https://nodejs.org 下载并安装 LTS 版本的 nodejs。 如果你想让 hbbs/hbbr 在重启后自动运行,请查看 pm2 save 和 pm2 startup。 更多关于 pm2。另一个不错的日志工具是 pm2-logrotate。
hhbs的-r参数不是必须的,他只是方便你不用在客户端指定中继服务器,如果是默认21117端口,可以不填port。客户端指定的中继服务器优先级高于这个。
默认情况下,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)支持,对应端口可以不开。
如果你想选择自己的端口,使用 “-h” 选项查看帮助。
Docker示范
Linux/amd64
sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbs -r <relay-server-ip[:port]>
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbr
Linux/arm64v8
sudo docker image pull rustdesk/rustdesk-server:latest-arm64v8
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server:latest-arm64v8 hbbs -r <relay-server-ip[:port]>
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server:latest-arm64v8 hbbr
据我所知,–net=host 仅适用于 Linux,它让 hbbs/hbbr 可以看到对方真实的ip, 而不是固定的容器ip (172.17.0.1)。 如果–net=host运行正常,-p选项就不起作用了, 可以去掉。
请去掉 –net=host,如果您在非Linux系统上遇到无法连接的问题
点击 ID 右侧的菜单按钮如下,选择“ ID/中继服务器”。
在 ID 服务器输入框中(被控端+主控端)输入 hbbs 主机或 ip 地址,另外两个地址可以不填,RustDesk会自动推导(如果没有特别设定),中继服务器指的是hbbr(21116)端口。
例如:
hbbs.example.com
或者
hbbs.example.com:21116
把配置放在可执行文件名里 (Windows only)
把rustdesk.exe 修改为 rustdesk-host=<host-ip-or-name>,key=<public-key-string>.exe, 例如: rustdesk-host=192.168.1.137,key=xfdsfsd32=32.exe,你可以在About窗口看到配置结果,如下图所示。
host 和 key 都需要添加,缺少一个就不好使。
If there are invalid characters in the key which can not be used in file name, please remove id_ed25519 file and restart your hbbs/hbbr, the id_ed25519.pub file will be regenerated, please repeat until you get valid characters.
Menu | About Page |
同上个版本不同,本版本中的key是强制的,但是不用你自己设置。hbbs在第一次运行时,会自动产生一对加密私钥和公钥(分别位于运行目录下的id_ed25519和id_ed25519.pub文件中),其主要用途是为了通讯加密。
如果您在上一步骤中没有填写Key:(公钥文件id_ed25519.pub中的内容),不影响连接,但是连接无法加密。
cat ./id_ed25519.pub
如果您禁止没有key的用户建立非加密连接,请在运行hbbs和hbbr的时候添加-k _ 参数,例如:
./hbbs -r <relay-server-ip[:port]> -k _
./hbbr -k _
如果要更改key,请删除 id_ed25519 和 id_ed25519.pub 文件并重新启动 hbbs/hbbr,hbbs将会产生新的密钥对。
请点击下载安装,可能会有点慢,如果卡顿太久,尝试关掉重新安装。 NodeJs是pm2的运行时环境,所以要先安装NodeJs。
在cmd.exe中分别输入下面三行,每一行都要按回车键,一行一行运行。
npm install -g pm2
npm install pm2-windows-startup -g
pm2-startup install
下载Windows版本服务器程序,假设你解压缩到了C盘下。分别运行下面四行命令。
端口号请参考安装的步骤二
默认情况下,hbbs 监听21115(tcp)和21116(tcp/udp) ,hbbr 监听21117(tcp). 务必在防火墙开启这几个端口.
如果你想选择自己的端口,使用 “-h” 选项查看帮助.
cd c:\rustdesk-server-windows-x64 pm2 start hbbs.exe -- -r hbbr运行所在主机的地址:端口号
pm2 start hbbr.exe
pm2 save
pm2 log hbbr pm2 log hbbs
在首页中输入目标设备的ID或选择历史设备,即可进行验证。 验证成功后即可控制对方的桌面。
首页 | 连接成功 |
输入控制提供鼠标模式/触屏模式两种模式,可以通过下方工具栏进行切换。
进入 | 模式选择 |
在鼠标模式中,你也可以通过双指轻触触发远程设备的鼠标右键
1.1.9版本开始,安卓客户端增加了管理其他设备文件的功能。
在首页的已连接设备列表中,找到需要进行文件控制的目标设备ID。
长按或点击右侧更多选项即可选择文件传输
首页 | 连接成功 |
如何传输文件?
多选模式 | 文件粘贴 |
通过底部导航栏点击设置,进入设置页面点击ID/中继服务器。 输入并提交后会自动切换至指定服务器。 也可以通过右上角扫描二维码。 下图是安卓截图,如果是iOS,对应选项在主界面右上角菜单中。
1.1.9版本开始,安卓客户端增加了共享手机屏幕和共享手机文件系统的功能。
获取权限与开启服务
通过底部导航栏点击共享屏幕
根据需要,配置各项权限, 每次启动RustDesk后,“屏幕录制"以及“输入控制"权限都再次重新申请。
权限 | 说明 |
屏幕录制 | 是否启动屏幕录制共享权限,启动的同时即开启监听服务 |
输入控制* | 是否允许控制者控制手机的输入,比如用鼠标进行虚拟触屏操作 |
文件传输* | 是否开启文件传输权限,启动后可远程控制这台手机的文件系统 |
音频录制 | 是否共享手机内部的系统音乐(非麦克风输入) |
其中,* 代表特殊权限,获取此类权限需要跳转到安卓系统设置页面手动获取,详情如下
特殊权限获取 - 文件
获取安卓文件权限将会自动跳转到系统设置页面 |
特殊权限获取 - 鼠标输入
步骤 一 找到“已安装的服务” | 步骤 二 启动RustDesk Input |
以上演示操作系统为 Samsung Galaxy S10 mobile11 OneUI, 不同安卓手机系统的系统设置页面可能会不同,请根据您的系统页面调整
远程鼠标控制安卓的快捷操作:
启动服务
获取 屏幕录制 权限后将自动启动服务,也可以通过点击启动服务按钮开启服务,服务启动后即可接受来自其他设备的桌面控制请求。
若开启了文件传输权限,也可以接受来自其他设备的文件控制请求。
启动服务后,会自动为此设备获取唯一ID和随机的密码,其他设备可以通过ID与密码对手机进行控制,也可以在收到新请求时手动进行确认。
启动服务前 | 启动服务后 |
PC端:
mobile端:
可以随时停止服务或关闭指定连接 | 可以接收或发起聊天 |
打开 .dmg 文件并将 RustDesk 拖到 应用程序,如下所示。
确保您已退出所有正在运行的 RustDesk。还要确保退出托盘上显示的 RustDesk 服务。
解锁改变 | 点击"App Store and identified developers" |
Due to MacOS security policy change, our api which captures input on local side does not work any more. You have to enable “Input Monitoring” permission on local Mac side. Please follow this
https://github.com/rustdesk/rustdesk/issues/974#issuecomment-1185644923
It seems no quick fix, we need to fix together with our Flutter version.
为了获得捕获屏幕的能力,您需要授予 RustDesk 辅助功能 权限和 屏幕录制 权限。 RustDesk 将引导您进入设置窗口。
RustDesk 窗口 | 设置窗口 |
如果您在设置窗口中启用了它,但 RustDesk 仍然会发出警告。请通过 - 按钮从设置窗口中删除 RustDesk,然后单击 + 按钮,在 /Applications 中选择 RustDesk。
- 和 + 按钮 | 选择 RustDesk |
请按照上面相似步骤设置*屏幕录制**权限。
Ubuntu (>= 16)
# please ignore the wrong disk usage report sudo apt install -fy ./rustdesk-<version>.deb
centos/fedora (>=18)
sudo yum localinstall ./rustdesk-<version>.rpm
arch/manjaro
sudo pacman -U ./rustdesk-<version>.pkg.tar.zst
Opensuse (> = Leap 15.0)
sudo zypper install --allow-unsigned-rpm ./rustdesk-<version>-suse.rpm
rustdesk还不支持wayland;您需要手动切换到 X11。
显示服务器
登录屏幕
将以下行修改为 in 或 :WaylandEnable=false
需要修改的配置文件:
#WaylandEnable=false
请重新启动以使上述更改生效:reboot
关于打包桌面版本, 请查看 build.py 。
推荐下载msvc并安装
下载rustup-init.exe并安装
使用git-bash运行下列命令, 下载vcpkg, 安装libvpx, libyuv, opus
git clone https://github.com/microsoft/vcpkg cd vcpkg git checkout 2021.12.01 cd .. vcpkg/bootstrap-vcpkg.bat export VCPKG_ROOT=$PWD/vcpkg vcpkg/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
添加环境变量VCPKG_ROOT=<path>\vcpkg。
桌面版本使用sciter , 下载动态库sciter.dll
rust-bindgen依赖于clang, 下载llvm并安装, 添加环境变量LIBCLANG_PATH,值为<llvm_install_dir>/bin
git clone https://github.com/rustdesk/rustdesk cd rustdesk mkdir -p target/debug mv sciter.dll target/debug cargo run
错误示例
-- Fetching https://chromium.googlesource.com/libyuv/libyuv 287158925b0e03ea4499a18b4e08478c5781541b... CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message): Command failed: D:/program/Git/mingw64/bin/git.exe fetch https://chromium.googlesource.com/libyuv/libyuv 287158925b0e03ea4499a18b4e08478c5781541b --depth 1 -n
解决方法
使用浏览器下载https://chromium.googlesource.com/libyuv/libyuv/+archive/287158925b0e03ea4499a18b4e08478c5781541b.tar.gz, 然后放到vcpkg/downloads下, 重新安装.
错误示例
cargo run Updating git repository `https://github.com/open-trade/confy` warning: spurious network error (2 tries remaining): failed to receive response: 操作超时 ; class=Os (2) error: failed to get `confy` as a dependency of package `hbb_common v0.1.0 (D:\rustdesk\rustdesk\rustdesk\libs\hbb_common)` Caused by: failed to load source for dependency `confy` Caused by: Unable to update https://github.com/open-trade/confy#27fa1294 Caused by: object not found - no match for id (27fa12941291b44ccd856aef4a5452c1eb646047); class=Odb (9); code=NotFound (-3)
可能作者使用git force push覆盖了之前的commit
解决方法
cargo update强制更新包
错误示例
thread 'main' panicked at 'Failed to find package: VcpkgNotFound("No vcpkg installation found. Set the VCPKG_ROOT environment variable or run 'vcpkg integrate install'")', libs\scrap\build.rs:7:45
解决办法
添加VCPKG_ROOT环境变量, 或者使用VCPKG_ROOT=<vcpkg_dir> cargo run
错误示例
thread 'main' panicked at 'Unable to find libclang: "couldn't find any valid shared libraries matching: ['clang.dll', 'libclang.dll'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"', C:\Users\selfd\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\bindgen-0.59.2\src/lib.rs:2144:31
解决办法
安装llvm, 设置LIBCLANG_PATH环境变量为llvm_install_dir/bin
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。