SFTP Linux · 6 min read · Sep 24, 2025

Comment installer et utiliser SFTP sur les serveurs Linux

SFTP ou SSH File Transfer Protocol est une méthode pour transférer des données de manière sécurisée entre deux ordinateurs et plus. C’est FTP qui fonctionne sur le protocole SSH et tire parti de sa sécurité, et prend entièrement en charge son authentification.

Aujourd’hui, il est recommandé d’utiliser SFTP au lieu du protocole FTP ou FTP/S hérité. SFTP est sécurisé par défaut car c’est ainsi que fonctionne SSH. D’un point de vue sécurité, SFTP vous protège également contre l’écoute de mots de passe et les attaques de type homme du milieu (MiTM).

Tout comme SSH, SFTP protège l’intégrité des données en utilisant le chiffrement et une fonction de hachage cryptographique. Il prend également en charge plusieurs méthodes d’authentification sécurisées, y compris l’authentification par mot de passe et par clé. De plus, il réduit le port ouvert du serveur vers le réseau extérieur car il fonctionne sur le même port que le protocole SSH.

Prérequis

Dans ce guide, vous apprendrez à configurer un serveur SFTP sur un système Linux. Vous apprendrez également la commande de base du client sftp.

Voici l’environnement actuel pour l’implémentation :

  • Un serveur Linux - vous pouvez utiliser Debian, Ubuntu, CentOS, Fedora, Rocky ou toute autre distribution Linux.
  • Assurez-vous que les paquets OpenSSH sont disponibles sur votre système Linux.
  • Client SFTP - commande sftp en ligne de commande ou tout client GUI selon votre préférence.

Vérifier les paquets OpenSSH

Pour configurer un serveur SFTP, les paquets OpenSSH doivent être installés sur votre système Linux. Presque tous les serveurs de distribution Linux ont les paquets OpenSSH installés par défaut. Mais, au cas où vous n’auriez pas le paquet OpenSSH sur votre système, vous pouvez l’installer depuis le dépôt officiel.

  1. Pour vous assurer que les paquets OpenSSH sont installés sur votre système Linux, utilisez la commande suivante.

Pour les serveurs Debian ou Ubuntu, vous pouvez utiliser la commande dpkg ci-dessous.

dpkg -l | grep ssh

Voici la sortie de notre système Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        Bibliothèque côté client SSH2  
ii  openssh-client                1:8.4p1-5                      amd64        client de shell sécurisé (SSH), pour un accès sécurisé aux machines distantes  
ii  openssh-server                1:8.4p1-5                      amd64        serveur de shell sécurisé (SSH), pour un accès sécurisé depuis des machines distantes  
ii  openssh-sftp-server           1:8.4p1-5                      amd64        module serveur sftp de shell sécurisé (SSH), pour un accès SFTP depuis des machines distantes

La première colonne ‘ ii ‘ signifie que le paquet est installé. Le paquet ‘ openssh-sftp-server ‘ est installé sur le système Debian/Ubuntu.

Vous pouvez utiliser la commande rpm ci-dessous pour les utilisateurs RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux.

rpm -qa | grep ssh

Créer un groupe et un utilisateur

À cette étape, vous allez créer un nouveau groupe et un utilisateur pour le serveur SFTP. Les utilisateurs de ce groupe seront autorisés à accéder au serveur SFTP. Pour des raisons de sécurité, les utilisateurs SFTP ne peuvent pas accéder au service SSH ; ils ne peuvent accéder qu’au serveur SFTP.

  1. Exécutez la commande suivante pour créer un nouveau groupe ‘ sftpgroup ‘.
sudo groupadd sftpgroup
  1. Créez un nouvel utilisateur ‘ sftpuser ‘ en utilisant la commande suivante.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Options détaillées :

  • -G : ajoute automatiquement l’utilisateur au groupe ‘ sftpgroup ‘.
  • -d : spécifie le répertoire personnel pour le nouvel utilisateur.
  • -s : définit la valeur par défaut pour le nouvel utilisateur sur ‘ /sbin/nologin ‘, ce qui signifie que l’utilisateur ne peut pas accéder au serveur SSH.
  1. Ensuite, créez le mot de passe pour l’utilisateur ‘ sftpuser ‘ en utilisant la commande ci-dessous.
passwd sftpuser

Tapez votre mot de passe fort et répétez, puis appuyez sur ‘ Entrée ‘ pour confirmer.

Ajouter un utilisateur et un groupe sftpserver

Pour ajouter plus d’utilisateurs, répétez les étapes numéro 2 et 3, et surtout, tous les utilisateurs SFTP doivent être dans le groupe ‘ sftpgroup ‘ sans accès shell via SSH.

Configurer le répertoire Chroot Jail

Après avoir créé un nouveau groupe et un utilisateur, vous devez créer et configurer le répertoire chroot pour les utilisateurs SFTP.

  1. Pour l’utilisateur ‘sftpuser’, le nouveau répertoire personnel sera à ‘/srv/sftpuser‘. Exécutez la commande ci-dessous pour le créer.
