Comment configurer un serveur SFTP (SSH FTP) sous Windows

Configurer un serveur SFTP OpenSSH sous Windows peut s’avérer complexe, surtout lors d’une première utilisation. Vous pourriez rencontrer des difficultés, comme un service SSH qui ne démarre pas automatiquement, des règles de pare-feu mal configurées ou des fichiers de configuration incorrects. Heureusement, en suivant attentivement les étapes et en vérifiant soigneusement les paramètres, vous obtiendrez une configuration de transfert sécurisée bien plus performante que les outils tiers complexes. Cette configuration est très flexible et compatible avec toutes les versions de Windows, de Windows 10 (à partir de la version 1803 environ) à Windows Server 2022, avec quelques différences selon votre version. Au final, vous pourrez transférer des fichiers en toute sécurité via SSH sans divulguer vos mots de passe ni dépendre d’options FTP instables. Comme la plupart des utilisateurs, j’ai probablement opté pour cette solution afin d’améliorer la sécurité et de simplifier la gestion. Attention : selon votre version de Windows, certaines commandes ou certains chemins d’accès peuvent légèrement varier, mais le principe reste le même.

Comment configurer OpenSSH pour le SFTP sous Windows

Comment installer OpenSSH sous Windows

C’est là que Windows se complique : parfois OpenSSH est intégré, d’autres fois il faut l’installer manuellement. Sur les versions récentes de Windows 10 (comme la 1803 et suivantes), Windows 11 et Windows Server 2019/2022, OpenSSH est proposé comme option. Son installation se fait via PowerShell, car, bien sûr, Windows se doit de compliquer les choses inutilement.

  • Ouvrez PowerShell en tant qu’administrateur et exécutez :Add-WindowsCapability -Online -Name OpenSSH. Server*
  • Ou, si vous préférez la ligne de commande, utilisez :dism /Online /Add-Capability /CapabilityName:OpenSSH. Server~~~~0.0.1.0
  • En mode graphique, accédez à Paramètres > Applications > Fonctionnalités optionnelles > Ajouter une fonctionnalité, puis recherchez et installez OpenSSH Server.
  • Vérifiez s’il est installé avec :Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Une fois installés, les exécutables se trouvent généralement dans c:\windows\system32\OpenSSH\. Le fichier de configuration principal est sshd_config dans C:\ProgramData\ssh. Si ce dossier n’existe pas initialement, vous devrez d’abord démarrer le service sshd ; Windows crée le dossier dynamiquement.

Remarque : Sur certaines versions plus anciennes de Windows, comme la version 1809 ou Windows Server 2016, vous devrez télécharger Win32-OpenSSH depuis GitHub. Extrayez les fichiers dans un répertoire tel que `/var/log/openssh` C:\OpenSSH-Win, puis suivez les instructions d’installation, notamment l’ajout du dossier à votre variable d’environnement PATH.\install-sshd.ps1. Exécutez également la commande `powershell` depuis ce répertoire (utilisez `powershell` powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1si les scripts sont bloqués).Une fois l’installation terminée, activez le service :

 Set-Service -Name sshd -StartupType 'Automatic' Start-Service sshd 

Configuration du service SSH et du pare-feu

Il est essentiel de s’assurer que le programme démarre automatiquement et ouvre le port 22. Sous Windows récent, vous pouvez procéder comme suit :

 New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH 

Si cette commande ne fonctionne pas, probablement sur les versions plus anciennes ou dans certaines configurations d’entreprise, essayez ceci :

 netsh advfirewall firewall add rule name='SSH Port' dir=in action=allow protocol=TCP localport=22 

Cela ouvre le port 22 dans le pare-feu Windows Defender, afin que votre serveur SSH ne soit pas bloqué. Notez que si vous êtes derrière un pare-feu ou un routeur d’entreprise plus restrictif, vous devrez également ouvrir le port 22 à ce niveau.

Ajustement de sshd_config pour SFTP

Ouvrez le fichier de configuration dans un éditeur de texte, comme le Bloc-notes :

C:\ProgramData\ssh\sshd_config 

Recherchez la ligne sftp du sous-système. Elle devrait ressembler à ceci :

Subsystem sftp sftp-server.exe 

Si le code est commenté ou pointe vers un endroit incorrect, corrigez-le. Vous pouvez également ajuster d’autres options ici :

  • Configurez AllowGroups pour limiter les personnes autorisées à se connecter (utilisez votre domaine ou vos groupes locaux).Exemple :AllowGroups domain\sftpusers
  • Activez l’authentification par mot de passe avec :AuthenticationMethods password
  • Configurez le répertoire chroot de chaque utilisateur (où il arrive après la connexion) avec ChrootDirectory et ForceCommand internal-sftp. Par exemple :
