Comment configurer un serveur SFTP sous Windows avec OpenSSH
Ce guide s'applique à Windows Server 2019, 2022 et 2025, qui intègrent le serveur OpenSSH en tant que fonctionnalité optionnelle intégrée. Aucun téléchargement tiers n'est nécessaire.
Guide étape par étape
Installation de la fonctionnalité Serveur OpenSSH
1. Lancez PowerShell en tant qu'administrateur : Démarrer, tapez «PowerShell » → cliquez avec le bouton droit sur «PowerShell » → Exécuter en tant qu'administrateur.
2. Vérifiez si la fonctionnalité OpenSSH Server est déjà installée :
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' | Select-Object Name, State

La liste affiche à la fois OpenSSH.Client et OpenSSH.Server. Veillez à vérifier spécifiquement l’état d’OpenSSH.Server; le composant client est peut-être déjà installé et n’est pas concerné par ce guide.
Si OpenSSH.Server affiche l'état « NotPresent », installez-le :
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Windows installe la fonctionnalité intégrée « Serveur OpenSSH » dans le répertoire C:\Windows\System32\OpenSSH\. N’installez pas OpenSSH manuellement directement dans C:\Windows, car cela enfreint les conventions de répertoires de Windows et peut entraîner des problèmes d’autorisation.
3. Démarrez le service sshd et configurez-le pour qu’il démarre automatiquement :
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
4. Vérifiez que le service est en cours d'exécution :
Get-Service sshd

Le champ « Status » (État) doit indiquer « Running » (En cours d’exécution). Pour vérifier également que le type de démarrage est défini sur « Automatic » (Automatique) :
Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

5. Vérifiez l’emplacement du binaire OpenSSH installé et les informations de version :
Get-Command sshd | Select-Object Source (Get-Command sshd).FileVersionInfo

Le champ « Source » confirme que le chemin d’installation correspond à C:\Windows\System32\OpenSSH\sshd.exe ; « FileVersionInfo » indique la version d’OpenSSH (par exemple, OpenSSH_8.1p1, FileVersion 8.1.0.1 sous Windows Server 2022).
Ouverture du port du pare-feu
Par défaut, l’installation de la fonctionnalité « Serveur OpenSSH » crée généralement automatiquement une règle de pare-feu entrante nommée « OpenSSH-Server-In-TCP ». Vérifiez qu’elle existe et qu’elle est activée :
Get-NetFirewallRule -Name *OpenSSH-Server*

Si la règle est manquante, créez-la manuellement (notez que le nom de la règle est différent ; cette règle créée manuellement est distincte de la règle OpenSSH-Server-In-TCP générée automatiquement) :
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Vérifiez que le port est bien ouvert et à l'écoute :
Test-NetConnection -ComputerName localhost -Port 22

Un résultat « TcpTestSucceeded : True » confirme que le service est à l'écoute en local. Cela ne garantit pas que le pare-feu laisse passer le trafic provenant de l'extérieur. Pour vérifier cela de manière exhaustive, exécutez la même commande depuis une autre machine du réseau, en remplaçant « localhost » par l'adresse IP du serveur.
Configuration du fichier sshd_config pour SFTP
Le fichier de configuration se trouve à l’emplacement suivant :
C:\ProgramData\ssh\sshd_config
Ouvrez-le dans un éditeur de texte avec des droits d’administrateur (par exemple, le Bloc-notes exécuté en tant qu’administrateur) et vérifiez que les paramètres suivants sont présents (ou configurés selon vos besoins) :
Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

