rustdesk域控灵活使用

简介:#

rustdesk是一个非常好用的可以私域部署的远程协助软件,俗称远程桌面。好处就太多了。

我的环境为了安全,全面封禁3389端口,封禁135,136,137,138,443。好在没要求服务器封禁,否则我的域控,MDT,都不能用了。

环境又复杂,管理范围跨郑州,开封,虽说不远,还有开封灌汤包、驴肉汤、鲤鱼焙面…………

我还是懒的跑。

为了更快捷,简单的处理一些小故障,就需要一个远程协助系统,且最好能处理windows UAC问题。

经不断摸索,终于找到了在域环境下灵活使用rustdesk的方法。

服务器安装:#

WINDOWS & PM2 或者 NSSM :: RustDesk文档

Synology DSM 7.2 :: RustDesk文檔(DOCKER)

rustdesk/rustdesk-server: RustDesk Server Program (github.com) (S6版叠加单服务)

我使用了S6单服务版本。有一个问题是掉电重启后,服务异常,需要手动down up 一下。

注意修改一下RELAY地址为你服务器的IP地址或域名,端口21117不要改。

复制代码
version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=rustdesk.example.com:21117"
      - "ENCRYPTED_ONLY=1"
    volumes:
      - ./data:/data
    restart: unless-stopped
复制代码

docker compose 启动后,到data目录下,找一个pub文件,里面将是连接密钥。

简单客户端#

下载对应版本的客户端,然后配置服务器地址,密钥就可以了。

点击三个竖点,

 再找到网络

 设置ID服务器地址,和key,就可以了。

首页显示就绪,就是配置好了。

 控制端和被控端是一样的。双方都就绪后,就可以通过输入对方的ID,来远程协助了。

中级安装#

每次这么干是不是有点麻烦?

官方支持将配置放入 rustdesk.exe 文件名中 (仅支持 Windows)

将 rustdesk.exe 更改为 rustdesk-host=<主机 IP 或名称>,key=<公钥字符串>.exe,例如 rustdesk-host=192.168.1.137,key=xfdsfsd32=32.exe。 

 好了,这样就可以免配置了。直接运行就可以了,程序自动从文件名中读取配置。

高级安装#

Client Deployment :: Documentation for RustDesk

这都不叫install了,叫deployment,部署。

这就开始域控了。

准备#

先随便配置一个能用的客户端,去网络配置。箭头指的左边是导入,右边是导出。

 导出的信息是编码的,大概这样

9JSPjtCNChWQxkHb182MTJ0UvF2cQhDWlBXcqNlT0pGUQNXNBRlaOlVY1hFU4IiOikXZrJCLiIiOikGchJCL23455kXYsVmciwiIyIjLy4CO2EjLykTMiojI0N3boJye

删空配置,你可以再导入测试一下。

官网的powershell脚本,bat脚本,就随你喜欢来挑了。

放到计算机启动脚本即可。计算机启动脚本默认应该是管理员权限。

随手改一下脚本吧,GitHub不好访问啊。

powershell脚本#

复制代码
$ErrorActionPreference= 'silentlycontinue'

# Assign the value random password to the password variable
$rustdesk_pw=(-join ((65..90) + (97..122) | Get-Random -Count 12 | % {[char]$_}))

# 这里粘贴你导出的配置
$rustdesk_cfg="configstrinsdfasdfasdasdfasdfawefwaefawefaefaswefawefawefaefawefawefaewfasdfasdfasdfawefawefafdg"

################################### Please Do Not Edit Below This Line #########################################

# Run as administrator and stays in the current directory
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
    if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000)
    {
        Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
        Exit;
    }
}

# This function will return the latest version and download link as an object
function getLatest()
{# 这里写你方便的下载地址,
    $Downloadlink = "http://192.168.1.1/rustdesk-1.2.4-x86_64.exe"    # 这里写对应的版本号,为了启动脚本判断更新。
    $Version = "1.2.4"# Create object to return
    $params += @{Version = $Version}
    $params += @{Downloadlink = $Downloadlink}
    $Result = New-Object PSObject -Property $params
    
    return($Result)
}

$RustDeskOnGitHub = getLatest