Match User username ChrootDirectory C:\SFTP\username ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no 

Sur certaines configurations, il est utile de redémarrer le service sshd après les modifications :

Restart-Service sshd 

Connexion à votre serveur SFTP

Maintenant que tout est configuré, il est temps de se connecter. Vous pouvez utiliser des clients gratuits comme WinSCP, ou PowerShell avec des modules comme Posh-SSH. Avec WinSCP, il suffit de sélectionner le protocole SFTP, puis de saisir l’adresse IP ou le nom d’hôte de votre serveur, votre nom d’utilisateur et votre mot de passe ou clé SSH. Lors de la connexion, un avertissement peut s’afficher indiquant que la clé d’hôte n’est pas en cache ; acceptez-le si vous faites confiance au serveur (ou vérifiez l’empreinte manuellement).

Voici un court extrait de code PowerShell pour tester la connexion avec le module Posh-SSH :

 Install-Module -Name Posh-SSH $cred = Get-Credential $session = New-SFTPSession -ComputerName 192.168.1.100 -Credential $cred Get-SFTPChildItem -SFTPSession $session -Path / #...do stuff...Remove-SFTPSession -SFTPSession $session 

Si vous préférez utiliser la ligne de commande intégrée, ouvrez PowerShell et exécutez :

sftp username@server 

Vous pouvez aussi spécifier une clé privée SSH -i path\to\privatekeysi vous optez pour l’authentification par clé. C’est assez simple une fois qu’on a compris le principe.

Configuration de l’authentification par clé publique

Cette étape est un peu fastidieuse, mais elle en vaut vraiment la peine si vous souhaitez une connexion sans mot de passe. Vous créez des clés SSH localement ssh-keygen -t ed25519. Cela génère id_ed25519 (privée) et id_ed25519.pub (publique).

Copiez le fichier id_ed25519.pub sur le serveur SFTP, en le plaçant dans le répertoire de l’utilisateur C:\Users\username\.ssh\authorized_keys. Assurez-vous que les permissions sont correctes, car Windows est très strict si le fichier n’est pas accessible uniquement à l’utilisateur concerné.

Configurez ensuite votre client SSH (comme WinSCP ou PowerShell) pour utiliser cette clé privée. Dans WinSCP : accédez à Avancé > SSH > Authentification et sélectionnez le fichier de clé privée. Avec PowerShell, vous pouvez spécifier le fichier de clé comme dans l’exemple précédent.

Et oui, une fois la configuration terminée, vous vous connecterez sans avoir à saisir votre mot de passe à chaque fois. Je ne sais pas trop pourquoi ça marche, mais… ça marche, tout simplement.

Conclure

L’ensemble du processus peut paraître un peu complexe pour les débutants, mais une fois la configuration terminée, votre machine Windows peut devenir un serveur SFTP fiable et sécurisé. Veillez simplement à bien paramétrer le système : définir les permissions appropriées, ouvrir les ports et modifier correctement le fichier sshd_config. C’est ce qui garantit le succès de l’installation. Testez d’abord la connexion avec WinSCP ; si cela fonctionne, l’utilisation de PowerShell sera un jeu d’enfant. Configurer l’authentification par clé demande un peu plus d’efforts, mais le gain en termes de simplicité et de sécurité en vaut la peine.

Résumé

  • Installez OpenSSH via PowerShell ou l’interface graphique, selon votre version de Windows.
  • Activez et démarrez le service sshd, configurez-le pour qu’il démarre automatiquement.
  • Configurez les règles du pare-feu pour autoriser le port 22.
  • Ajustez sshd_config en fonction de vos préférences de sécurité et de répertoire.
  • Testez avec les modules WinSCP ou PowerShell.
  • Configurez des clés SSH pour une connexion sans mot de passe si vous le souhaitez.

Conclure

J’espère que ce guide vous donnera une bonne idée de la façon de transformer Windows en un serveur SFTP performant. Ce n’est pas parfait – Windows peut parfois se montrer capricieux concernant les permissions et les chemins de configuration – mais cette approche est bien meilleure que certaines solutions plus anciennes et moins pratiques. Une fois la configuration terminée, le transfert sécurisé de fichiers via SSH devient beaucoup plus simple et plus sûr. Croisons les doigts pour que cela aide certains à surmonter les difficultés initiales – configurer SSH sous Windows est suffisamment complexe pour qu’on s’y perde plusieurs fois.