只会 Windows 也能轻松搭建远程桌面 RustDesk 自用服务器

news2024/11/17 11:01:38

在这里插入图片描述

网管小贾 / sysadm.cc

“哥,你啥时候回来啊?XX业务系统又出问题了!”

“情况紧急,老大说让你远程处理,总之尽快解决!”


虽说我常年出差在外总能收到这样的消息,似乎早已习惯,但是公司小胡的这通连环轰炸却让我有些焦躁。

如今情况不同,我发现最近HS采样点都离奇地消失了!

这大老远的让我怎么回公司呢?

于是我就找啊找啊,好不容易让我给找着了,排队的人还真多,每个人都一副焦急的样子,队伍一眼望不到头,尽头处的小白房子若隐若现。

我立马排上队,急接着就给小胡回消息,示意他公司电脑里有一份 RustDesk 搭建服务器的说明文档,让他赶紧帮忙确认一下远程服务器的运行情况。

如果可以的话,我先用手机远程上去看看问题。


公司出于系统安全方面的考量,在出差前我已经在 Windows 系统平台上初步搭建了 RustDesk 中继服务器。

现在正好用上,如果你也想了解如何自建 RustDesk 服务器,那么我顺便给你们说上一说。

什么,太专业,只会 Windows

没事,会 Windows 系统就够了,没有想象中的那么难,走起吧!


### `RustDesk` 简介

RustDesk 是一款免费开源可商用的远程桌面控制软件。


不方便访问 Github 的小伙伴可以下载这里的备用链接。

  • rustdesk-server - 服务器程序
    • rustdesk-server-1.1.6.zip - 源码
    • rustdesk-server-linux-x64.zip - Linux
    • rustdesk-server-windows-x64.zip - Windows
  • rustdesk-1.1.9.zip - 客户端源码
  • rustdesk-1.1.9-fedora28-centos8.rpm - Fedora 客户端
  • rustdesk-1.1.9-manjaro-arch.pkg.tar.zst - Manjaro 客户端
  • rustdesk-1.1.9-raspberry-armhf.deb - 树莓派客户端
  • rustdesk-1.1.9.dmg - MacOS 客户端
  • rustdesk-1.1.9.deb - Debian 客户端
  • rustdesk-1.1.9-suse.rpm - SUSE Linux 客户端
  • rustdesk-1.1.9.apk - 安卓版客户端
  • rustdesk-1.1.9-windows_x64.zip - Windows 安装版客户端
  • rustdesk-1.1.9-windows_x64-portable.zip - Windows 便捷版客户端
  • node-v18.12.0-x64.msi - NodeJS 安装包

RustDesk全家桶打包.7z(89.9M)

下载链接:https://pan.baidu.com/s/1_pbFBZS6_uuPxM6Adw1Qdw

提取码:<关注公众号,发送001001>


RustDesk 的具体特点大家可以到官网上查看,我这儿只说一些相比其他远程软件不同或更高级的特点。

比如说,支持多平台客户端,包括网页版。

又比如不限速度,稳定可靠,可自行搭建中继服务器。

又又比如不区分控制端和受控端,互相都可以连接控制。


RustDesk 的连接原理非常简单,就是通过 ID 中继服务器识别双方,然后再由服务器返回指令让双方直接建立连接。

如果双方无法直接建立连接,那么 ID 中继服务器就充当中间人在连接双方之间来回传递数据和信息。


再来让我们看看 RustDesk 的名字,我想各位可能猜出来了,肯定是用 Rust 写的。

好像了解 Rust 语言的人并不多,在国内似乎也没有很大的知名度。

不过这些都不打紧,RustDesk 的易用就是一大特点,只要我们能用会用就行。

OK,介绍完毕!

在正式开始说明前,我们先来了解一些有助于我们理解的概念术语!


一些概念术语

要想自己搭建 RustDesk 服务器,有一些概念术语需要事先了解。


服务器:
  • hbbs - RustDesk ID 注册服务器
  • hbbr - RustDesk 中继服务器

ID 注册服务器( hbbs )就是管各个客户端 ID 的,每个客户端都有一个唯一的 ID

而中继服务器( hbbr )则是负责检测、中转各个客户端连接和数据传输。

通常这两个服务器可以是在同一台机器中运行。


开放端口:

默认情况下,hbbs 监听 21115(tcp) , 21116(tcp/udp) , 21118(tcp)hbbr 监听 21117(tcp)21119(tcp)

务必在防火墙开启这几个端口, **注意 21116 要同时开启 TCPUDP **。


  • TCP/21115 - hbbs 用作 NAT 类型测试
  • UDP/21116 - hbbs 用作 ID 注册与心跳服务
  • TCP/21116 - hbbs 用作 TCP 打洞与连接服务
  • TCP/21117 - hbbr 用作中继服务
  • TCP/21118/21119 - 网页客户端