#从注册表获取已安装的版本号
$rdver = ((Get-ItemProperty  "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\").Version)

if ($rdver -eq $RustDeskOnGitHub.Version)
{
    Write-Output "RustDesk $rdver is the newest version."
    Exit
}

if (!(Test-Path C:\Temp))
{
    New-Item -ItemType Directory -Force -Path C:\Temp > null
}

cd C:\Temp

Invoke-WebRequest $RustDeskOnGitHub.Downloadlink -Outfile "rustdesk.exe"
Start-Process .\rustdesk.exe --silent-install
Start-Sleep -seconds 20

$ServiceName = 'Rustdesk'
$arrService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue

if ($arrService -eq $null)
{
    Write-Output "Installing service"
    cd $env:ProgramFiles\RustDesk
    Start-Process .\rustdesk.exe --install-service
    Start-Sleep -seconds 20
}

while ($arrService.Status -ne 'Running')
{
    Start-Service $ServiceName
    Start-Sleep -seconds 5
    $arrService.Refresh()
}

cd $env:ProgramFiles\RustDesk\
.\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id

.\rustdesk.exe --config $rustdesk_cfg

.\rustdesk.exe --password $rustdesk_pw

Write-Output "..............................................."
# Show the value of the ID Variable
Write-Output "RustDesk ID: $rustdesk_id"

# Show the value of the Password Variable
Write-Output "Password: $rustdesk_pw"
Write-Output "..............................................."
复制代码

bat脚本#

复制代码
@echo off

REM Assign the value random password to the password variable
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set alfanum=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
set rustdesk_pw=
for /L %%b in (1, 1, 12) do (
    set /A rnd_num=!RANDOM! %% 62
    for %%c in (!rnd_num!) do (
        set rustdesk_pw=!rustdesk_pw!!alfanum:~%%c,1!
    )
)

REM Get your config string from your Web portal and Fill Below
rem 这里是你复制出来的配置字符串 set rustdesk_cfg
="configstring" REM ############################### Please Do Not Edit Below This Line ######################################### if not exist C:\Temp\ md C:\Temp\ cd C:\Temp\ rem 这里改你方便的下载连接 curl -L "https://github.com/rustdesk/rustdesk/releases/download/1.2.3/rustdesk-1.2.3-x86_64.exe" -o rustdesk.exe rustdesk.exe --silent-install timeout /t 20 cd "C:\Program Files\RustDesk\" rustdesk.exe --install-service timeout /t 20 for /f "delims=" %%i in ('rustdesk.exe --get-id ^| more') do set rustdesk_id=%%i rustdesk.exe --config %rustdesk_cfg% rustdesk.exe --password %rustdesk_pw% echo ............................................... REM Show the value of the ID Variable echo RustDesk ID: %rustdesk_id% REM Show the value of the Password Variable echo Password: %rustdesk_pw% echo ...............................................
复制代码

使用启动脚本安装,已经够方便了。

我也把一些关键代码改了改,更适合国内使用。并做了中文注释。

定制安装#

其实我并不想所有的终端都安装远程桌面,终端用户的无知是无下限的,多个图标都跟你嚷嚷半天。

那么如何定制安装,是我历经多天的寻找和实验得出的结论。

其实定制安装的核心在两点:

一:--silent-install。

二:编码配置到文件名。

简单安装和中级安装,都不算安装,rustdesk将安装到用户目录,且防火墙我也一直无法调试为自动允许。

--silent-install,才是真正的安装,安装到C:\Program Files目录去,且自动配置防火墙,当然这就需要管理员权限才可以安装成功。

编码配置到文件名,则是因为将配置编译到执行文件,更麻烦,虽然官方给了github actions编译,但是也要等待一小时左右。还是改文件名方便。

测试#

硬编码配置到文件名

 使用--silent-install 参数进行安装

 输入管理员账号密码。

 安装完成后,测试能否被控,主控我们管理员随时手动开防护墙,测不测都行的。

套皮RunAsSpc#

 将runasspc解压后,只需要x64目录下这两个文件。

打开runasspcadmin.

Path,直接写改好的文件名,

选Domain,域用户,一般域名自动填好,用户名密码填好,Optional,填入--silent-install参数。

最后Save CryPtfile,保存配置证书?管他啥名字呢。

 将这几个文件随便复制到某个新机器,就可以执行RunAsSpc测试了。

高级自定义#

其实只需要3个文件,原始安装文件、RunAsSpc、crypt。

这样还是不够方便,一次下载三个?解压了用户也不知道是要执行RunAsSpc呀。

winrar自解压,自运行。虽说用了段时间bandzip,7zip,还是rar的图标让终端用户熟悉啊。

当然你自定义图标也行。

一:添加3个文件到rar,并选择自解压

 二:高级标签,自解压选项

 三:设置标签-解压后运行RunAsSpc

四:模式标签--解压到临时文件夹

五:确定生成自解压自执行程序

 好了,再找台机测试把。

后记#

简单总结集中安装方式的重要区别

 
 
  防火墙 UAC管理员
简单安装 需配置 不支持
中级安装 需配置 不支持
高级安装 自动配置 支持
自定义安装 自动配置 支持

作者:上官飞鸿

出处:https://www.cnblogs.com/jackadam/p/18207257

版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。

posted @   上官飞鸿  阅读(1673)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示