简介:
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管理员 | |
简单安装 | 需配置 | 不支持 |
中级安装 | 需配置 | 不支持 |
高级安装 | 自动配置 | 支持 |
自定义安装 | 自动配置 | 支持 |