La plupart des gens préfèrent des utilitaires comme FileZilla, WinSCP ou d’autres programmes FTP lorsqu’ils ont besoin de transférer des fichiers vers ou depuis des serveurs Linux. SFTP est une alternative sécurisée au protocole FTP d’origine. Il remplit principalement les mêmes fonctions que sa version non sécurisée, mais avec une couche de cryptage supplémentaire. Pour ce faire, il utilise le protocole SSH qui lui fournit des capacités de cryptage. La configuration d’un serveur SFTP sur votre système Linux implique plusieurs étapes, que nous présentons ici.
Qu’est-ce que SFTP ?
SFTP (Secure File Transfer Protocol) est un protocole réseau permettant de transférer des fichiers d’un client vers un serveur. Contrairement à FTP (File Transfer Protocol), SFTP utilise le protocole SSH (Secure Shell) pour crypter les données envoyées. Il a été développé par des informaticiens, Tatu Ylönen et Sami Lehtinen, également responsables du développement du protocole SSH dans les années 1990. Cependant, la version moderne est développée par l’IETF (Internet Engineering Task Force).
Il peut être décrit comme un protocole de système de fichiers distant, même si son nom suggère qu’il n’effectue que des opérations de transfert de fichiers. Lors de l’envoi d’un fichier à l’aide de SFTP d’un client à un serveur de réception, les données sont cryptées avant d’être envoyées à la destination. Si les données envoyées sont interceptées par un «man-in-the-middle», elles ne peuvent pas être facilement déchiffrées par ce tiers.
Installation de SSH et du serveur OpenSSH
Nous commençons le processus de configuration du serveur SFTP en installant SSH et le serveur OpenSSH.
La plupart des installations Linux ont déjà SSH installé par défaut, mais si votre système ne l’a pas, vous pouvez l’installer en utilisant l’Advanced Packaging Tool. apt
commander:
Après avoir installé SSH, vous pouvez vérifier sa version en exécutant le ssh
commande avec le -V
drapeau:
Vous pouvez installer le serveur OpenSSH sur les systèmes Debian et Ubuntu, par exemple, en utilisant le apt
commander:
sudo apt install openssh-server
Vous pouvez faire la même chose sur Arch Linux en utilisant le pacman
commander:
Création d’utilisateurs, de groupes et de répertoires pour SFTP
C’est une recommandation courante que les différents services sous Linux utilisent leurs propres utilisateurs, groupes et répertoires.
Commencez par créer un groupe pour les utilisateurs de SFTP. Ceci est accompli en utilisant le groupadd
commander:
Vous pouvez créer un utilisateur et l’ajouter au groupe qui a été créé en utilisant le useradd
commande et ses -g
drapeau, qui est utilisé pour spécifier le groupe dont l’utilisateur fera partie :
sudo useradd -g sftp_group sftp_user
Après avoir créé l’utilisateur, attribuez-lui un mot de passe à l’aide de la passwd
commander:
Créez le répertoire par défaut pour l’utilisateur nouvellement créé :
sudo mkdir -p /data/sftp_user/uploaded_files
Utilisez le chown
commande pour donner au répertoire les permissions nécessaires :
sudo chown -R root:sftp_group /data/sftp_user sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_files
Configuration du serveur SSH
La prochaine étape de configuration d’un serveur SFTP consiste à configurer le serveur SSH qu’il utilisera.
Modifiez le fichier « sshd_config » trouvé dans « /etc/ssh/ » afin que l’utilisateur utilise le shell SFTP lors de la connexion au serveur au lieu du shell SSH.
Vous pouvez facilement modifier le fichier à l’aide de l’éditeur Nano couramment utilisé sur de nombreuses installations Linux par défaut :
sudo nano /etc/ssh/sshd_config
Trouvez le bas du fichier et ajoutez ce qui suit :
Match Group sftp_group ChrootDirectory /data/%u ForceCommand internal-sftp
Redémarrez le service SSH :
sudo systemtl restart sshd
(Facultatif) Modification du port SFTP
Si vous souhaitez modifier le port utilisé par le serveur SFTP de la valeur par défaut de 22 à l’option choisie, vous devrez modifier à nouveau le fichier « sshd_config ».
Modifiez à nouveau le fichier à l’aide de l’éditeur Nano :
sudo nano /etc/ssh/sshd_config
Recherchez une ligne dans le fichier avec la valeur de port par défaut de 22 commentée :
Vous pouvez supprimer le signe dièse (#) utilisé pour commenter la ligne et ajouter votre choix de valeur de port. Dans mon cas, je change la valeur en 1111 :
Maintenant, enregistrez simplement le fichier
et redémarrez le serveur :
sudo systemctl restart sshd
Connexion et utilisation du serveur
Une fois le serveur installé et configuré, il est prêt à l’emploi. Vous pouvez facilement télécharger des fichiers et les télécharger, le tout avec une session cryptée fournie par SSH.
Avant de vous connecter, cela ne fera pas de mal de jeter un œil au manuel fourni :
Connectez-vous au serveur en fournissant le nom d’utilisateur et l’adresse IP ou le nom d’hôte du serveur au format suivant :
De plus, vous pouvez spécifier le port utilisé par votre serveur SFTP (la valeur par défaut est 22) en utilisant le -P
drapeau:
Lorsque vous vous connectez, vous êtes accueilli par un shell SFTP.
Afficher un manuel en tapant help
.
Téléchargement de fichiers
Pour télécharger un fichier :
get /path/to/file/on/server
Exemple:
Cela sera téléchargé dans votre répertoire actuel – celui dans lequel vous étiez localement avant de vous connecter au serveur. Pour télécharger dans un répertoire local spécifique :
get /path/to/file/on/server /path/to/local/folder
Pour copier des répertoires, vous devez ajouter le -r
paramètre, qui signifie récursif, à la commande.
get -r /bin /home/username/Desktop/bin
N’oubliez pas d’ajouter un nom pour le nouveau répertoire que vous souhaitez créer localement, comme « /home/username/Desktop/bin » dans ce cas. Si tu utilises get -r /bin /home/username/Desktop
, les fichiers seront copiés directement sur le Bureau. Notez que ce sont les fichiers qui sont copiés et non le répertoire lui-même.
Télécharger des fichiers
Le téléchargement de fichiers ou de répertoires suit les mêmes principes. La seule exception est que les chemins sont inversés, ce qui signifie que vous spécifiez d’abord le fichier/répertoire local, puis le chemin distant.
Pour commencer, téléchargez des fichiers sur le serveur en utilisant le put
commander:
put /path/to/local/content /path/to/remote/location
Lors du téléchargement de répertoires (récursif), rappelez-vous que la même règle de la section précédente s’applique : ce sont en fait les fichiers du répertoire qui sont copiés et non le répertoire lui-même. Spécifiez un nouveau nom pour un répertoire dans lequel vous souhaitez copier ces fichiers.
put -r /home/username/Desktop/bin bin
Cela crée un nouveau répertoire appelé « bin » du côté distant.
Reprendre les transferts et utiliser des chemins contenant des espaces
Lorsque vous transférez un fichier volumineux interrompu, vous pouvez reprendre en remplaçant la commande précédente par reput
et reget
. Assurez-vous simplement d’utiliser les mêmes chemins que vous avez utilisés la dernière fois afin que la source et la destination correspondent exactement.
reget /path/to/file/on/server /path/to/local/file reput /path/to/local/file /path/to/file/on/server
Pour reprendre les transferts de répertoire, ajoutez simplement le -r
paramètre:
reput -r /home/username/Desktop/bin bin
Si le chemin d’accès à un fichier contient des espaces, placez-le entre guillemets :
put "/home/username/My Documents/Files"
Autres utilisations
Vous pouvez lister les fichiers et les répertoires en utilisant le ls
commander:
Les autorisations des fichiers sont également modifiables à l’aide de la chmod
commander:
chmod <PERMISSION> <FILE>
De plus, vous pouvez créer un nouveau répertoire à l’aide de la commande mkdir :
Questions fréquemment posées
1. Dois-je installer un client SFTP ?
Dans la plupart des cas, non, car la plupart des systèmes Linux sont livrés avec un client SFTP basé sur un terminal installé par défaut.
2. Puis-je utiliser l’authentification par clé publique ?
Oui, vous pouvez utiliser l’authentification par clé publique au lieu d’un mot de passe comme méthode d’authentification. Sa configuration est assez simple et offre une sécurité supplémentaire à votre serveur.
3. Puis-je héberger simultanément un serveur SSH ?
Oui. Cependant, vous devrez vous assurer que votre serveur SFTP n’utilise pas le même port que le serveur SSH.