Comment créer un utilisateur SFTP sur mon instance Lightsail ?

Date de la dernière mise à jour : 14/10/2021

Je souhaite créer un utilisateur SFTP sur mon instance Amazon Lightsail. Comment procéder ?

Solution

Remarque : Les étapes suivantes créent un utilisateur SFTP qui a accès à l'environnement chroot (chroot jail) sans accès SSH. L'utilisateur SFTP ne peut pas accéder aux répertoires en dehors de l'environnement ou du répertoire chroot. Ainsi, le répertoire chroot devient le répertoire racine de l'utilisateur.

1.    Créez un groupe pour les utilisateurs SFTP. Le groupe permet de gérer de nombreux utilisateurs SFTP différents. Dans cet exemple, le nom du groupe est sftp_group. Vous pouvez modifier le nom par un nom de groupe de votre choix.

sudo groupadd sftp_group

2.    Créez un utilisateur sur l'instance avec un répertoire de base. Cet utilisateur effectue uniquement des tâches SFTP et ne dispose pas d'un shell de connexion SSH. Dans l'exemple précédent, remplacez utilisateur_ftp par le nom d'utilisateur de votre choix.

sudo useradd -g sftp_group -m -d  /home/sftp_user -s /sbin/nologin sftp_user

3.    L'utilisateur peut s'authentifier de différentes manières lorsqu'il se connecte au serveur via SFTP. L'exemple suivant utilise un mot de passe et une authentification basée sur une clé SSH.

Authentification par mot de passe

Pour exiger l'authentification par mot de passe, créez un mot de passe à l'aide de la commande suivante :

sudo passwd sftp_user

Authentification par clé SSH

Si vous utilisez l'authentification par clé SSH, vous devez créer les fichiers SSH pour l'utilisateur, puis ajouter la clé publique aux fichiers. Pour ce faire :

Dans le répertoire personnel de l'utilisateur, créez un dossier .ssh et un fichier authorized_keys :

sudo mkdir /home/sftp_user/.ssh
sudo touch /home/sftp_user/.ssh/authorized_keys

Ajoutez la clé publique SSH que vous souhaitez utiliser dans le fichier /home/sftp_user/.ssh/authorized_keys. Pour plus d'informations, consultez Configurer SSH pour vos instances Lightsail Linux/Unix.

Exécutez les commandes suivantes pour modifier la propriété et les autorisations du répertoire de base de l'utilisateur :

sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -R
sudo chown root:sftp_group /home/sftp_user/
sudo chmod 755 /home/sftp_user/ 
sudo chmod 700 /home/sftp_user/.ssh/
sudo chmod 600 /home/sftp_user/.ssh/authorized_keys

L'exemple précédent utilise l'autorisation 755 sur le répertoire /home/sftp_user et modifie la propriété de l'utilisateur racine. La raison est que le répertoire va être utilisé comme répertoire de chroot. N'oubliez pas que tous les composants du chemin d'accès doivent être des répertoires appartenant à la racine et qui ne sont accessibles en écriture par aucun autre utilisateur ou groupe.

4.    Modifiez le fichier /etc/ssh/sshd_config en procédant comme suit :

Modifiez la ligne Subsystem sftp en mettant en commentaire la ligne Subsystem sftp /usr/libexec/openssh/sftp-server :

# Subsystem sftp /usr/libexec/openssh/sftp-server

Remplacez la ligne précédente par :

Subsystem sftp internal-sftp

Ajoutez des directives pour limiter l'accès des utilisateurs SFTP. Ces directives doivent être ajoutées en bas du fichier :

Match Group sftp_group
ChrootDirectory /home/%u
ForceCommand internal-sftp

Dans l'exemple précédent, la directive ChrootDirectory est utilisée pour spécifier le répertoire racine des utilisateurs SFTP (chroot jail). Bloquez par Match la condition : l'utilisateur appartenant au groupe sftp_group utilise le chemin /home/%u comme répertoire racine. Les caractères %u représentent l'utilisateur. Vous pouvez modifier le répertoire racine de votre utilisateur.

La directiveForceCommand internal-sftp force l'utilisation d'un serveur SFTP en cours de processus.

Si vous utilisez l'authentification par mot de passe, recherchez la directive PasswordAuthentication dans le fichier /etc/ssh/sshd_config et assurez-vous qu'elle est définie sur yes.

5.    Créez les répertoires chroot à utiliser par l'utilisateur. Remplacez les noms de répertoire sftp_user et uploads par vos noms préférés.

sudo mkdir /home/sftp_user/uploads

Modifiez la propriété des fichiers :

sudo chown sftp_user:sftp_group /home/sftp_user/uploads

6.    Vérifiez que les autorisations de répertoire sont celles indiquées dans l'exemple suivant :

ls -ld /home
drwxr-xr-x 3 root root 23 Oct  6 15:17 /home

ls -ld /home/sftp_user
drwxr-xr-x 3 root sftp_group 21 Oct  6 15:17 /home/sftp_user

ls -ld /home/sftp_user/uploads/
drwxr-xr-x 2 sftp_user sftp_group 6 Oct  6 15:17 /home/sftp_user/uploads/

7.    Redémarrez le service sshd :

sudo systemctl restart sshd

8.    Connectez-vous à l'instance en utilisant sftp :

Authentification par mot de passe

# sftp sftp_user@example.com
sftp_user@example.com's password:

Authentification par clé SSH

# sftp -i key.pem sftp_user@example.com

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?