RustDesk in Tactical RMM integrieren
Wiki:
RustDesk in Tactical RMM Integrieren
integrieren
Diese Anleitung beschreibt die sichere Windows-Bereitstellung von RustDesk über Tactical RMM (TRMM). Ein eigener RustDesk-Server wird vorausgesetzt.
note:Status:>Dienstinstallation,AktuellerID-ErmittlungCORESTREAM-Runbook-Entwurf:und URL-Aktion stammen aus einem Praxiseinsatz. Das alte Skript war jedoch auf RustDeskSelf-hosted1.2.6ClientundSetupdirekte Änderungen anRustDesk2.tomlfestgelegt. Der aktuelle Ansatz nutzt die dokumentierte Konfigurationszeichenfolge und muss mit jeder freigegebenen Client-Version pilotiert werden.
Empfohlener Ablauf
Quellen:RustDesk empfiehlt für Server Pro den Custom Client Generator. Für OSS- oder RMM-Rollouts sind ein geprüftes PowerShell-Skript und --config die dokumentierte Alternative. Die TRMM-Beispielseite ist für Collector und URL Action nützlich, enthält aber eine veraltete, fest codierte Client-Version.
https://rustdesk.com/docs/de/self-host/client-deployment/integrations/tactical-rmm/
Voraussetzungen
SkriptInstallationskriptläuft RustDesk
MitAdministrator diesembeziehungsweise SYSTEM.
Installationsskript
Die installiert.Werte als TRMM-Parameter oder geschützte Variablen übergeben. Keine produktiven Servernamen, Kennwörter oder Tokens in die Knowledge Base eintragen.
param(
[Parameter(Mandatory = $ErrorActionPreference=true)]
[string]$DownloadUrl,
[Parameter(Mandatory = $true)]
[ValidatePattern('^[A-Fa-f0-9]{64}$')]
[string]$ExpectedSha256,
[Parameter(Mandatory = $true)]
[string]$ConfigString
)
$ErrorActionPreference = 'silentlycontinue'Stop'
if$workDir (!(Test-= Join-Path C:\Temp))$env:ProgramData {'TacticalRMM\temp\rustdesk'
$installer = Join-Path $workDir 'rustdesk.exe'
New-Item -ItemType Directory -Force -Path C:\Temp$workDir >| null
}
cd C:\TempOut-Null
Invoke-WebRequest "https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.exe"-Uri $DownloadUrl -OutfileOutFile "rustdesk.exe"$installer
$actualSha256 = (Get-FileHash -Path $installer -Algorithm SHA256).Hash
if ($actualSha256 -ne $ExpectedSha256) {
throw 'RustDesk SHA-256 stimmt nicht überein.'
}
Start-Process .\rustdesk.exe-FilePath $installer -ArgumentList '--silent-installinstall' -waitWait
$ServiceName = 'Rustdesk'
$arrServiceservice = Get-Service -Name $ServiceName'RustDesk' -ErrorAction SilentlyContinueStop
if ($arrService -eq $null)
{
Start-Sleep -seconds 20
}
while ($arrService.service.Status -ne 'Running') {
Start-Service $ServiceName-Name Start-Sleep -seconds 5
$arrService.Refresh()'RustDesk'
}
net$client stop= rustdeskJoin-Path $usernameenv:ProgramFiles 'RustDesk\RustDesk.exe'
& $client --config $ConfigString
if ($LASTEXITCODE -ne 0) {
throw "RustDesk-Konfiguration fehlgeschlagen (Exit-Code $LASTEXITCODE)."
}
Restart-Service -Name 'RustDesk'
Remove-Item -Path $installer -Force
Nicht automatisch «latest» herunterladen: Version testen, freigeben, URL und SHA-256 pinnen und erst danach ausrollen.
RustDesk-ID erfassen
In TRMM ein Custom Agent Field rustdeskid vom Typ Text anlegen. Collector-Skript:
$ErrorActionPreference = 'Stop'
$client = Join-Path $env:ProgramFiles 'RustDesk\RustDesk.exe'
if (-not (Test-Path $client)) {
throw 'RustDesk ist nicht installiert.'
}
$id = ((Get-WMIObject& $client -ClassName-get-id Win32_ComputerSystem)| Out-String).Username).Split('\'Trim()
if ([1]string]::IsNullOrWhiteSpace($id)) Remove-Item{
C:\Users\$username\AppData\Roaming\RustDesk\config\RustDesk2.toml
New-Item C:\Users\$username\AppData\Roaming\RustDesk\config\RustDesk2.toml
Set-Content C:\Users\$username\AppData\Roaming\RustDesk\config\RustDesk2.toml "rendezvous_server =throw 'IPADDRESS'RustDesk-ID `nnat_typekonnte =nicht 1`nserialermittelt =werden.'
0`n`n[options]`ncustom-rendezvous-server}
= 'IPADDRESS'`nkey = 'KEY='`nrelay-server = 'IPADDRESS'`napi-server = 'https://remote.corestream.ch'"
Remove-Item C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml
New-Item C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml
Set-Content C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml "rendezvous_server = 'IPADDRESS' `nnat_type = 1`nserial = 0`n`n[options]`ncustom-rendezvous-server = 'IPADDRESS'`nkey = 'KEY='`nrelay-server = 'IPADDRESS'`napi-server = 'https://remote.corestream.ch'"
net start rustdesk$id
URL-Aktion
rustdesk://connection/new/{{agent.rustdeskid}}
Die Anwendung fordert danach die zulässige Authentisierung an.
Kein Kennwort in URL oder Custom Field: Query-Strings, RMM-Felder, Skriptausgaben und Prozessargumente können in Logs oder Browser-Verläufen erscheinen. Kein dauerhaftes Kennwort als
?password=...speichern. Für unbeaufsichtigten Zugriff vorzugsweise RustDesk-Pro-Konten/Adressbuch, zeitlich begrenzte Zugangsdaten oder einen geeigneten Secrets-Workflow einsetzen.
Abnahme
Get-Service RustDesk meldet Running.
ID-Server und öffentlicher Schlüssel sind korrekt.
Die ID erscheint im TRMM-Custom-Field.
Die URL-Aktion öffnet den ausgewählten Agenten.
Direktverbindung und Relay-Fallback funktionieren aus einem externen Netz.
Neuinstallation und Update wurden mit der gepinnten Version getestet.
TRMM-Ausgabe, Skript und Custom Fields enthalten keine Kennwörter oder Tokens.
Quellen
Quelle: Obsidian Knowledge Base/TacticalRMM/RustDesk in Tactical RMM Integrieren.md · Stand: 2026-08-2510-12 · Automatisiert publiziert durch Hermes.