Vous pouvez essayer de faire ce tuto dans un container docker sous Debian
Contenu
On va d’abord créer un droplet, puis mettre à jour le package et installer Proftpd
apt update apt install proftpd
On va créer un utilisateur FTP (pas un utiliser avec Shell), on est sous root
useradd yvon -d /home/yvon -m -s /bin/false yvon // ce user ne possède pas de shell, et son répertoire home est /home/yvon passwd yvon //définir le mot de passe
Le but est que l’utilisateur lorsqu’il se connecte avec Filezilla, voit le répertoire /home/yvon, pour y mettre ses fichiers
Puis on va configurer le fichier /etc/proftpd/proftpd.conf
//Afin de contraindre le répertoire à /home/yvon on doit avoir DefaultRoot ~ // comme yvon n'a pas accès au shell RequireValidShell off // spécifier les port passif (intervalle de ports) PassivePorts 49152 65534
Il faut ouvrir les port 21 et la plage de port dans
ufw allow 21/tcp ufw allow 49152:65534/tcp // vérifier le status ufw status To Action From -- ------ ---- 21/tcp ALLOW Anywhere 49152:65534/tcp ALLOW Anywhere 21/tcp (v6) ALLOW Anywhere (v6) 49152:65534/tcp (v6) ALLOW Anywhere (v6)
Faire un script bash pour envoyer des fichiers vers ce serveur FTP
Nous allons d’abord installer le client ftp si ce n’est déjà fait
apt install ftp // upload d'un fichier (il faut créer le user et le login) ftp -n 165.22.194.80 <<EOF user yvon motdepasse put fichier_local.txt quit EOF
On peut faire l’équivalent en script bash c’est plus sympa pour la simplicité
//script bash syncftp.sh // on définit les variables HOST=165.22.194.80 USER=yvon PASS=123 FILE=date.log ftp -n $HOST << EOF user $USER $PASS put $FILE quit EOF
Mettez les lignes dans l’ordre, au début j’ai fait une bêtise j’ai mis le put avant le user !
Voici une version un peu améliorée, va setter le mode de transfert en binary malgré que ce soit du texte, ceci pour ménager les caractères spéciaux, les retour chariots CLRF <-> LF, le ls va lister le fichier pour vérifier que le fichier est bien uploadé !
HOST=165.22.194.80 USER=yvon PASS=123 FILE=date.log ftp -n $HOST << EOF user $USER $PASS binary put $FILE ls quit EOF