Installer un serveur FTP sur Raspberry Pi (2 façons sûres)

FTP signifie « File Transfer Protocol » (Protocole de transfert de fichier) et c’est la première chose à laquelle nous pensons lorsqu’il s’agit de transférer des fichiers vers un Raspberry Pi. Mais, c’est un peu comme HTTP sur le Web, ce n’est pas un protocole sécurisé. Le but de cet article est d’expliquer comment configurer un serveur FTP en toute sécurité.

Le plus simple pour configurer un serveur FTP sûr avec un Raspberry Pi est d’utiliser SSH et le protocole SFTP à la place d’un logiciel de serveur FTP classique. SSH peut être activé facilement, et vous pouvez ensuite utiliser n’importe quel client FTP pour accéder aux fichiers du Raspberry Pi.

Je vous recommande vivement de suivre ces conseils, car je suppose que la plupart d’entre vous sont sur un réseau domestique avec un seul utilisateur (vous). Il est tout simplement plus facile d’utiliser SSH. Mais ne vous inquiétez pas, j’explique aussi une seconde méthode, qui consiste à utiliser un serveur FTP traditionnel pour ce projet.

À propos, si vous débutez sur Raspberry Pi et que vous souhaitez accélérer les choses (tout en vous amusant), n’hésitez pas à télécharger mon e-book Maitrisez Raspberry Pi en 30 jours. Il s’agit d’un défi de 30 jours dans lequel vous apprendrez une nouvelle compétence chaque jour. Vous économiserez du temps et de l’argent et pourrez enfin profiter de votre Raspberry Pi à son plein potentiel. Je vous offre d’ailleurs 10% de remise aujourd’hui si vous utilisez ce lien !

Prérequis du serveur FTP

Comme toujours, commençons par examiner ce dont vous avez besoin pour démarrer en termes de matériel et de logiciels.

Exigences matérielles

Il n’y a pas d’exigences obligatoires en termes de matériel pour mettre en place un serveur FTP sur Raspberry Pi.

J’utilise un Raspberry Pi 4 pour tous mes projets parce que c’est la meilleure option actuellement, donc je ne me pose pas vraiment la question. Mais si vous n’avez qu’un Raspberry Pi Zero, c’est parfait.

Le stockage est plus important à mon avis, alors essayez d’estimer l’espace disque dont votre serveur aura besoin, surtout si vous avez beaucoup d’utilisateurs ou si vous voulez conserver des fichiers volumineux. Il peut être judicieux d’investir dans un disque dur externe dès le départ (voici celui que je recommande actuelllement).

Une connexion à un réseau câblé est également recommandée pour plus de stabilité (l’expérience ne sera pas agréable si la connexion est lente ou subit des déconnexions en permanence). J’ai un guide ici sur la façon de configurer une IP statique si nécessaire.

Avertissement : Les prix actuels sont très variables pour un nouveau Raspberry Pi. N’oubliez pas de consulter cet article pour payer le juste prix lors de l’achat d’un Raspberry Pi. Je donne également quelques conseils pour en trouver un en stock (ce qui n’est actuellement pas si facile).

Recommandations de logiciels

Voici mes recommandations en termes de logiciels avant d’installer un serveur FTP :

  • Système d’exploitation : Les instructions de ce tutoriel devraient fonctionner sur la plupart des distributions, mais je recommande d’utiliser Raspberry Pi OS si vous partez de zéro. Certaines étapes sont plus faciles à réaliser avec ce système, et il fonctionne aussi bien que n’importe quel autre. Une version Lite suffit, vous n’avez pas besoin d’un environnement de bureau pour un serveur FTP.
    Vous pouvez lire mon guide sur l’installation de Raspberry Pi OS ici si vous avez besoin de conseils.
  • Système à jour : Pour éviter tout conflit ultérieur, assurez-vous d’abord que votre système est à jour. Vous pouvez le faire à l’aide des commandes suivantes :
    sudo apt update
    sudo apt upgrade -y

    Redémarrez le Raspberry Pi après l’installation si de nombreuses mises à jour sont disponibles.
  • SSH activé : comme pour la plupart de mes tutoriels, je recommande d’utiliser SSH pour suivre le tutoriel sur votre ordinateur pendant que vous exécutez les commandes (à distance) sur le Raspberry Pi. C’est tout simplement plus pratique, surtout avec l’image Lite (copier/coller).
    Je donne plus de détails dans l’explication de la première méthode ci-dessous, mais vous pouvez lire mon guide SSH si vous ne savez pas de quoi je parle ici.

