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

网管小贾
• 阅读 333

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

网管小贾 / 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

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

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

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

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


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

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

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


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

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


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

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

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

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


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

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

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

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


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

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


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

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


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

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


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

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

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


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

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


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

第一条命令:

npm install -g pm2

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


第二条命令:

npm install pm2-windows-startup -g

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


第三条命令:

pm2-startup install

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


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

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

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

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


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

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


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

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


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

嗯,2111721119 也都开放了。

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


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

pm2 save

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


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

pm2 list

连连看

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

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

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


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

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

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

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


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

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

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

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


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

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


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

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


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

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

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

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


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

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

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


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

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


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

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

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

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


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


其实还能玩直连

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

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


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

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


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


写在最后

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

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

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

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


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

网管小贾 / sysadm.cc

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
O2O 行业 IT 系统架构实践分享——预告
主题:O2O行业IT系统架构实践分享时间:4月26日20:00——21:30地点:QingCloud技术分享群报名方式:扫描文末小编二维码添加好友,发送听课,小编拉你进群。讲师:张卫华,青云QingCloud架构和解决方案工程师。本期内容介绍:O2O作为一种新生的商业模式,经过这些年的实践和讨论,已
Stella981 Stella981
3年前
Hibernate纯sql查询结果和该sql在数据库直接查询结果不一致
问题:今天在做一个查询的时候发现一个问题,我先在数据库实现了我需要的sql,然后我在代码中代码:selectdistinctd.id,d.name,COALESCE(c.count_num,0),COALESCE(c.count_fix,0),COALESCE(c
Stella981 Stella981
3年前
Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)
本文首发于:Jenkins中文社区(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjenkinszh.cn)!huashan(https://oscimg.oschina.net/oscnet/f499d5b4f76f20cf0bce2a00af236d10265.jpg)
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这