---
title: Serveur FTP
source: https://synapx.fr/blog/serveur-ftp/
date: 2026-06-26
category: Debian & serveur
site: SynapxLab
---

# Serveur FTP

Un serveur FTP permet de transférer des fichiers depuis un ordinateur personnel sur lequel un client FTP, tel que FileZilla, est installé.

vsFTPd (Very Secure FTP Daemon), créé en 2000, est un serveur FTP particulièrement orienté vers la sécurité. Développé par Chris Evans (chargé de la sécurité de Google Chrome), il compte parmi les premiers logiciels serveurs à mettre en œuvre la séparation des privilèges, réduisant ainsi les risques de compromission.

Parmi les autres paquets permettant de configurer un serveur FTP, on peut citer : ProFTPD, Pure-FTPd, FTP sur SSH (SFTP via OpenSSH), vsftpd avec PAM et MySQL, FileZilla Server, TFTP.

```bash
dpkg -l | grep ftp
# Si openssh-server est déjà installé, vous pouvez vous connecter avec votre clé SSH sur le port 2222 !
sudo apt install openssh-server
```

## Installation d'un serveur FTP avec vsftpd

```bash
sudo apt install vsftpd -y

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

sudo systemctl status vsftpd
sudo systemctl restart vsftpd
```

Configuration de base :

```bash
sudo nano /etc/vsftpd.conf
```

```ini
anonymous_enable=NO
local_enable=YES            # Autoriser les utilisateurs locaux
write_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list   # empêcher les utilisateurs de naviguer hors de leur répertoire
chroot_local_user=NO
allow_writeable_chroot=YES
```

## Générer et configurer un certificat SSL auto-signé

```bash
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
sudo nano /etc/vsftpd.conf
```

```ini
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
```

```bash
sudo systemctl enable vsftpd
sudo systemctl reload vsftpd

sudo tail -f /var/log/vsftpd.log
```

Une fois le serveur FTP installé, il convient de configurer les accès utilisateurs (locaux ou virtuels) afin de leur permettre de se connecter.

## Pour les utilisateurs système locaux

```bash
sudo adduser username
echo "username" | sudo tee -a /etc/vsftpd.chroot_list
sudo nano /etc/vsftpd.chroot_list

# Configurer les permissions du répertoire personnel
sudo chown username:username /home/username
sudo chmod 755 /home/username
```

## Pour les utilisateurs virtuels

Il ne s'agit pas d'utilisateurs système ; ils sont généralement gérés au moyen d'une base de données ou d'un fichier.

```bash
sudo nano /etc/vsftpd.conf
```

```ini
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/home/ftpusers/$USER
write_enable=YES
```

```bash
sudo nano /etc/pam.d/vsftpd.mysql
```

```ini
auth required pam_mysql.so user=ftp_user passwd=password host=localhost db=ftp_users table=users usercolumn=username passwdcolumn=password crypt=1
account required pam_mysql.so user=ftp_user passwd=password host=localhost db=ftp_users table=users usercolumn=username passwdcolumn=password crypt=1
```

## Supprimer le serveur FTP

```bash
sudo systemctl stop vsftpd
sudo apt-get remove --purge vsftpd
sudo rm -rf /etc/vsftpd.conf
sudo rm -rf /etc/vsftpd/
sudo rm -rf /var/log/vsftpd.log
sudo deluser ftpuser
sudo rm -rf /home/ftpuser
```
