RustDesk Remote Access
Athena includes an optional integration with RustDesk — an open-source remote desktop tool — for unattended remote support. Install it on managed agents, set and rotate the per-machine connection password centrally, and push a consistent security profile to the whole fleet.
RustDesk is one of two remote-desktop paths in Athena. The built-in WebRTC technician screen-share needs no third-party software and supports session recording; the RustDesk integration documented here is a separate, optional path that manages a standalone RustDesk client on each agent. It is disabled by default and only becomes usable once you turn it on and install the client on target machines.
Every RustDesk action — installing the client, setting or rotating a password, changing a rotation schedule, or a fleet-wide apply — is written to the audit log. Passwords are encrypted at rest on the server.
Enabling the integration#
RustDesk is off until you enable it. Turn it on under
Settings → Agent → Remotes, where the RustDesk connection, security, and general
options live alongside the WebRTC screen-share settings. Enablement corresponds to the
Agent:RustDeskEnabled configuration key (default false).
In the connection settings you can optionally point agents at a self-hosted RustDesk server (its address and public key) instead of the public RustDesk relays, and set a fleet default password and generated-password length:
| Setting (config key) | Default | Purpose |
|---|---|---|
Agent:RustDeskEnabled | false | Master on/off switch for the integration |
Agent:RustDeskServerUrl | empty | Self-hosted RustDesk server address; empty uses the public relays |
Agent:RustDeskServerKey | empty | Self-hosted RustDesk server public key |
Agent:RustDeskDefaultPassword | empty | Optional shared default applied by Apply to all; stored encrypted |
Agent:RustDeskPasswordLength | 16 | Length used when generating passwords |
Agent:RustDeskRotationDays | 0 | Fleet auto-rotation interval in days; 0 disables scheduled rotation |
Installing RustDesk on an agent#
Open an agent from the fleet and go to its RustDesk section on the agent detail
page. If the integration is enabled but the client is not yet present, Athena offers a one-click
Install when the agent is online and Chocolatey is reachable. The install is
dispatched to the agent as a Chocolatey package operation (install rustdesk) that
runs as SYSTEM; if Chocolatey is not already present the agent installs it first (see
Remote commands).
Once installed, the section shows the RustDesk ID, client version, service status, and install path, and lets you manage the connection password. You can also trigger the install over the API:
# Dispatch a RustDesk install to an online agent
POST api/agents/{agentId}/rustdesk/install
The agent must be connected for the install to dispatch; an offline agent returns an error and nothing is queued.
Connection passwords#
Athena manages the RustDesk permanent connection password for each agent centrally — you never have to touch the client on the machine. When you set a password, the server pushes it to the agent and stores an encrypted copy so it can be displayed to authorized operators later.
- Set a password — supply your own value, or leave it blank to have the server generate a strong random one. Setting a password requires the agent to be connected.
- Rotate a password — generate and push a brand-new random password on demand, keeping the agent's existing rotation schedule.
- Apply to all — an Admin can push a password to every agent that has RustDesk installed in one action, using the configured fleet default password (or generating one per agent when no default is set).
Password endpoints:
| Action | Endpoint | Role |
|---|---|---|
| Get an agent's RustDesk credentials | GET api/agents/{agentId}/rustdesk | Operator / Admin |
| Set password (optionally enable rotation) | POST api/agents/{agentId}/rustdesk/set-password | Operator / Admin |
| Rotate password now | POST api/agents/{agentId}/rustdesk/rotate-password | Operator / Admin |
| List all RustDesk credentials | GET api/rustdesk | Admin |
| Apply the default password to all agents | POST api/rustdesk/apply-to-all | Admin |
| Generate a password (without applying) | GET api/rustdesk/generate-password | Admin |
Automatic password rotation#
You can have Athena change RustDesk passwords on a schedule so a machine's connection secret does not stay static. Rotation works at two levels:
- Per-agent schedule — enable rotation for a single agent and set the interval in days. Athena records the next rotation time and rolls the password when it comes due.
-
Fleet rotation job — when a fleet rotation interval is configured
(
Agent:RustDeskRotationDaysgreater than0), Athena maintains a recurring scheduled job that runs daily and rotates every agent whose password is due. Setting the interval back to0removes that job.
A due agent is only rotated while it is online; agents that are offline when a rotation runs are picked up on a later run once they reconnect. Update a single agent's schedule with:
# Enable or disable per-agent rotation
PUT api/agents/{agentId}/rustdesk/rotation-schedule
Security & connection profile#
Under Settings → Agent → Remotes you also control the RustDesk security and behavior profile that Athena pushes to managed clients. These settings let you lock down what an incoming connection is allowed to do. Notable options and their defaults:
| Setting | Default | Notes |
|---|---|---|
| Access mode | custom | Base permission profile: custom, full, or view (view-only) |
| Approve mode | password-click | How incoming connections are approved: password, click, or password-click |
| Verification method | use-both-passwords | Permanent, temporary, or both passwords |
| Keyboard / mouse input | on | Allow the controlling side to send input |
| Clipboard sync | on | Share clipboard with the controlling side |
| File transfer | on | Allow file transfer during a session |
| Audio | on | Stream audio to the controlling side |
| Block input | on | Let the controller block the local user's input |
| Remote restart | on | Allow the controller to restart the machine |
| Direct IP access | off | Allow direct connections; when on, uses port 21118 (Agent:RustDeskDirectAccessPort) |
| IP whitelist | empty | Comma-separated allow-list; empty allows all |
| Auto-disconnect on inactivity | off | Timeout in minutes when enabled (default 10) |
| LAN discovery | on | Allow LAN peers to discover the device |
Changes to the security and general profile can be pushed to all agents that have RustDesk installed from the same settings screen, so the whole fleet stays on one consistent policy.
PowerShell#
The Athena PowerShell module exposes the per-agent RustDesk operations for scripting and bulk work:
| Cmdlet | What it does |
|---|---|
Get-AthenaRustDesk | Get an agent's credentials (-AgentId) or all of them (-All, Admin) |
Set-AthenaRustDeskPassword | Set a password (omit -Password to generate one); optionally -EnableRotation -RotationDays |
Update-AthenaRustDeskPassword | Rotate an agent's password now with a fresh random value |
Set-AthenaRustDeskRotation | Enable or disable per-agent rotation (-Enabled, -IntervalDays) |
# Set a generated password with 30-day auto-rotation on one agent
Set-AthenaRustDeskPassword -AgentId $agentId -EnableRotation -RotationDays 30
# Rotate the RustDesk password on every agent
Get-AthenaAgent | ForEach-Object { Update-AthenaRustDeskPassword -AgentId $_.Id }
The rotation interval accepts 1–365 days. Set-password and rotation require the Operator or Admin role; listing all credentials fleet-wide requires Admin.
RustDesk is an optional, third-party remote-access path. If you only need audited, consent-gated technician access with recording, prefer the built-in WebRTC screen-share; use RustDesk when you specifically want the standalone RustDesk client on your machines.