Skip to main content

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-Ermittlung CORESTREAM-Runbook-Entwurf:und URL-Aktion stammen aus einem Praxiseinsatz. Das alte Skript war jedoch auf RustDesk Self-hosted1.2.6 Clientund Setupdirekte Änderungen an RustDesk2.toml festgelegt. Der aktuelle Ansatz nutzt die dokumentierte Konfigurationszeichenfolge und muss mit jeder freigegebenen Client-Version pilotiert werden.

Empfohlener Ablauf

    RustDesk als Dienst installieren. Servereinstellungen mit einer RustDesk-Konfigurationszeichenfolge setzen. RustDesk-ID in ein TRMM-Custom-Field schreiben. Eine URL-Aktion ohne Kennwort hinterlegen. Unbeaufsichtigten Zugriff über eine geeignete Kennwort- oder Kontorichtlinie absichern.

    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

    https://github.com/matlat8/

      Die Konfigurationszeichenfolge stammt aus der RustDesk-Webkonsole oder aus Settings → Network → Export Server Config. Download-URL und SHA-256-Prüfsumme gehören zur selben freigegebenen Version. Das TRMM-RustDesk-Integration

      Skript

      Installationskriptläuft RustDesk

      als

      MitAdministrator diesembeziehungsweise SYSTEM.

      Geschützte Werte werden nicht im Skript wirdprotokolliert. der RustDesk

      Installationsskript

      Client

      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

          RustDesk: Client Deployment RustDesk: Client Configuration Tactical RMM: RustDesk-Integration

          Quelle: Obsidian Knowledge Base/TacticalRMM/RustDesk in Tactical RMM Integrieren.md · Stand: 2026-08-2510-12 · Automatisiert publiziert durch Hermes.