官方安装说明(有坑):

https://rustdesk.com/docs/en/self-host/install/


Windows 上自建服务器

打开 Windows 服务器程序压缩包,只看到两个文件,意思是啥前面已经解释过了。

hbbr.exe
hbbs.exe

别看只有两个文件,劝君还是不要只看官网,否则会有无数个坑等着你,比如直接运行它会报错。

虽说原因无非就是缺东西,和人一样,给到位了就好了。

问题是缺少的东西不是太好找,不过我费了点劲儿还是给找到了,老规矩文末下载。

在这里插入图片描述


如果你不信,那么接下来就会遭遇N多问题。

给你看张图,不管如何运行都会出错和失败,服务始终无法正常工作。

在这里插入图片描述


缺少组件是不是上网到处找啊?

其实大可不必,只要安装 NodeJS 即可,已经放在打包下载中了。


一旦搞定缺失的组件后,整个状态就会变得完全不一样了,毕竟官方为我们编译好的程序我们只要拿来用就行了,非常之爽啊!

PM2 或是 NSSM 也只不过是用于辅助启动的工具罢了。

当然我先声明,我对 NodeJS 的了解基本属于小白级别,只不过我有照猫画虎的小聪明罢了。

接下来我们就先给小伙伴们展示一下直接跑 hbbs/hbbr 的样子,之后再拿 PM2 来简述一下,毕竟后者是官方推荐的方法,可以很方便地管理 hbbs/hbbr 服务的启动。


hbbs/hbbr 的方法简单得不能再简单了,直接一个命令不带任何参数。

我们先跑下 ID 注册服务器试试。

C:\rustdesk-server-windows-x64>hbbs

在这里插入图片描述


你看,它不报错了吧,与此同时也打开了几个端口。

在这里插入图片描述


再来看看进程列表,稳稳地跑着呢。

在这里插入图片描述


在实际连接使用过程中,服务会很敬业地分析接收我们传递的连接信息,小筒子一看就很认真嘛!

在这里插入图片描述


OK,中继服务器 hbbr 也是同理,不过我好像只开了一个 hbbs 就可以用了。

那么接下来我们再试试官网推荐的 PM2 方法。

我的理解是,这玩意应该是 NodeJS 程序的软件包管理器,不管怎样这一点照着官网走就是了。


首先,安装 NodeJS ,下载包在后面也给备好了,亦或者各位可以到其官网上下载 LTS 版本。

在这里插入图片描述


一路耐可斯特后安装完毕,接下来在命令提示窗口中依次输入三条命令,意为安装 Windows 启动管理器。

第一条命令:

npm install -g pm2

在这里插入图片描述


第二条命令:

npm install pm2-windows-startup -g

在这里插入图片描述


第三条命令:

pm2-startup install

在这里插入图片描述


一切准备就绪了,我们可以用 pm2 管理并运行 ID 注册服务器 hbbs 和中继服务器 hbbr 了。

cd c:\rustdesk-server-windows-x64
pm2 start hbbs.exe -- -r <hbbr运行所在主机的地址>
pm2 start hbbr.exe 
pm2 save

看看我运行的效果,先来一张跑 hbbs 的截图。

在这里插入图片描述


很好,online 状态,再瞅瞅进程信息,用的是 node.exe

在这里插入图片描述


紧接着跑 hbbr 吧,兄弟俩齐上阵,效果刚刚滴。

在这里插入图片描述


前面跑单独命令的时候我没跑 hbbr ,现在顺便也看一下端口状态吧。

嗯,2111721119 也都开放了。

在这里插入图片描述


非常完美,我们把它保存起来,下次重启后还能跟着系统自动启动多好。

pm2 save

在这里插入图片描述


假如你不放心,还想看看它工作的样子,可以随时将它再打印出来查看。

pm2 list

连连看

服务都跑起来了,差不多也该到连连看环节了,要不光一个服务有啥好看的呢!

来吧,打开客户端程序,我用的是 Windows 上的客户端,它长这样。

在这里插入图片描述


界面很简洁,左侧是系统自动计算给出的 ID 和密码,右侧则是我们需要连接到目标的操作区域。

通常,我们只要在文本框中输入目标对象的 ID 再点击 连接 就可以了。

一旦连接有了反馈,RustDesk 就会问我们要对方的密码。

在这里插入图片描述


这个密码是啥,在哪儿找?

呐,就在这儿,你把鼠标放上去就看显示明文。

不过这个密码是对方的,可以通过询问了解到。

在这里插入图片描述


很快连接就建立好了,速度飞快,你可以开始远程操作了。

在这里插入图片描述


连接完成后,控制台上也会留有连接记录,方便下次快捷操作。

在这里插入图片描述


