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) ## SFTP (FTP over SSH)
Note : A Evolix, nous ne proposons pour l'instant pas, sauf exception, les protocoles SFTP et FTPS. A Evolix, sauf exception, nous préférons utiliser OpenSSH, [qui propose lui aussi le protocole SFTP](HowtoOpenSSH#sftp).
[OpenSSH propose aussi le protocole SFTP](HowtoOpenSSH#sftp).
Généralement, on souhaite conserver un service FTP "classique" en parallèle de 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 : 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> </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 : 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 # 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} ~~~{bash}
# proftpd -t && systemctl reload proftpd.service # proftpd -t && systemctl reload proftpd.service
~~~ ~~~
Testez la connexion via un mot de passe : Tester la connexion via un mot de passe :
~~~{bash} ~~~{bash}
# host=... # IP ou domaine # lftp <HOST>
# lftp $host lftp <HOST>:~> set ftp:ssl-force true
lftp host:~> set ftp:ssl-force true lftp <HOST>:~> login <FTP_USER>
lftp host:~> login $ftp_user
Mot de passe : 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. 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 chmod 700 /etc/proftpd/sftp.authorized_keys/
SFTPAuthorizedUserKeys file:/etc/proftpd/sftp.authorized_keys/%u
~~~ ~~~
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} * 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.
$ ssh-keygen -e -f ~/.ssh/id_rsa.pub
~~~
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 ## Logs