Donner accès à un système de fichiers est parfois nécessaire pour transférer des fichiers vers un serveur en ligne.
Un serveur SFTP permet de donner ce type d'accès limité uniquement au transfert de fichiers et de manière sécurisée.
La mise en place d'un serveur SFTP se fait en deux étapes principales :
Pour cela un utilisateur spécifique est créé sur le système où seront transférés les fichiers. Le mot de passe de l'utilisateur est celui qui sera utilisé par le client sftp pour se connecter et avoir accès au système de fichiers.
L'accès au système est limité ici à un seul dossier.
Ce dossier devra appartenir à l'utilisateur root
et pourra être par la suite bind mounté
à la destination finale. Ici, par exemple, nous souhaitons mettre à disposition un dossier Wordpress afin d'y transférer des développements spécifiques.
sudo adduser sftpuser sudo mkdir /home/sftpuser/wp sudo chown root: /home/sftpuser/wp sudo mount --bind /home/sysadm/service.wordpress/wp/ /home/sftpuser/wp
La procédure est assez simple et consiste en l'activation du processus intégré internal-sftp
ce qui simplifie la configuration avec la directive ChrootDirectory
qui emprisonnera l'utilisateur au dossier indiqué en paramètre.
# /etc/ssh/sshd_config # override default of no subsystems # Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp -f AUTH -l INFO Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory /home/sftpuser/wp ForceCommand internal-sftp PasswordAuthentication yes