Un accès SFTP est un moyen simple pour un utilisateur de rappatrier et envoyer des fichiers sur un serveur, au moyen d'un client SFTP tel que Filezilla.
Un serveur SFTP est en fait un sous-ensemble de SSH.
ssh est un outil formidable :
~/.ssh/config
, plutôt que dans le fichier /etc/hosts
, pour vous connecter à vos machines. Vous pourrez ainsi indiquer quel port la connexion doit utiliser.Si l'on donne accès SSH à des utilisateurs, on préfererait qu'ils ne soient pas trop curieux ou n'aient pas trop de possibilités de nuire au serveur.
Il existe des solutions de chroot et de jail, mais leur mise en oeuvre est assez rebutante.
On peut aussi restreindre simplement l'accès SSH à du sftp-only dans la config d'openssh, mais on perd alors la possibilité d'utiliser le shell.
Si c'est le fait que la personne puisse se balader dans l'arborescence qui dérange. Sans avoir recours à un chroot, on peut procéder ainsi :
chmod go-rx $rep
)Lorsqu'on se connecte via sftp, on arrive dans son $HOME.
Si les fichiers qui nous intéressent sont déjà dans notre $HOME, tout va bien.
S'ils sont situés ailleurs, par exemple sur une autre partition, alors le réflexe pourrait être d'utiliser un lien symbolique, mais abstenez-vous : lorsque la personne circulera au sein de ces répertoires, elle ne retrouvera pas son $HOME lorsqu'elle revient en arrière.
La solution est plutôt de faire un montage de type bind.
/mnt/local/tresor/ /home/bichounet/macaverne none defaults,bind 0 0
On peut utiliser Filezilla pour se connecter à un serveur SFTP/SSH. Une autre solution serait d'utiliser sshfs (FUSE), que je trouve d'ailleurs plus pratique, mais que je trouve moins réactive que la solution qui suit sur des connexions à faible débit. Filezilla a aussi l'avantage de tourner aussi sous Windows, ce qui n'est pas le cas de sshfs.
On peut utiliser un mot de passe pour l'authentification, ou bien sa clé SSH, c'est ce que l'on verra ci-dessous.
Filezilla a besoin de connaître le chemin de votre clé privée SSH (généralement ~/.ssh/id_rsa). Elle se renseigne dans le menu Edition > Paramètres > SFTP. Ajoutez votre clé privée, elle devrait apparaître parmi le lot de clés disponibles pour Filezilla.
Dans le «Gestionnaire de sites» de Filezilla, vous ajouterez les coordonnées du serveur, et choisirez une connexion “Normale”, en indiquant l'identifiant.
En plus de cela, vous devrez avoir un agent SSH qui tourne sur votre machine. Il ne suffit pas de lancer l'agent SSH, il faut que votre shell intègre et exporte un certain nombre de variables.
Avec bash, cela se fait bien avec :
eval $(ssh-agent -s)
Cela étant fait, vous pouvez lancer Filezilla, et tenter la connexion.
Si la description ci-dessus ne colle pas avec votre situation, vous pouvez aussi consulter cette page du wiki Filezilla qui traite de la question : https://wiki.filezilla-project.org/Howto