Mount sftp share

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Montage client d'un partage distant (SFTP/FUSE)
Paquet sshfs
Commandes sshfs · ssh-keygen · ssh-copy-id
Voir aussi Vsftpd

sshfs permet de monter un répertoire distant en local via le protocole SFTP (SSH File Transfer Protocol), au moyen de FUSE. Il ne s'agit pas de FTP au sens classique ni du démon vsftpd : sshfs fonctionne côté client, au-dessus de n'importe quel serveur SSH standard, sans composant serveur FTP dédié.

Installation

sudo apt-get install sshfs

Montage manuel

sudo sshfs user1@192.168.1.10:/var/www /media/partage/

Au premier montage, la clé hôte SSH du serveur distant n'est pas encore connue localement, d'où la question de confirmation habituelle d'OpenSSH (empreinte RSA à vérifier avant d'accepter) :

The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
RSA key fingerprint is xx:xx:xx:...
Are you sure you want to continue connecting (yes/no)? yes
user1@192.168.1.10's password:

Le point de montage n'est accessible qu'à l'utilisateur qui a lancé le montage (ou à root, ici via sudo) — un utilisateur non privilégié obtient une erreur Permission denied en tentant d'y accéder directement.

Démontage

umount /media/partage

Montage persistant (fstab)

echo "sshfs#user1@192.168.1.10:/var/www /media/partage/ fuse defaults 0 0" >> /etc/fstab
mount -a

Avec une entrée fstab sans clé SSH pré-configurée, mount -a demande tout de même le mot de passe de manière interactive — voir la section suivante pour un montage non interactif.

Montage sans mot de passe (authentification par clé)

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub user1@192.168.1.10
mount -a

Une fois la clé publique copiée dans ~/.ssh/authorized_keys du compte distant, le montage (manuel ou via fstab) ne demande plus de mot de passe.

Montage en tant qu'utilisateur non-root

sshfs user1@192.168.1.10:/var/www/ /home/user1/partage/ -p22 -o uid=user1 -o gid=user1 -o idmap=user -o IdentityFile=/home/user1/.ssh/id_rsa -o allow_other

Entrée fstab équivalente :

sshfs#user1@192.168.1.10:/var/www/ /home/user1/partage/ fuse defaults,uid=user1,gid=user1,idmap=user,allow_other 0 0

allow_other nécessite que l'option user_allow_other soit décommentée dans /etc/fuse.conf (à vérifier selon distribution).

Voir aussi