好了,到这里我就问你,完美不完美?

说实话,很完美,不过这种情况下,RustDesk 建立连接时会去找公网上的服务器,然后会自动帮你连接你想要的目标对象。

然而你别忘了,我们前面都自建好了服务器,放着不用浪费感情你不会心痛?

是的,要用真心,我们赶快连接我们自己的服务器吧!


告诉你,用自己的服务器也灰常简单,简单得不要不要的!

第一步,点开三个点菜单,选择 ID/中继服务器

在这里插入图片描述


第二步,将服务器的主机名或IP地址输入到窗口文本框中,其他的不理它就是了。

在这里插入图片描述


好了,就两步,有没有病都是走这两步。

你要是还不太自信,可以将服务器和客户端的网关去掉,确保它们上不了公网。

这样做的目的是为了让连接与被连接双方都明确无误地连接我们指定的自建的服务器上而非公网服务器。

最后,你可以像之前远程连接一样来连接目标对象了。


需要多说一嘴,使用自建服务器来建立远程连接的方式,非常适合安全性要求高的场景,局域网或其他一些私有网络也可以这么做,安全可靠、便捷高效。


其实还能玩直连

RustDesk 的原理,服务器只是充当了中介的身份,只要连接双方是在直接能访问到的网络中(比如局域网),它就会给安排成直连。

除非无法直连或速度不理想,否则最后连接双方其实还是直连状态,也就是说 RustDesk 完全可以直接玩直连。


如下图,在菜单中勾选 允许IP直接访问 ,然后输入目标主机名或IP地址即可畅快连接。

在这里插入图片描述


这种情况下,中继服务器也就可以退休了,说白了,比如在局域网中,我们就可以像用其他远程连接软件一样,直接连接远程操作了。


写在最后

我排着队一路走走停停,最终手机成功连接到了公司的服务器上,还好问题不大很快就处理好了。

这时我一抬头,嘿,马上轮到我了,那个激动啊。

结果等我走近扶着眼镜这么仔细一瞧差点没当场社死!

只见那小白房子上挂一块硕大匾额,上写四个大字:公共厕所…


将技术融入生活,打造有趣之故事

网管小贾 / sysadm.cc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1077712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go 语言切片扩容规则是扩容2倍?1.25倍?到底几倍

本次主要来聊聊关于切片的扩容是如何扩的&#xff0c;还请大佬们不吝赐教 切片&#xff0c;相信大家用了 Go 语言那么久这这种数据类型并不陌生&#xff0c;但是平日里聊到关于切片是如何扩容的&#xff0c;很多人可能会张口就来&#xff0c;切片扩容的时候&#xff0c;如果老…

基于安卓android微信小程序音乐播放器

运行环境 小程序前端框架&#xff1a;uniapp 小程序运行软件&#xff1a;微信开发者 后端技术:javaSsm(SpringSpringMVCMyBatis)vue.js 后端开发环境:idea/eclipse 数据库:mysql 项目介绍 音乐播放器小程序的设计主要是对系统所要实现的功能进行详细考虑&#xff0c;确定所要…

唐老师讲电赛

dc-dc电源布局要点

计算机网络 面试题

PART1 1.TCP和UDP的区别是什么&#xff1f; 2.TCP报文首部格式是什么&#xff1f; 3.TCP三次握手的过程 4.为什么TCP要三次握手&#xff1f; 5.TCP三次握手的数据报可以携带数据吗&#xff1f; 6.半连接队列是什么&#xff1f; 7.SYN 洪泛攻击是什么&#xff1f; 8.TCP…

数据库sql查询成绩第二高

select * from propro; #查询成绩第二高 select max(id) from propro where id <(select max(id) from propro); #查询成绩第二高的第二种方式 select * from (select * from propro order by id desc limit 2) as b order by id asc limit 1;

尚硅谷CSS学习笔记

什么是css css&#xff08;层叠样式表&#xff09; 它是一种标记语言&#xff0c;用于给HTML结构设置样式。简单理解css可以美化html&#xff0c;实现结构与样式的分离。 <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"&g…

【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Nacos 一、 Nacos安装&#xff08;基于Wind…

35.树与二叉树练习(1)(王道第5章综合练习)

【所用的树&#xff0c;队列&#xff0c;栈的基本操作详见上一节代码】 试题1&#xff08;王道5.3.3节第3题&#xff09;&#xff1a; 编写后序遍历二叉树的非递归算法。 参考&#xff1a;34.二叉链树的C语言实现_北京地铁1号线的博客-CSDN博客https://blog.csdn.net/qq_547…

【【萌新的SOC学习之重新起航SOC】】

