GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer et utiliser SFTP sur des serveurs Linux

Le protocole de transfert de fichiers SFTP ou SSH est une méthode de transfert sécurisé de données entre deux ordinateurs et plus encore. C'est FTP qui s'exécute au-dessus du protocole SSH et tire parti de sa sécurité et prend entièrement en charge son authentification.

De nos jours, il est recommandé d'utiliser SFTP au lieu de l'ancien protocole FTP ou FTP/S. SFTP est sécurisé par défaut car c'est ainsi que SSH fonctionne. Du point de vue de la sécurité, SFTP vous protège également contre le reniflage de mot de passe et l'attaque de l'homme du milieu (MiTM).

Tout comme SSH, SFTP protège également l'intégrité de vos données en utilisant la fonction de cryptage et de hachage cryptographique. En outre, il prend en charge plusieurs méthodes d'authentification sécurisées, notamment l'authentification par mot de passe et par clé. En outre, il réduit le port ouvert du serveur vers le réseau extérieur, car il est exécuté sur le même port que le protocole SSH.

Prérequis

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

Vous trouverez ci-dessous l'environnement actuel de mise en œuvre :

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

Vérifier les packages OpenSSH

Pour configurer un serveur SFTP, vous devez avoir installé les packages OpenSSH sur votre système Linux. Presque tous les serveurs de distribution Linux ont les packages OpenSSH installés par défaut. Mais, si vous n'avez pas le package OpenSSH sur votre système, vous pouvez l'installer à partir du référentiel officiel.

1. Pour vous assurer que les packages 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

Vous trouverez ci-dessous la sortie de notre système Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

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

Pour les utilisateurs de RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux, vous pouvez utiliser la commande rpm comme ci-dessous.

rpm -qa | grep ssh

Créer un groupe et un utilisateur

À cette étape, vous allez créer un nouveau groupe et un nouvel utilisateur pour le serveur SFTP. Les utilisateurs de ce groupe seront autorisés à accéder au serveur SFTP. Et pour des raisons de sécurité, les utilisateurs SFTP ne peuvent pas accéder au service SSH. Les utilisateurs SFTP accèdent uniquement au serveur SFTP.

1. Exécutez la commande suivante pour créer un nouveau groupe 'sftpgroup '.

sudo groupadd sftpgroup

2. Créez un nouvel utilisateur 'sftpuser ' à l'aide de la commande suivante.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Options détaillées :

  • -G :ajoute automatiquement l'utilisateur au 'sftpgroup '.
  • -d :spécifiez le répertoire personnel du nouvel utilisateur.
  • -s :définissez 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.

3. 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.

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 au shell via SSH.

Configurer le répertoire de la prison chroot

Après avoir créé un nouveau groupe et 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 se trouvera dans '/srv/sftpuser' . Exécutez la commande ci-dessous pour le créer.

mkdir -p /srv/sftpuser

2. Pour configurer le chroot pour l'utilisateur 'sftpuser ', vous devez changer la propriété du répertoire en utilisateur root, mais rester le groupe pour lire et exécuter sans accès en écriture.

Changez la propriété du répertoire en 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

3. Ensuite, créez un nouveau répertoire 'data' dans le '/srv/sftpuser ' et changer le propriétaire de ces 'données ' répertoire à l'utilisateur 'sftpuser '.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Jusqu'à présent, ci-dessous détaille la configuration du répertoire d'utilisateurs SFTP.

  • Le répertoire '/srv/sftuser' est le répertoire personnel par défaut.
  • L'utilisateur 'sftpuser ' ne 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 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

2. Commentaire la configuration suivante pour désactiver le 'sftp-server autonome ' fonctionnalité.

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

3. Collez la configuration suivante au 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.

Paramétrage détaillé :

  • Au lieu d'utiliser le sous-processus 'sftp-server ', nous utilisons le 'internal-sftp '.
  • Le serveur SFTP activé pour le groupe 'sftpgroup '.

4. Pour appliquer une nouvelle configuration, redémarrez le service ssh à l'aide de la commande ci-dessous.

sudo systemctl restart sshd

Le serveur SFTP est prêt et accessible, et il s'exécute sur le même port que le service SSH.

Accéder au serveur SFTP

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 de ligne de commande ou un client FTP GUI tel que FileZilla , Cybercanard , etc.

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

sftp [email protected]

Si votre serveur SFTP et/ou SSH s'exécute sur le port personnalisé, vous pouvez utiliser la commande sftp comme ci-dessous.

sftp -P PORT [email protected]

Tapez le mot de passe pour le 'sftpuser '.

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

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

pwd
ls

3. Téléchargez un fichier local sur le serveur SFTP dans le répertoire '/ ', qui se traduira par 'autorisation refusée ', car il s'agit du répertoire chroot.

put /path/to/file/on/local /

4. 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 dossier '/data/ ' répertoire.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

5. Vérifiez maintenant les fichiers disponibles sur le '/data ' à l'aide de la commande suivante.

ls /data/

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

Conclusion

Toutes nos 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 sur lesquels OpenSSH est installé. De plus, vous avez appris à configurer le répertoire chroot pour les utilisateurs SFTP et appris la commande de base du client sftp.


Ubuntu
  1. Comment installer et utiliser l'écran Linux, avec des commandes

  2. Comment installer et utiliser Hubot sur Ubuntu Linux

  3. Comment installer et utiliser Flatpak sous Linux

  4. Comment installer et configurer le serveur sftp dans Ubuntu 20.04

  5. Comment installer et utiliser Traceroute sous Linux

Comment installer et utiliser les outils de capture d'écran Ubuntu Linux

Comment installer et utiliser WinSCP sur Ubuntu 20.04 Linux

Comment installer et utiliser ProtonVPN sur Linux de bureau

Comment installer et utiliser Flatpak sous Linux

Comment installer et utiliser Thonny Python IDE sous Linux

Comment installer et utiliser le gestionnaire de fenêtres i3 sous Linux