mkdir -p /srv/sftpuser
  1. Pour configurer chroot pour l’utilisateur ‘ sftpuser ‘, vous devez changer la propriété du répertoire à l’utilisateur root, mais laisser le groupe pour lire et exécuter sans accès en écriture.

Changez la propriété du répertoire à l’utilisateur ‘root’ en utilisant la commande suivante.

sudo chown root /srv/sftpuser

Donnez au groupe la permission de lire et d’exécuter, mais pas d’écrire.

sudo chmod g+rx /srv/sftpuser
  1. Ensuite, créez un nouveau répertoire ‘data’ à l’intérieur du répertoire ‘ /srv/sftpuser ‘ et changez la propriété de ce répertoire ‘ data ‘ à l’utilisateur ‘ sftpuser ‘.
mkdir -p /srv/sftpuser/data  
chown sftpuser:sftpuser /srv/sftpuser/data

Configurer le répertoire chroot jail pour sftpuser

Jusqu’à présent, voici les détails de la configuration pour le répertoire utilisateur SFTP.

  • Le répertoire ‘ /srv/sftpuser ‘ est le répertoire personnel par défaut.
  • L’utilisateur ‘ sftpuserne peut pas écrire dans le répertoire ‘ /srv/sftpuser ‘, mais peut lire à l’intérieur de ce répertoire.
  • L’utilisateur ‘ sftpuser ‘ peut télécharger des fichiers sur le serveur SFTP dans le répertoire ‘ /srv/sftpuser/data ‘.

Activer SFTP sur le serveur SSH

Pour activer le serveur SFTP sur l’OpenSSH, vous devez modifier la configuration SSH ‘/etc/ssh/sshd_config’.

  1. Modifiez la configuration ssh ‘ /etc/ssh/sshd_config ‘ en utilisant nano ou vim.
sudo nano /etc/ssh/sshd_config
  1. Commentez la configuration suivante pour désactiver la fonctionnalité autonome ‘ sftp-server ‘.
#Subsystem      sftp    /usr/lib/openssh/sftp-server
  1. Collez la configuration suivante en bas de la ligne.
Subsystem sftp internal-sftp  
  
Match Group sftpgroup  
     ChrootDirectory %h  
     X11Forwarding no  
     AllowTCPForwarding no  
     ForceCommand internal-sftp

Enregistrez la configuration et quittez.

Configuration détaillée :

  • Au lieu d’utiliser le sous-processus ‘ sftp-server ‘, nous utilisons ‘ internal-sftp ‘.
  • Le serveur SFTP est activé pour le groupe ‘ sftpgroup ‘.
  1. Pour appliquer une nouvelle configuration, redémarrez le service ssh en utilisant la commande ci-dessous.
sudo systemctl restart sshd

Le serveur SFTP est prêt et accessible, et il fonctionne sur le même port que le service SSH.

Accéder au serveur SFTP

Du côté client, nous utiliserons la ligne de commande sftp, qui est installée par défaut sur la plupart des distributions Linux. Mais, vous pouvez également utiliser un autre client en ligne de commande ou un client FTP GUI tel que FileZilla, Cyberduck, etc.

  1. Pour vous connecter au serveur SFTP, exécutez la commande sftp comme ci-dessous.
sftp ftpuser@SERVER-IP

Si votre serveur SFTP et/ou SSH fonctionne sur un port personnalisé, vous pouvez utiliser la commande sftp comme ci-dessous.

sftp -P PORT ftpuser@SERVER-IP

Tapez le mot de passe pour l’ ‘ sftpuser ‘.

  1. Une fois connecté au serveur SFTP, exécutez la commande suivante.

Afficher le chemin actuel du répertoire de travail et lister tous les fichiers et répertoires disponibles.

pwd  
ls

Se connecter au serveur sftp avec la commande sftp

  1. Téléchargez un fichier local sur le serveur SFTP dans le répertoire ‘/ ‘, ce qui entraînera ‘ permission denied ‘, car c’est le répertoire chroot.
put /path/to/file/on/local /
  1. Téléchargez un fichier local dans le répertoire ‘ /data/ ‘ sur le serveur SFTP. Si votre configuration est correcte, votre fichier sera téléchargé dans le répertoire ‘ /data/ ‘.
put /path/to/file1/on/local1 /data/  
put /path/to/file2/on/local /data/

Vérifier la lecture et l'écriture sur le serveur sftp

  1. Maintenant, vérifiez les fichiers disponibles dans le répertoire ‘ /data ‘ en utilisant la commande suivante.
ls /data/

Et vous verrez votre fichier téléchargé sur le serveur SFTP.

Conclusion

Félicitations ! Vous avez configuré avec succès le serveur SFTP sur le système Linux. Ce type de configuration peut être appliqué sur la plupart des systèmes Linux avec OpenSSH installé dessus. De plus, vous avez appris à configurer le répertoire chroot pour les utilisateurs SFTP et appris la commande de base du client sftp.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.