萌新的SOC学习之重新起航SOC ZYNQ PL 部分等价于 Xilinx 7 系列 FPGA PS端&#xff1a;Zynq 实际上是一个以处理器为核心的系统&#xff0c;PL 部分可以看作是它的一个外设。 我们可以通过使用AXI(Advanced eXtensible Interface)接口的方式调用 IP 核&#xff0c;系统通过 AX…

四维曲面如何画?matlab

clc; clear all [theta,phi]meshgrid(linspace(0,pi,50),linspace(0,2*pi,50)); zcos(theta); xsin(theta).*cos(phi); ysin(theta).*sin(phi); f-1*((x.*y).2(y.*z).2(z.*x).^2); surf(sin(theta).*cos(phi).*f,sin(theta).*sin(phi).*f,cos(theta).*f,f) 结果

第九天!玩转langchain!回调处理器!一篇学会日志+监控+流式传输!9/10

原文&#xff1a;第九天&#xff01;玩转langchain&#xff01;回调处理器&#xff01;一篇学会日志监控流式传输&#xff01;9/10 - 知乎 在第九篇&#xff01;跟着雄哥学langchain中的回调处理器&#xff01; 时间飞快呀~已经第九课了&#xff0c;在更新的这10天时间&#x…

电脑出现msvcp110.dll丢失的解决方法,快速解决msvcp110.dll丢失

电脑中经常会出现msvcp110.dll文件丢失的情况&#xff0c;所以如果电脑中缺失msvcp110.dll文件会让大家很苦恼&#xff0c;那么msvcp110.dll丢失有什么解决办法呢&#xff1f;今天就给大家介绍几种msvcp110.dll丢失的解决办法。 一.msvcp110.dll常出现的问题 1.当您尝试打开某…

Springcloud笔记(2)-Eureka服务注册

Eureka服务注册 服务注册&#xff0c;发现。 在Spring Cloud框架中&#xff0c;Eureka的核心作用是服务的注册和发现&#xff0c;并实现服务治理。 Eureka包含两个组件&#xff1a;Eureka Server和Eureka Client。 Eureka Server提供服务注册服务&#xff0c;各个节点启动后…

Spring AOP的失效场景

首先&#xff0c;Spring的AOP其实是通过动态代理实现的&#xff0c;所以&#xff0c;想要让AOP生效&#xff0c;前提必须是动态代理生效&#xff0c;并且可以调用到代理对象的方法什么情况下会不走代理对象的调用呢&#xff1f;首先就是类内部的调用&#xff0c;比如一些私有方…

中国人民大学与加拿大女王大学金融硕士——不忘初心,点燃梦想之火

人类所具有的种种力量中&#xff0c;最神奇的莫过于梦想的力量。梦想使人生更有意义&#xff0c;是人类的先锋&#xff0c;是前进的引路人。有梦想&#xff0c;才会有希望&#xff0c;才会激发我们内在的潜能&#xff0c;努力去求得光明的前途。让我们点燃梦想之火&#xff0c;…

Linux系统切换用户后只显示$问题解决

问题描述&#xff1a; unbantu操作系统切换为es用户后没有tab键没有补全功能 问题分析 创建用户的时候未指定shell类型&#xff0c;默认的shell为/bin/sh&#xff0c;而不是/bin/bash。 cat /etc/passwd查询结果 es:x:1001:1001::/home/es:/bin/sh解决方案 把对应用户的…

【Mysql实现递归树查询】

Mysql8实现递归查询 递归执行分析demo数据查询demo数据扩展字段扩展 大家好! 在我们日常工作中&#xff0c;经常会遇到一些问题,它们的一些解决方案通常会用到递归这一强大的技术手段。递归不仅能帮助我们更高效的解决问题,还可以使代码更简介、更易于理解, 今天我来给大家分享…

Can 通信-协议

概述 CAN 是 Controller Area Network 的缩写&#xff08;以下称为 CAN&#xff09;&#xff0c;是 ISO国际标准化的串行通信协议。 在当前的汽车产业中&#xff0c;出于对安全性、舒适性、方便性、低公害、低成本的要求&#xff0c;各种各样的电子控制系统 被开发了出来。由于…

Spring中shutdown hook作用

在Spring框架中&#xff0c;Shutdown Hook&#xff08;关闭钩子&#xff09;是一种机制&#xff0c;用于在应用程序关闭时执行一些清理操作Spring会向JVM注册一个shutdown hook&#xff0c;在接收到关闭通知的时候&#xff0c;进行bean的销毁&#xff0c;容器的销毁处理等操作在…

代码随想录算法训练营第23期day17| 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

目录 一、&#xff08;leetcode 110&#xff09;平衡二叉树 二、&#xff08;leetcode 257&#xff09;二叉树的所有路径 三、&#xff08;leetcode 404&#xff09;左叶子之和 一、&#xff08;leetcode 110&#xff09;平衡二叉树 力扣题目链接 状态&#xff1a;已AC 求深…