L'option« PasswordAuthentication yes » est indiquée ici par souci de simplicité dans ce guide, mais pour un serveur de production exposé à Internet, l'authentification par clé avec « PasswordAuthentication no » constitue le choix le plus sûr. Reportez-vous au paramètre facultatif « AuthorizedKeysFile » ci-dessous si vous prévoyez d'utiliser l'authentification par clé.
La ligne « Subsystem sftp » définit quel binaire gère les sessions SFTP. Si cette ligne n’est pas présente ou n’est pas décommentée, les connexions SSH fonctionneront, mais le transfert de fichiers SFTP échouera.
Par défaut, cette ligne est déjà présente et non commentée dans le fichier de configuration de la fonctionnalité intégrée. Si elle est manquante ou commentée avec #, ajoutez-la ou décommentez-la, puis enregistrez le fichier.
Les versions récentes d’OpenSSH prennent également en charge le sous-système `sftp internal-sftp`, un gestionnaire intégré qui n’appelle pas de binaire externe :
Subsystem sftp internal-sftp
sftp-server.exe et internal-sftp fonctionnent tous les deux ; ce guide utilise sftp-server.exe car c'est la valeur fournie par défaut.
Paramètres facultatifs que vous pouvez également ajouter dans sshd_config:
# Default value, already set; shown here for reference if key-based authentication isn't working # AuthorizedKeysFile .ssh/authorized_keys # Restrict access to specific users (optional) # AllowUsers username1 username2 # Logging SyslogFacility LOCAL0 LogLevel INFO
Pour les comptes membres du groupe Administrateurs local, le portage Windows d’OpenSSH utilise un fichier différent : C:\ProgramData\ssh\administrators_authorized_keys, et non .ssh\authorized_keys dans le profil de l’utilisateur. Si l'authentification par clé pour un compte administrateur ne fonctionne pas comme prévu, vérifiez plutôt ce fichier.
Après toute modification apportée au fichier sshd_config, redémarrez le service pour l'appliquer :
Restart-Service sshd
Vérification de la connexion SFTP à l’aide de WinSCP
Installez et lancez le client gratuit WinSCP. Dans la fenêtre des paramètres de connexion, sélectionnez le protocole de transfert de fichiers SFTP, saisissez le nom d’hôte ou l’adresse IP du serveur dans le champ « Nom d’hôte », laissez la valeur 22 dans le champ « Numéro de port » (sauf si vous avez configuré un autre port), puis saisissez les identifiants du compte Windows avec lequel vous vous connectez.

Si tout est correctement configuré, le client se connecte au serveur SFTP et affiche le contenu du répertoire personnel de l’utilisateur (le répertoire de profil par défaut). Par défaut, l’utilisateur accède à C:\Users\<nom d’utilisateur>. Les fichiers peuvent alors être transférés en toute sécurité entre le serveur et le client via le protocole SFTP.

Désinstallation de la fonctionnalité « Serveur OpenSSH »
1. Lancez PowerShell en tant qu’ administrateur.
2. Arrêtez le service sshd avant de supprimer la fonctionnalité ; la supprimer alors que le service est encore en cours d’exécution ou en cours d’utilisation peut entraîner un échec ou un blocage :
Stop-Service sshd
3. Supprimez la fonctionnalité :
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
4. (Facultatif) Supprimez la règle de pare-feu. Cela concerne à la fois la règle créée automatiquement et celle créée manuellement, si l’une ou l’autre existe :
Remove-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue Remove-NetFirewallRule -DisplayName 'OpenSSH Server (sshd)' -ErrorAction SilentlyContinue
5. (Facultatif) Suppression de la configuration : vous pouvez supprimer uniquement le fichier de configuration ou effectuer un nettoyage complet, y compris les clés d'hôte.
Pour supprimer uniquement le fichier sshd_config sans toucher aux clés d’hôte :
Remove-Item -Path 'C:\ProgramData\ssh\sshd_config' -Force
Pour un nettoyage complet, y compris les clés d'hôte, supprimez plutôt l'intégralité du dossier de configuration :
Remove-Item -Path 'C:\ProgramData\ssh' -Recurse -Force
La suppression de l'intégralité du dossier entraîne également la suppression définitive des clés hôtes du serveur. Les clients se connectant après la réinstallation considéreront le serveur comme un nouvel hôte SSH non reconnu. Ne procédez ainsi que si vous ne prévoyez pas de réinstaller OpenSSH Server avec la même configuration ultérieurement.