diff --git a/HowtoProFTPD.md b/HowtoProFTPD.md index 603b6898..7aa6df43 100644 --- a/HowtoProFTPD.md +++ b/HowtoProFTPD.md @@ -512,9 +512,7 @@ Si l'on peut lire le contenu du répertoire, alors la connexion est fonctionnell ## SFTP (FTP over SSH) -Note : A Evolix, nous ne proposons pour l'instant pas, sauf exception, les protocoles SFTP et FTPS. - -[OpenSSH propose aussi le protocole SFTP](HowtoOpenSSH#sftp). +A Evolix, sauf exception, nous préférons utiliser OpenSSH, [qui propose lui aussi le protocole SFTP](HowtoOpenSSH#sftp). Généralement, on souhaite conserver un service FTP "classique" en parallèle de SFTP. On met donc sa configuration dans un VirtualHost, pour pouvoir écouter sur un deuxième port : @@ -549,7 +547,12 @@ LoadModule mod_sftp.c ~~~ -Les clés SSH doivent être au format de compatibilité défini dans la RFC 4716, qui n'est pas le format par défaut de SSH. +Note : Les clés publiques SSH des comptes SFTP dans le répertoire indiqué dans la directive [`SFTPAuthorizedUserKeys`](http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPAuthorizedUserKeys) doivent être au format de la RFC 4716, qui n'est pas le format par défaut de SSH. + + +**Si votre version de ProFTPd est antérieur à la 1.3.7 :** + +Les clés SSH indiquées dans ler directives `SFTPHostKey` doivent être au format de la RFC 4716, qui n'est pas le format par défaut de SSH. Pour créer les clés privées compatibles côté serveur : @@ -558,52 +561,55 @@ Pour créer les clés privées compatibles côté serveur : # ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N '' -m PEM ~~~ -Testez la configuration et rechargez la configuration : + +### Ajouter un compte SFTP avec clé SSH + +Suivre d'abord la section [Ajouter un compte](#ajouter-un-compte). + +Puis, convertir la clé publique au format de la RFC 4716 et ajuster les droits : + +~~~{bash} +$ ssh-keygen -e -f > /etc/proftpd/sftp.authorized_keys/ +$ chmod 600 /etc/proftpd/sftp.authorized_keys/ +~~~ + +Dans la configuration SFTP (`/etc/proftpd/conf.d/sftp.conf`), ajouter le nouvel utilisateur à la directive `AllowUser` . + +Tester la configuration et la recharger : ~~~{bash} # proftpd -t && systemctl reload proftpd.service ~~~ -Testez la connexion via un mot de passe : +Tester la connexion via un mot de passe : ~~~{bash} -# host=... # IP ou domaine -# lftp $host -lftp host:~> set ftp:ssl-force true -lftp host:~> login $ftp_user +# lftp +lftp :~> set ftp:ssl-force true +lftp :~> login Mot de passe : -lftp $ftp_user@host:~> ls +lftp @:~> ls ~~~ Si l'on peut lire le contenu du répertoire, alors la connexion est fonctionnelle. -### Authentification par clé SSH +### Troobleshooting clés SSH -On peut gérer des clés SSH avec la directive [SFTPAuthorizedUserKeys](http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPAuthorizedUserKeys) et vérifier que la directive suivante contient bien l'option `publickey` : +* Dans la configuration SFTP (`/etc/proftpd/conf.d/sftp.conf`), vérifier que la directive `SFTPAuthMethods` inclue `publickey` et que l'utilisateur est dans la liste des `AllowUser`. + +* Vérifier les permission du répertoire des clés publique SSH : ~~~ -SFTPAuthMethods password publickey -SFTPAuthorizedUserKeys file:/etc/proftpd/sftp.authorized_keys/%u +chmod 700 /etc/proftpd/sftp.authorized_keys/ ~~~ -Attention, la clé publique à mettre dans le fichier doit être au format RFC4716, on peut convertir une clé ainsi : +* Les fichiers de clés doivent être accessibles par l'utilisateur sous lequel ProFTPd tourne. Si les directives `User` et/ou `Group` sont utilisées, il faut ajuster les droits. Par exemple, avec `User=proftpd` et `Group=proftpd`, il faut (au minimum) que le dossier soit en `root:proftpd 0750` et les fichiers soient en `root:proftpd 0640`. +* Les clés publiques SSH des comptes SFTP dans le répertoire indiqué dans la directive [`SFTPAuthorizedUserKeys`](http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPAuthorizedUserKeys) doivent être au format de la RFC 4716, qui n'est pas le format par défaut de SSH. -~~~{bash} -$ ssh-keygen -e -f ~/.ssh/id_rsa.pub -~~~ +* Si votre version de ProFTPd est antérieur à la 1.3.7, les clés SSH indiquées dans ler directives `SFTPHostKey` doivent être au format de la RFC 4716, qui n'est pas le format par défaut de SSH. -Il faut ajuster les droits : - -~~~ -# chmod 700 /etc/proftpd/sftp.authorized_keys/ -# chmod 600 /etc/proftpd/sftp.authorized_keys/foo -~~~ - -> Les fichiers de clés doivent être accessible par l'utilisateur sous lequel proftpd tourne, donc si il y a une directive User il faut ajuster les droits, par exemple avec `User=proftpd` et `Group=proftpd` dans la config proftpd, il faut (au minimum) que le dossier soit en `root:proftpd 0750` et les fichiers soient en `root:proftpd 0640`. - -Enfin vérifier que la directive SFTPAuthMethods inclus publickey et que l'utilisateur soit dans la liste des AllowUser ## Logs