--- title: Déploiement Client weight: 400 pre: "2.4. " description: "Documentation RustDesk sur Déploiement Client. Consultez les guides d'installation, de configuration, de déploiement et de dépannage." keywords: ["rustdesk client deployment", "rustdesk powershell deploy", "rustdesk mass deployment", "rustdesk intune", "rustdesk rmm", "rustdesk silent deployment"] --- ## Réponse rapide Pour les déploiements à grande échelle, utilisez des scripts, des paquets MSI ou des outils RMM/MDM afin que RustDesk s’installe automatiquement avec la bonne configuration serveur. La meilleure méthode dépend surtout du système d’exploitation et de la pile d’administration déjà en place. ## Points clés - Le nom d’hôte du serveur ou l’adresse `ID Server` - La clé publique du serveur auto-hébergé - Un `API Server` facultatif pour la connexion Pro - Une chaîne de configuration ou une méthode de paquetage adaptée à votre outillage La méthode la plus simple est d'utiliser un client personnalisé, https://twitter.com/rustdesk/status/1788905463678951787. Vous pouvez déployer en utilisant plusieurs méthodes, dont certaines sont couvertes dans [Configuration Client](https://rustdesk.com/docs/en/self-host/client-configuration/). Alternativement, vous pouvez utiliser des scripts de déploiement de masse avec votre RMM, Intune, etc. L'ID et le mot de passe sont sortis par le script. Vous devriez collecter cela ou le diviser en différents scripts pour collecter l'ID et le mot de passe. Le mot de passe permanent peut être changé d'aléatoire à celui que vous préférez en modifiant le contenu entre `()` après `rustdesk_pw` vers votre mot de passe préféré pour PowerShell et la ligne correspondante pour toute autre plateforme. ## PowerShell ```powershell $ErrorActionPreference= 'silentlycontinue' # Assigner la valeur du mot de passe aléatoire à la variable mot de passe $rustdesk_pw=(-join ((65..90) + (97..122) | Get-Random -Count 12 | % {[char]$_})) # Obtenez votre chaîne de config depuis votre portail Web et remplissez ci-dessous $rustdesk_cfg="configstring" ################################## Veuillez ne pas modifier en dessous de cette ligne ######################################### # Exécuter en tant qu'administrateur et rester dans le répertoire courant 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; } } # Cette fonction retournera la dernière version et le lien de téléchargement comme un objet function getLatest() { $Page = Invoke-WebRequest -Uri 'https://github.com/rustdesk/rustdesk/releases/latest' -UseBasicParsing $HTML = New-Object -Com "HTMLFile" try { $HTML.IHTMLDocument2_write($Page.Content) } catch { $src = [System.Text.Encoding]::Unicode.GetBytes($Page.Content) $HTML.write($src) } # Lien d'exemple actuel : https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.exe $Downloadlink = ($HTML.Links | Where {$_.href -match '(.)+\/rustdesk\/rustdesk\/releases\/download\/\d{1}.\d{1,2}.\d{1,2}(.{0,3})\/rustdesk(.)+x86_64.exe'} | select -first 1).href # correction de bug - parfois vous devez remplacer "about:" $Downloadlink = $Downloadlink.Replace('about:', 'https://github.com') $Version = "unknown" if ($Downloadlink -match './rustdesk/rustdesk/releases/download/(?.*)/rustdesk-(.)+x86_64.exe') { $Version = $matches['content'] } if ($Version -eq "unknown" -or $Downloadlink -eq "") { Write-Output "ERREUR : Version ou lien de téléchargement non trouvé." Exit } # Créer un objet à retourner $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 est la version la plus récente." Exit } if (!(Test-Path C:\Temp)) { New-Item -ItemType Directory -Force -Path C:\Temp | Out-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 "Installation du service" cd $env:ProgramFiles\RustDesk Start-Process .\rustdesk.exe --install-service Start-Sleep -seconds 20 $arrService = Get-Service -Name $ServiceName } 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 "..............................................." # Afficher la valeur de la variable ID Write-Output "ID RustDesk : $rustdesk_id" # Afficher la valeur de la variable mot de passe Write-Output "Mot de passe : $rustdesk_pw" Write-Output "..............................................." ``` ## Windows batch/cmd ```bat @echo off REM Assigner la valeur du mot de passe aléatoire à la variable mot de passe 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 Obtenez votre chaîne de config depuis votre portail Web et remplissez ci-dessous set rustdesk_cfg="configstring" REM ############################### Veuillez ne pas modifier en dessous de cette ligne ######################################### if not exist C:\Temp\ md C:\Temp\ cd C:\Temp\ curl -L "https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-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 Afficher la valeur de la variable ID echo ID RustDesk : %rustdesk_id% REM Afficher la valeur de la variable mot de passe echo Mot de passe : %rustdesk_pw% echo ............................................... ``` ## MSI Vous pouvez aussi utiliser msi au lieu de `rustdesk.exe --silent-install`. https://rustdesk.com/docs/en/client/windows/msi/ ## macOS Bash ```sh #!/bin/bash # Assigner la valeur du mot de passe aléatoire à la variable mot de passe rustdesk_pw=$(openssl rand -hex 4) # Obtenez votre chaîne de config depuis votre portail Web et remplissez ci-dessous rustdesk_cfg="configstring" ################################## Veuillez ne pas modifier en dessous de cette ligne ######################################### # Demande de mot de passe root pour l'élévation de privilège [ "$UID" -eq 0 ] || exec sudo bash "$0" "$@" # Spécifier le point de montage pour le DMG (répertoire temporaire) mount_point="/Volumes/RustDesk" # Télécharger le fichier rustdesk.dmg echo "Téléchargement de RustDesk maintenant" if [[ $(arch) == 'arm64' ]]; then rd_link=$(curl -sL https://github.com/rustdesk/rustdesk/releases/latest | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*/\d{1}.\d{1,2}.\d{1,2}/rustdesk.\d{1}.\d{1,2}.\d{1,2}.aarch64.dmg") dmg_file=$(echo $rd_link | grep -Eo "rustdesk.\d{1}.\d{1,2}.\d{1,2}.aarch64.dmg") curl -L "$rd_link" --output "$dmg_file" else rd_link=$(curl -sL https://github.com/rustdesk/rustdesk/releases/latest | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*/\d{1}.\d{1,2}.\d{1,2}/rustdesk.\d{1}.\d{1,2}.\d{1,2}.x86_64.dmg") dmg_file=$(echo $rd_link | grep -Eo "rustdesk.\d{1}.\d{1,2}.\d{1,2}.x86_64.dmg") curl -L "$rd_link" --output "$dmg_file" fi # Monter le fichier DMG au point de montage spécifié hdiutil attach "$dmg_file" -mountpoint "$mount_point" &> /dev/null # Vérifier si le montage a réussi if [ $? -eq 0 ]; then # Déplacer le contenu du DMG monté vers le dossier /Applications cp -R "$mount_point/RustDesk.app" "/Applications/" &> /dev/null # Démonter le fichier DMG hdiutil detach "$mount_point" &> /dev/null else echo "Échec du montage du DMG RustDesk. Installation abandonnée." exit 1 fi # Exécuter la commande rustdesk avec --get-id et stocker la sortie dans la variable rustdesk_id cd /Applications/RustDesk.app/Contents/MacOS/ rustdesk_id=$(./RustDesk --get-id) # Appliquer le nouveau mot de passe à RustDesk ./RustDesk --server & /Applications/RustDesk.app/Contents/MacOS/RustDesk --password $rustdesk_pw &> /dev/null /Applications/RustDesk.app/Contents/MacOS/RustDesk --config $rustdesk_cfg # Tuer tous les processus nommés RustDesk rdpid=$(pgrep RustDesk) kill $rdpid &> /dev/null echo "..............................................." # Vérifier si rustdesk_id n'est pas vide if [ -n "$rustdesk_id" ]; then echo "ID RustDesk : $rustdesk_id" else echo "Échec de l'obtention de l'ID RustDesk." fi # Afficher la valeur de la variable mot de passe echo "Mot de passe : $rustdesk_pw" echo "..............................................." echo "Veuillez terminer l'installation sur GUI, lancement de RustDesk maintenant." open -n /Applications/RustDesk.app ``` ## Linux ```sh #!/bin/bash # Assigner une valeur aléatoire à la variable mot de passe rustdesk_pw=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1) # Obtenez votre chaîne de config depuis votre portail Web et remplissez ci-dessous rustdesk_cfg="configstring" ################################## Veuillez ne pas modifier en dessous de cette ligne ######################################### # Vérifier si le script est exécuté en tant que root if [[ $EUID -ne 0 ]]; then echo "Ce script doit être exécuté en tant que root." exit 1 fi # Identifier l'OS if [ -f /etc/os-release ]; then # freedesktop.org et systemd . /etc/os-release OS=$NAME VER=$VERSION_ID UPSTREAM_ID=${ID_LIKE,,} # Retomber sur ID_LIKE si ID n'était pas 'ubuntu' ou 'debian' if [ "${UPSTREAM_ID}" != "debian" ] && [ "${UPSTREAM_ID}" != "ubuntu" ]; then UPSTREAM_ID="$(echo ${ID_LIKE,,} | sed s/\"//g | cut -d' ' -f1)" fi elif type lsb_release >/dev/null 2>&1; then # linuxbase.org OS=$(lsb_release -si) VER=$(lsb_release -sr) elif [ -f /etc/lsb-release ]; then # Pour certaines versions de Debian/Ubuntu sans la commande lsb_release . /etc/lsb-release OS=$DISTRIB_ID VER=$DISTRIB_RELEASE elif [ -f /etc/debian_version ]; then # Debian plus ancien, Ubuntu, etc. OS=Debian VER=$(cat /etc/debian_version) elif [ -f /etc/SuSE-release ]; then # SuSE plus ancien etc. OS=SuSE VER=$(cat /etc/SuSE-release) elif [ -f /etc/redhat-release ]; then # Red Hat plus ancien, CentOS, etc. OS=RedHat VER=$(cat /etc/redhat-release) else # Retomber sur uname, par exemple "Linux ", fonctionne aussi pour BSD, etc. OS=$(uname -s) VER=$(uname -r) fi # Installer RustDesk echo "Installation de RustDesk" if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then wget https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.deb apt-get install -fy ./rustdesk-1.2.6-x86_64.deb > null elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "$OS" = "Fedora Linux" ] || [ "${UPSTREAM_ID}" = "rhel" ] || [ "$OS" = "Almalinux" ] || [ "$OS" = "Rocky*" ] ; then wget https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-0.x86_64.rpm yum localinstall ./rustdesk-1.2.6-0.x86_64.rpm -y > null else echo "OS non supporté" # ici vous pourriez demander à l'utilisateur la permission d'essayer d'installer quand même # s'il dit oui, alors faire l'installation # s'il dit non, quitter le script exit 1 fi # Exécuter la commande rustdesk avec --get-id et stocker la sortie dans la variable rustdesk_id rustdesk_id=$(rustdesk --get-id) # Appliquer le nouveau mot de passe à RustDesk rustdesk --password $rustdesk_pw &> /dev/null rustdesk --config $rustdesk_cfg systemctl restart rustdesk echo "..............................................." # Vérifier si rustdesk_id n'est pas vide if [ -n "$rustdesk_id" ]; then echo "ID RustDesk : $rustdesk_id" else echo "Échec de l'obtention de l'ID RustDesk." fi # Afficher la valeur de la variable mot de passe echo "Mot de passe : $rustdesk_pw" echo "..............................................." ``` ## Déploiement explicite des nouveaux appareils Par défaut, un client RustDesk est enregistré sur le serveur auto-hébergé lorsqu'il se connecte au serveur pour la première fois. En mode normal, aucune étape de déploiement supplémentaire n'est requise. Si vous activez **Paramètres → Autres → Exiger le déploiement pour les nouveaux appareils** dans la console web du serveur, les nouveaux appareils doivent être déployés explicitement avant de pouvoir s'enregistrer sur ce serveur. Créez un [jeton d'API](/docs/en/self-host/rustdesk-server-pro/console/#api-token) depuis la console web du serveur avec un compte administrateur. Le jeton doit avoir l'autorisation **Appareils** définie sur **Lecture et écriture**. Exécutez ensuite la commande de déploiement sur chaque nouvel appareil de bureau après avoir installé RustDesk et l'avoir configuré pour utiliser votre serveur auto-hébergé. ### Windows, macOS et Linux Sous Windows, exécutez l'invite de commandes ou PowerShell en tant qu'administrateur : ```bat rustdesk --deploy --token ``` Sous macOS et Linux, exécutez la commande avec `sudo` : ```sh sudo rustdesk --deploy --token ``` ### ID personnalisée facultative Pour déployer l'appareil avec un ID RustDesk spécifique, ajoutez `--id ` : ```sh rustdesk --deploy --token --id ``` Si l'ID est déjà utilisé par une autre machine, le déploiement échoue et RustDesk indique que l'ID est déjà pris. ### Android Android n'utilise pas le flux de déploiement en ligne de commande. Lorsque le serveur exige un déploiement et que le client Android n'est pas encore déployé, RustDesk affiche une invite **Deploy**. Appuyez sur **OK**, saisissez le jeton d'API dans la boîte de dialogue de déploiement et, si nécessaire, saisissez un ID personnalisé. Vous pouvez également ouvrir la même boîte de dialogue manuellement depuis **Paramètres → Deploy**. Une fois le déploiement réussi, l'appareil est ajouté à la liste des appareils du serveur et le client peut s'enregistrer normalement.