Pour information, j’ai testé ce tutoriel sur mon Raspberry Pi 4 (4 Go), avec l’édition Lite de Raspberry Pi OS Bullseye (64 bits).

Méthode 1 : utilisation de SFTP (FTP via SSH)

Comme je l’ai expliqué dans l’introduction, je recommande d’utiliser SSH au lieu de FTP lorsque c’est possible. C’est ma solution préférée car elle est rapide, sécurisée, et comme j’active SSH sur toutes mes installations, elle est disponible directement.

La configuration de l’accès SFTP à un Raspberry Pi peut se faire en quelques étapes simples :

  • Activer le serveur SSH (peut être fait avec raspi-config sur RPI OS).
  • Test du fonctionnement de SSH.
  • Utiliser SFTP à partir d’un client compatible.

Voyons toutes ces étapes en détail.

Activer SSH

Pour activer SSH sur Raspberry Pi OS, vous pouvez le faire via l’outil de configuration du logiciel Raspberry Pi (raspi-config) :

Dans un terminal, tapez la commande suivante :
sudo raspi-config

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Un assistant apparaît, allez dans Interfaces > SSH, et choisissez « Yes » pour activer le service.

Si vous utilisez une autre distribution, il se peut que vous deviez d’abord installer le serveur SSH. Cela peut généralement être fait lors de l’installation du système, ou via le gestionnaire de paquets, par exemple :
sudo apt install ssh

Note : Si vous utilisez Raspberry Pi Imager pour installer Raspberry Pi OS, il est également possible d’activer SSH directement au premier démarrage via les options avancées (plus de détails ici).

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

Test de la connexion SSH

Une fois le serveur SSH installé et démarré, il suffit de faire un test rapide pour s’assurer que l’accès SSH fonctionne. Utilisez n’importe quel client SSH pour cela, il s’agit juste d’un test.

Sous Windows, il est généralement recommandé d’utiliser Putty pour cela, mais sur tous les systèmes, vous pouvez désormais utiliser directement la ligne de commande pour vous connecter à un autre ordinateur via ssh :
ssh <utilisateur>@<adresse_ip>

Si vous utilisez Putty, l’écran ressemble à ceci :

Si la connexion fonctionne comme prévu, vous devriez avoir accès à une invite comme celle-ci :

Si c’est la première fois que vous utilisez SSH, vous avez probablement besoin de plus de conseils, je vous recommande donc de lire mon guide SSH complet pour Raspberry Pi ici. J’y explique la théorie, ces étapes plus en détail, et mon client préféré pour accéder à tous mes serveurs en un clic.

Facultatif : création d’un utilisateur spécifique

Sur un serveur FTP classique, on crée généralement un nouvel utilisateur pour chaque personne, client ou type d’accès. Il est possible de faire la même chose avec SFTP si nécessaire.

C’est encore plus facile qu’avec certains logiciels FTP, puisqu’il suffit de créer de nouveaux utilisateurs système pour chaque cas et d’utiliser les autorisations système standard pour restreindre leur accès si nécessaire.

Je dis que c’est facultatif parce que je suppose que la plupart d’entre vous qui lisez ceci veut juste accéder à leur Raspberry Pi via un client FTP, pas nécessairement avoir 50 utilisateurs avec des accès et des permissions différents. Si c’est juste pour vous, vous avez déjà un compte et vous pouvez simplement utiliser cet identifiant et ce mot de passe pour vous connecter via SFTP.

Si vous avez besoin de créer un nouvel utilisateur sur votre Raspberry Pi, cliquez sur ce lien pour consulter mon guide à ce sujet. J’y explique toutes les étapes pour le faire en quelques commandes.

Test de la connexion SFTP

Nous sommes maintenant prêts à faire un test avec un client FTP supportant SFTP et voir si nous pouvons accéder aux fichiers du Raspberry Pi depuis celui-ci.

