
🔓 Comment obtenir les privilèges root dans WinSCP : configurer sudo pour les transferts de fichiers
Vous vous connectez à un serveur en tant qu’utilisateur standard, vous naviguez vers /etc/nginx et vous obtenez «Permission denied». Les fichiers de configuration, les répertoires système, les journaux: tout cela est inaccessible à un compte sans privilèges root. Et la connexion directe en root via SSH est désactivée sur la plupart des serveurs pour des raisons de sécurité.
WinSCP est un gestionnaire de fichiers pratique pour Windows, mais par défaut, sa session SFTP fonctionne avec les droits de l’utilisateur avec lequel vous vous êtes connecté. Le protocole SFTP ne peut pas demander une élévation de privilèges «à la volée» comme le fait un terminal: il n’est pas interactif pendant la négociation de connexion et ne peut pas afficher de fenêtre pour saisir un mot de passe sudo.
Voici quatre méthodes opérationnelles pour exécuter WinSCP avec des privilèges superutilisateur, de la plus simple à l’approche «Jedi». Chacune a été testée sur Ubuntu, Debian et CentOS. Choisissez celle qui correspond le mieux à votre infrastructure.
💡 Aperçu rapide:
- ➡️ Problème: WinSCP n’accorde pas les privilèges
rootpar défaut, même si l’utilisateur dispose desudo. - ✅ Méthode principale: Remplacer la commande de démarrage du serveur SFTP dans les paramètres de site de WinSCP. Rapide et ciblé.
- 🔄 Alternative: Basculer vers le protocole SCP avec
sudo su -comme shell. - ⚙️ Avancé: Modifier
sshd_configsur le serveur. Une solution globale pour toutes les connexions.
Étape 1: commande de démarrage du serveur SFTP (la méthode principale)
La manière la plus courante et la plus élégante d’obtenir les privilèges root dans WinSCP consiste à lui faire lancer le serveur SFTP en tant que superutilisateur dès le départ. Pour cela, il suffit de remplacer la commande de démarrage dans les paramètres d’une connexion spécifique. Le serveur lui-même n’a pas besoin d’être reconfiguré; la solution fonctionne connexion par connexion.

Instructions pas à pas:
- Lancez WinSCP et ouvrez le Gestionnaire de sites.
- Sélectionnez la connexion souhaitée et cliquez sur Modifier.
- Cliquez sur Avancé… en bas de la fenêtre.
- Dans le menu de gauche, allez dans Environnement → SFTP.
- Dans le champ «Serveur SFTP», remplacez «Par défaut» par la commande suivante:
1 sudo /usr/lib/openssh/sftp-server
Pour les distributions plus anciennes, le chemin peut différer. Emplacements typiques de sftp-server:
Distribution | Chemin vers sftp-server |
|---|---|
Ubuntu / Debian (actuel) |
|
Ubuntu / Debian (ancien) |
|
CentOS / RHEL / Fedora |
|
Amazon Linux |
|
Vous pouvez vérifier le chemin exact sur votre serveur via le terminal: cat /etc/ssh/sshd_config | grep Subsystem. Cette commande indique quel binaire le serveur SSH utilise lui-même.
Le système lancera le sous-système de transfert de fichiers avec les privilèges root immédiatement. Cependant, pour que cela fonctionne sans erreur, votre utilisateur doit pouvoir exécuter sudo sans demande de mot de passe. Ce point est traité à l’étape suivante.
Étape 2: configuration de sudoers (autoriser sudo sans mot de passe)
La négociation de connexion SFTP n’étant pas interactive, WinSCP n’a aucun moyen d’afficher une fenêtre pour saisir un mot de passe sudo. Le serveur mettra simplement fin à la connexion avec une erreur si un mot de passe est demandé. La solution consiste à accorder à l’utilisateur l’autorisation d’exécuter la commande requise sans mot de passe via le fichier /etc/sudoers.

Ce qu’il faut faire:
- Connectez-vous au serveur via SSH (en utilisant PuTTY ou le terminal intégré de WinSCP).
- Ouvrez l’éditeur sudoers avec
sudo visudo. Ne modifiez jamais/etc/sudoersdirectement: une erreur de syntaxe bloquerasudopour tout le système, etvisudovalide la syntaxe avant de sauvegarder. - Ajoutez la ligne suivante à la fin du fichier (remplacez
usernamepar votre identifiant):
1 username ALL=(ALL) NOPASSWD: ALL
Cela accorde à l’utilisateur un accès complet sans mot de passe. Une option plus sécurisée consiste à restreindre l’autorisation à la seule commande de démarrage du serveur SFTP:
1 username ALL=NOPASSWD: /usr/lib/openssh/sftp-server
Si le serveur compte plusieurs administrateurs avec des identifiants différents, une configuration restrictive réduit le risque: même si un compte est compromis, l’attaquant n’obtiendra pas un accès root à tout, seulement la possibilité de lancer SFTP.
Remarque: l’option requiretty dans sudoers doit être désactivée. Les implémentations modernes de sudo-rs ne la prennent pas en charge par défaut, mais sur les serveurs plus anciens, vérifiez et commentez la ligne Defaults requiretty si elle existe.
Étape 3: basculement vers le protocole SCP (une alternative rapide)
Si vous ne voulez pas gérer les chemins vers sftp-server, vous pouvez changer le protocole de transfert de données lui-même. WinSCP prend en charge SCP, un protocole plus ancien mais fiable qui récupère plus facilement les paramètres du shell.

