Mise en place d'un stockage SFTP sous Linux

Ce tutoriel a pour but de configurer le protocole SFTP sous Linux afin que des utilisateurs puissent y stocker des fichiers (tels que des sites web). SFTP est un protocole de transfert de fichiers similaire à FTP qui se base sur des connexions sécurisées via le protocole SSH.

1) Installer le paquet OpenSSH-Server (inclus par défaut dans les distributions récentes)

apt-get install openssh-server 

2) Editer le fichier de configuration du serveur SSH /etc/ssh/sshd_config :

nano /etc/ssh/sshd_config 

Y ajouter ces lignes :

allowGroups sftp     #(facultatif)Définit les groupes d'utilisateurs autorisés à se connecter en SSH (ici le groupe sftp)
Subsystem sftp internal-sftp
         Match group sftp     #Précise le groupe auquel s'appliqueront les réglages suivants
         ChrootDirectory /home/%u/     #Indique le répertoire personnel des utilisateurs (utiliser la variable //%u// pour automatiser le remplacement de chaque nom d'utilisateur)
         X11Forwarding no      #Désactiver l'affichage graphique via SSH
         AllowTcpForwarding no      #Désactiver l'ouverture de tunnels SSH (plus sécurisé)
         

Tout en supprimant (ou en commentant au début) celle-ci afin de ne pas perturber le service avec des réglages redondants :

Subsystem      sftp     /usr/lib/openssh/sftp-server 

3) Créer un groupe d'utilisateurs habilité à utiliser SFTP :

groupadd sftp

4) Créer les utilisateurs et leur dossier personnel en les attribuant au groupe précédemment créée

useradd jean -d /home/jean -g sftp 

5) Faire de root le propriètaire de chaque répertoire utilisateur :

chown root:root /home/jean 

On peut aussi utiliser %u pour automatiser la tâche avec plusieurs utilisateurs, mais avec prudence car il peut déja y avoir d'autres utilisateurs sur le système qui ont besoin d'être propriètaire de leur propre dossier.

6)Attribuer tous les droits à root uniquement, sur ce répertoire :

chmod 770 /home/jean 

7) Créer un dossier supplémentaire à l'intérieur de chaque répertoire utilisateur et lui donner la proprièté à root :

mkdir /home/jean/sftp
chown root:root /home/jean/sftp

8) Attribuer tous les droits à tous sur ce sous-dossier (en mode récursif):

chmod -R 777 /home/jean/sftp

Le sous-dossier créé à l'étape 7) sera accessible en écriture à l'utilisateur contrairement au répertoire racine, qui lui, ne sera accessible qu'en lecture seule (propriètaire root).

9) Relancer le service openssh-server :

service sshd restart 

C'est terminé, les utilisateurs peuvent maintenant utiliser le serveur SFTP pour stocker leurs données !

En cas d'erreur lors du lancement du service SSHD, vérifier la configuration et les permissions vues précédemment. Pour lancer le serveur en affichant les erreur à l'écran, faire :

/usr/sbin/sshd -ddd