Maj sections SFTP

This commit is contained in:
whirigoyen 2023-01-25 15:44:37 +01:00
parent 47fa26b44f
commit 21a0f6112f

View file

@ -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
</VirtualHost>
~~~
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 <PUBLIC_KEY> > /etc/proftpd/sftp.authorized_keys/<FTP_USER>
$ chmod 600 /etc/proftpd/sftp.authorized_keys/<FTP_USER>
~~~
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 <HOST>
lftp <HOST>:~> set ftp:ssl-force true
lftp <HOST>:~> login <FTP_USER>
Mot de passe :
lftp $ftp_user@host:~> ls
lftp <FTP_USER>@<HOST>:~> 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