J’utilise Termius (un client SSH) pour me connecter à tous mes serveurs, et il y a une fonction qui permet d’utiliser SFTP. Ce n’est pas nécessairement le meilleur client SFTP, mais comme je l’ai déjà configuré pour l’accès SSH, c’est le moyen le plus simple pour moi.

Les autres options incluent FileZilla (le client FTP le plus populaire), ou WinSCP si vous êtes sous Windows. FileZilla est probablement l’outil que je recommanderais, surtout si vous avez des utilisateurs normaux qui se connectent à vos serveurs. Vous pouvez le configurer une fois, et c’est ensuite facile pour l’utilisateur final.

Quand je dis « utilisateur normal », je pense aux membres de la famille, aux clients, etc. Toute personne qui n’a pas de diplôme en informatique ou qui ne passe pas ses week-ends à jouer avec un Raspberry Pi :-).

Dans la plupart des clients FTP, vous trouverez un endroit pour gérer l’accès à plusieurs serveurs. Dans FileZilla, il y a un « Site Manager », où vous pouvez ajouter un nouveau site, en remplissant l’adresse IP de l’hôte, l’utilisateur et le mot de passe. Voici comment remplir ce formulaire pour le serveur SFTP de votre Raspberry Pi :

Il suffit de changer le protocole de FTP à SFTP, et de remplir le formulaire avec l’adresse IP du Raspberry Pi ainsi que votre identifiant et votre mot de passe. Vous pouvez ensuite cliquer sur « Connect ». Si cela fonctionne comme prévu, vous devriez voir votre répertoire personnel sur le côté droit :

À partir de là, vous pouvez transférer des fichiers d’un côté à l’autre. À gauche, ce sont les fichiers de votre ordinateur, à droite, ceux du Raspberry Pi.

Si vous avez d’autres utilisateurs, il leur suffira de comprendre comment utiliser cette vue. Ils n’auront plus jamais à remplir l’adresse IP, l’identifiant et le mot de passe. Tout est enregistré dans le gestionnaire de sites sous un nom facile à retenir, ils peuvent donc cliquer sur ce nom pour se connecter et n’ont pas besoin d’en savoir plus.

Méthode 2 : mise en place d’un serveur FTP traditionnel

Si, pour une raison quelconque, vous préférez utiliser un serveur FTP traditionnel sur votre système, voici le guide que vous recherchez.

Rappelez-vous que la méthode 1 est plus sûre et qu’elle n’est pas très compliquée à mettre en place, même si vous avez de nombreux utilisateurs qui ne sont pas habitués à ce type de technologie. La vue de l’utilisateur sera la même avec les 2 méthodes.

Choisir un logiciel de serveur FTP

Lorsqu’il s’agit d’installer un serveur FTP sur un serveur Linux (Raspberry Pi ou non), de nombreuses options sont disponibles :

  • ProFTPD : La solution polyvalente, avec de nombreuses fonctionnalités disponibles et des options de configuration avancées.
  • Pure-FTPd : Une alternative plus légère à ProFTPD, avec plus d’options de sécurité.
  • vsftpd : Daemon FTP très sécurisé. Un serveur FTP léger et sécurisé, facile à installer.
  • Etc.

Pour être honnête, je n’ai pas assez d’expérience avec toutes ces solutions pour en recommander une plus que l’autre, mais après avoir lu quelques articles sur le sujet, il me semble que pour les utilisateurs de Raspberry Pi, vsftpd est probablement le meilleur compromis entre sécurité, simplicité et performances.

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Je vais donc vous montrer comment installer vsftpd dans ce guide, mais n’hésitez pas à passer à une autre option si, pour une raison ou une autre, elle ne correspond pas à vos besoins.

Installer le serveur FTP

vsftpd est disponible dans le dépôt par défaut sur Raspberry Pi OS et la plupart des dépôts Linux. Il peut être installé en une seule commande via le gestionnaire de paquets :
sudo apt install vsftpd

Si des dépendances sont nécessaires, le gestionnaire de paquets les installera en même temps, c’est donc assez simple. Copiez/collez la commande et vous avez terminé.

Configurer le serveur FTP

Ensuite, nous devons configurer quelques éléments avant d’utiliser notre nouveau serveur FTP.