Comment basculer:
- Dans les paramètres de session WinSCP, changez Protocole de fichier de SFTP à SCP.
- Allez dans Avancé → SCP/Shell.
- Dans le champ Shell, saisissez:
sudo su -
Lors de la connexion, WinSCP exécutera cette commande immédiatement après la connexion et fera basculer la session en mode root.
| SFTP | SCP |
|---|---|---|
Privilèges root | En remplaçant le binaire du serveur | En remplaçant le shell ( |
Vitesse | Plus élevée, surtout avec de nombreux petits fichiers | Plus faible |
Reprise après déconnexion | Oui | Non |
Fiabilité sur les anciens systèmes | Nécessite le chemin exact du binaire | Fonctionne «clé en main» |
Sécurité | NOPASSWD peut être limité à une commande | Nécessite un sudo complet sans mot de passe |
La méthode SCP est un compromis. Elle est plus facile à configurer mais perd face à SFTP en termes de vitesse et de capacité de récupération après une déconnexion. Pour des modifications ponctuelles de configuration, la différence est négligeable. Pour transférer régulièrement des centaines de fichiers, il est préférable de configurer la méthode SFTP.
Étape 4: configuration globale de sshd_config (pour les utilisateurs avancés)
Cette méthode s’adresse aux administrateurs qui souhaitent configurer le comportement du serveur SSH de manière centralisée. L’idée: remplacer la ligne Subsystem sftp dans /etc/ssh/sshd_config par une construction logique qui détermine automatiquement si l’utilisateur peut exécuter sudo sans mot de passe et lance SFTP avec les privilèges appropriés.
Ce qu’il faut modifier:
Ancienne ligne (généralement):
1 Subsystem sftp /usr/lib/openssh/sftp-server
Nouvelle ligne:
1 Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
Comment cela fonctionne:
sudo -n truevérifie si l’utilisateur peut exécutersudosans mot de passe (l’option-nsignifie non interactif).- Si oui (
&&), le serveur est lancé avec les privilègesroot. - Si non (
||), le serveur est lancé avec les privilèges de l’utilisateur standard.
Après modification, redémarrez le service SSH: sudo systemctl restart sshd.
Important: une erreur de syntaxe dans ce fichier vous bloquera complètement l’accès au serveur via SSH. Avant de modifier, assurez-vous d’avoir un second terminal avec une session active. En cas de problème, vous pourrez annuler les modifications. Faites également une sauvegarde: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.
Spécificités des serveurs cloud (AWS EC2, DigitalOcean)
Les images Linux cloud ont souvent des paramètres sudoers préconfigurés qui peuvent soit simplifier, soit compliquer la tâche.

AWS EC2 (Ubuntu):
L’utilisateur ubuntu sur les images Ubuntu 18.04 et plus récentes dispose souvent déjà des autorisations nécessaires. Vérifiez le fichier /etc/sudoers.d/90-cloud-init-users, qui peut déjà contenir la ligne:
1 ubuntu ALL=(ALL) NOPASSWD:ALL
Si elle est présente, vous pouvez sauter l’étape 2. Dans les paramètres WinSCP, utilisez la commande sudo /usr/lib/openssh/sftp-server.
AWS EC2 (Amazon Linux):
Sur Amazon Linux, le chemin vers sftp-server est différent: /usr/libexec/openssh/sftp-server. Une simple erreur de frappe (lib au lieu de libexec) entraînera le code d’erreur 127 (Command not found) et une déconnexion immédiate.
DigitalOcean (Droplets Ubuntu):
Sur les droplets DigitalOcean standard, l’utilisateur root est activé par défaut mais l’accès se fait uniquement par clé SSH. Si vous avez créé un utilisateur séparé, la configuration sudoers est la même que pour un Ubuntu classique.
Conseil général pour le cloud: avant de saisir un chemin dans WinSCP, vérifiez que le fichier existe sur le serveur: ls -la /usr/lib/openssh/sftp-server (ou l’équivalent pour votre distribution).
⁉️🤔 Foire aux questions
Dois-je activer la connexion directe en root pour que WinSCP fonctionne avec sudo?
Non. Tout l’intérêt des méthodes décrites est d’utiliser un compte standard et d’élever temporairement les privilèges via
sudo. La connexion directe enroot(PermitRootLogin yes) est considérée comme une mauvaise pratique de sécurité: les journaux ne montreront pas quel administrateur a réellement effectué une action.
Pourquoi WinSCP affiche-t-il une erreur «Command not found» après la configuration?
Très probablement, le chemin vers
sftp-serverest incorrect. Selon les distributions, il se trouve dans/usr/lib/,/usr/lib/openssh/ou/usr/libexec/openssh/. Le chemin exact peut être vérifié avec la commandecat /etc/ssh/sshd_config | grep Subsystemsur le serveur.
Quel est le niveau de sécurité de NOPASSWD dans sudoers?
C’est un compromis. Un accès complet avec
ALL=(ALL) NOPASSWD:ALLréduit la protection: si un attaquant obtient l’accès à l’utilisateur, il obtient égalementroot. Restreindre à une commande spécifique (/usr/lib/openssh/sftp-server) est nettement plus sûr: une personne extérieure ne pourra rien exécuter d’autre que le serveur SFTP via ce compte.
Cela fonctionne-t-il avec d’autres clients comme FileZilla ou Cyberduck?
Le principe est le même, mais la configuration diffère. FileZilla ne dispose pas d’un champ pratique pour la commande du serveur SFTP dans son interface graphique; il faut modifier le fichier de configuration. Cyberduck prend en charge l’option «Serveur SFTP» dans les paramètres de connexion, de manière similaire à WinSCP. WinSCP l’emporte en termes de commodité dans ce scénario précis.
Que faire si les fichiers sont visibles mais non modifiables?
Vérifiez le propriétaire et les permissions avec
ls -lasur le serveur. Si vous avez configuré le serveur SFTP viasudomais que la connexion est retombée sur les permissions standard, cela signifie quesudoa demandé un mot de passe et n’a pas reçu de réponse. Revérifiez la configuration NOPASSWD de l’étape 2.
Puis-je simplement changer le propriétaire des fichiers système pour mon utilisateur?
C’est une solution de contournement «sale». Les services système s’attendent à ce que leurs configurations appartiennent à
root. Changer le propriétaire (chown) ou les permissions (chmod) sur les fichiers système peut casser des services. Il est préférable de passer cinq minutes à configurer sudo et de faire les choses correctement.
Quelle est la différence entre SCP et SFTP dans le contexte de sudo?
SCP est simplement une copie sur SSH: il récupère plus facilement le shell, donc pour lui la commande
sudo su -dans le champ Shell est suffisante. SFTP est un sous-système à part entière qui s’exécute comme un processus séparé: il nécessite l’astuce du remplacement du binaire. SFTP est plus rapide et plus riche en fonctionnalités; SCP est plus facile à configurer.
Les actions sont-elles visibles dans les journaux lors de l’utilisation de sudo via WinSCP?
Oui. Dans
/var/log/auth.log, il y aura une entrée indiquant que l’utilisateurusernamea élevé ses privilèges viasudo. C’est un avantage: s’il y a plusieurs administrateurs, les journaux montrent exactement qui a effectué l’opération. Avec une connexion directe enroot, cette transparence n’existe pas.
Que faire si sudo nécessite un TTY mais que WinSCP n’en fournit pas?
Vérifiez la présence de l’option
Defaults requirettydans/etc/sudoers. Si elle existe, commentez-la (ajoutez#au début de la ligne) ou désactivez-la pour un utilisateur spécifique:Defaults:username !requiretty. Les implémentations modernes desudo-rsne prennent pas en charge cette option; le problème ne concerne que les serveurs plus anciens.
Puis-je exécuter SFTP en tant qu’utilisateur différent au lieu de root?
Oui. La commande
sudo -u www-data /usr/lib/openssh/sftp-serverlancera la session en tant quewww-data. C’est pratique lorsque vous devez modifier des fichiers de site web sans toucher aux répertoires système. Les autorisations sudoers pour cela doivent inclure l’option-u:username ALL=(www-data) NOPASSWD: /usr/lib/openssh/sftp-server.
Verdict final: quelle méthode choisir
Pour le travail quotidien sur serveur, la première méthode est optimale: remplacer la commande du serveur SFTP combiné à une configuration NOPASSWD restreinte au seul sftp-server. C’est sécurisé, cela n’affecte pas les paramètres globaux et fonctionne sur toutes les distributions modernes.
- Si vous avez Ubuntu / Debian et êtes prêt à consacrer 5 minutes à la configuration, utilisez Étape 1 + Étape 2 et ne revenez plus jamais sur le sujet.
- Si le serveur est ancien et que le chemin vers
sftp-serverest introuvable, basculez vers SCP (Étape 3): cela tolère les imprécisions et fonctionne pratiquement partout. - Si vous administrez une douzaine de serveurs et souhaitez un standard unifié, configurez sshd_config (Étape 4) une fois via Ansible ou manuellement, mais impérativement avec une sauvegarde.
Commencez par une vérification: connectez-vous au serveur via SSH et exécutez cat /etc/ssh/sshd_config | grep Subsystem. En une minute, vous connaîtrez le chemin exact, et la première méthode fonctionnera du premier coup. Quelle méthode de transfert de fichiers utilisez-vous? Partagez dans les commentaires.