Je vous donne la marche à suivre pour utiliser les utilisateurs du système comme utilisateurs FTP, et restreindre leur accès à leur répertoire personnel. Si vous avez l’intention de faire autre chose, vous devrez peut-être consulter la documentation de vsftpd pour modifier la configuration en conséquence.

Commencez par éditer le fichier de configuration du serveur, qui se trouve sous /etc/vsftpd :
sudo nano /etc/vsftpd/vsftpd.conf

Décommentez ces trois options dans le fichier (supprimer le caractère # au début de chaque ligne) :
write_enable=YES
local_umask=022
chroot_local_user=YES

Ajoutez cette ligne (après l’option chroot, par exemple) :
allow_writeable_chroot=YES

Ce faisant, nous confinons les utilisateurs à leur répertoire personnel, ce qui leur permet de créer de nouveaux fichiers (même dans le répertoire personnel racine). Par exemple, l’utilisateur « pat » que j’ai ne verra que les fichiers sous /home/pat, pourra créer des fichiers ici, mais ne pourra pas accéder aux fichiers système ou aux fichiers des autres utilisateurs.

Une fois que c’est fait, enregistrez et quittez (CTRL+X si vous utilisez Nano).

Redémarrez le service pour appliquer les modifications :
sudo service vsftpd restart

Facultatif : créer un nouvel utilisateur

Notre serveur FTP utilise par défaut les utilisateurs système. Si vous avez besoin de créer un accès spécifique pour différents utilisateurs, il suffit de créer de nouveaux utilisateurs système sur le Raspberry Pi.

Vous pouvez consulter mon tutoriel sur la création de nouveaux utilisateurs sur un Raspberry Pi ici si nécessaire.

Donnez-leur un mot de passe fort et créez un répertoire personnel pour chacun d’entre eux, avec les fichiers qu’ils verront une fois connectés via FTP.

Vous ne devez le faire que si plusieurs utilisateurs accèdent à votre serveur FTP. S’il ne s’agit que de vous, vous disposez probablement déjà d’un compte personnel et pouvez l’utiliser pour l’accès FTP.

Tester la connexion

Maintenant que le serveur FTP est installé, vous pouvez utiliser n’importe quel client FTP pour accéder aux fichiers à distance.

Comme expliqué avec la méthode 1, je recommande l’utilisation de FileZilla pour tous les utilisateurs. C’est l’option la plus populaire, et il est facile à utiliser pour n’importe quel utilisateur, même s’il ne connaît rien aux FTP.

Ouvrez le « Site Manager » et ajoutez la configuration de votre serveur FTP :

C’est presque la même chose qu’avec la première méthode. Nous gardons « FTP » pour le protocole, nous renseignons l’adresse IP du Raspberry Pi, ainsi que le nom d’utilisateur et le mot de passe.

Une fois fait, utilisez le raccourci pour accéder rapidement à votre serveur depuis le gestionnaire de sites (vous pouvez aussi cliquer sur « Connect » une fois la configuration enregistrée), et vous aurez accès au répertoire personnel du Raspberry Pi :

Notez que l’utilisateur voit « / » au lieu de « /home/pat » car, selon notre configuration, l’utilisateur ne peut créer des fichiers et des répertoires que dans son dossier personnel.

J’ai créé un dossier « test », qui s’affiche sous « /test » dans FileZilla, mais qui en réalité est sous « /home/pat/test » sur le Raspberry Pi. Du point de vue de l’utilisateur, je n’ai aucune idée de l’endroit où se trouve ce dossier, et vous avez peut-être 50 autres utilisateurs sur le même serveur FTP.

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Rappel: J'ai crée une communauté d'utilisateurs de Raspberry Pi qui vous permet de partage vos avancées, poser vos questions et recevoir de nombreux avantages exclusifs (anglophones uniquement). Cliquez sur le lien pour en savoir plus.

Autres considérations (dans les deux cas)

Votre serveur FTP (ou SFTP) est maintenant installé et prêt à être utilisé. Quelle que soit la méthode choisie, c’est le moment de réfléchir à l’avenir de votre projet, surtout si vous n’êtes pas le seul utilisateur.

Si l’objectif est simplement de transférer des fichiers Python depuis votre ordinateur et que vous êtes le seul utilisateur, vous pouvez probablement vous arrêter là. Mais si vous avez des inquiétudes concernant la sécurité ou l’utilisation de l’espace de stockage, vous devriez continuer à lire cette section.

Mettre en œuvre des mesures de sécurité

Tant que vous avez un nom d’utilisateur aléatoire et un mot de passe fort, le protocole FTP est déjà assez sûr pour un usage domestique. Mais si vous hébergez des données critiques, des données personnelles, et surtout si vous avez plusieurs utilisateurs, vous devriez penser à la sécurité.

Comme pour tout serveur hébergé sur un Raspberry Pi, il y a quelques éléments à garder à l’esprit, que vous devriez probablement configurer pour protéger votre serveur. Je les ai résumées dans cet article que vous devriez lire maintenant :
17 conseils pour sécuriser votre Raspberry Pi comme un pro

Cela va de l’utilisation de mots de passe sûrs à l’installation d’une application pour détecter et bloquer les attaques par force brute. Vous ne devez pas nécessairement les suivre toutes, cela dépend de votre situation. Il est bon de connaître au moins la liste et de mettre en place ce que vous trouvez utile dans votre cas.

Si vous utilisez un serveur FTP (comme vsftpd), il est possible d’utiliser un certificat SSL pour chiffrer les connexions. J’ai vérifié la procédure et elle semble compliquée, donc passer à SFTP est probablement une meilleure idée.

Planifier des sauvegardes régulières

Cela n’a rien à voir avec le projet en lui-même, mais si plusieurs utilisateurs se servent de votre nouveau serveur FTP pour partager des fichiers, ils peuvent s’attendre à ce que les fichiers y restent indéfiniment. Ce ne sera pas forcément le cas, surtout lorsque le serveur est un Raspberry Pi et si vous n’avez pas mis en place un bon programme de sauvegarde.

Dès que vous hébergez un serveur, quel qu’il soit, surtout si plusieurs utilisateurs y accèdent, il est indispensable de penser à la sauvegarde et à la restauration.

Si tous les utilisateurs envoient des fichiers dans leur dossier /home, je ferais au moins une sauvegarde quotidienne de /home sur un autre ordinateur. J’explique comment le faire dans ce tutoriel : Comment sauvegarder et restaurer un Raspberry Pi ?.

Encore une fois, si vous êtes le seul utilisateur et que vous transférez simplement les fichiers que vous avez sur votre ordinateur vers le Raspberry Pi en suivant cette méthode, vous n’avez pas à vous en préoccuper (l’ordinateur est déjà votre sauvegarde en quelques sortes).

Améliorer l’emplacement et le matériel de stockage

Si vous avez suivi ce tutoriel, vous avez probablement configuré le système sur la carte SD du Raspberry Pi, et tous les fichiers stockés sous /home pour vos utilisateurs FTP. C’est bien, mais ce n’est pas nécessairement la meilleure solution.

Une carte SD n’est pas la méthode de stockage la plus fiable, et elle n’a pas nécessairement assez d’espace non plus. Passer à un disque dur externe peut être une bonne idée si plusieurs utilisateurs accèdent à votre serveur FTP.

En termes de matériel, je recommande généralement ce disque externe de SanDisk, qui est rapide, minuscule (de la même taille que le Raspberry Pi), et pas si cher. L’utiliser à la place de la carte SD est une bonne idée, même si vous êtes le seul utilisateur.

La carte SD peut également être limitée en taille. Même si vous commencez avec 16 ou 32 Go, comme je le recommande actuellement (plus de détails ici en anglais), vous pouvez rapidement manquer d’espace si vos utilisateurs envoient quotidiennement des fichiers volumineux.

Ainsi, non seulement l’utilisation d’un disque externe est plus sûre, mais il est également plus facile de conserver quelques To d’espace disque disponible pour éviter les problèmes à long terme. Dans ce cas, vous devez monter le disque externe sur le Raspberry Pi et définir les répertoires personnels sur ce disque au lieu du répertoire par défaut /home/user (faites-le directement lorsque vous créez les utilisateurs, même s’il est possible de modifier le répertoire personnel par la suite en anglais).

J’espère que ce projet sera une réussite pour vous, et si vous cherchez d’autres projets réseau, jetez un coup d’œil à mes autres articles :

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets où je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *