sshfs est un programme de montage de système de fichier distant basé sur ssh. Coté serveur, il est intégré à ssh et ne nécessite donc pas l'installation de paquet ou configuration supplémentaire. Coté client, il utilise gvfs-fuse pour le montage du système de fichier virtuel.
Le système de fichier distant peut-être monté et utilisé comme un système de fichier "réél"
Le serveur ssh doit-être installé sur le PC distant : voir Accès sécurisé - ssh
Vérifier que le serveur est en fonctionnement
serveur$ systemctl status ssh |grep Active
Active: active (running) since Wed 2017-08-16 10:19:34 CEST; 15min ago
client$ ping -c5 eepc |grep "packet loss"
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
client$ nmap -p22 eepc |grep ssh
22/tcp open ssh
Tester la connexion, dans le cas d'une authentification par mot de passe, rentrer le mot de passe utilisateur du serveur
client$ ssh philippe@eepc
philippe@eepc's password:
Note : l'authentification par clés peut également être utilisée
Installer sshfs sur le poste client :
# apt install sshfs
Vérifier que sshfs est installé :
$ sshfs -V
SSHFS version 2.8
FUSE library version: 2.9.7
fusermount version: 2.9.7
using FUSE kernel interface version 7.19
Modifier le fichier fuse.conf pour donner aux utilisateurs non root les droits de montage
$ tail -3 /etc/fuse.conf
# Allow non-root users to specify the allow_other or allow_root mount options.
# décommenter la ligne suivante pour pouvoir monter en tant qu'utilisateur
user_allow_other
# mkdir /media/<nom_utilisateur>/eepc
Donner la propriété à l'utilisateur
# chown -R <nom_utilisateur>:<nom_utilisateur> /media/<nom_utilisateur>/eepc
La commande de montage du système de fichier distant sur le PC local est
$ sshfs user@adresse:/chemin_sysfs_distant /chemin_point_montage_local -p port -C
user est le nom d'utilisateur sur le PC distant
adresse est l'adresse ip du PC distant. Le nom d'hôte (hostname) peut également être utilisé s'il est unique sur le réseau.
/chemin_sysfs_distant est le chemin vers le système de fichier du PC distant à monter
/chemin_point_montage_local est le point de montage sur le PC local. Par défaut, ce point de montage doit-être vide
port est le numéro de port ssh. Par défaut, le port est 22 et dans ce cas, il n'est pas nécessaire d'utiliser l'option -p
-C est une option pour la compression qui accélère les transferts
Exemples :
Montage du répertoire distant Document sur le répertoire local /media/<nom_utilisateur>/eepc
$ sshfs <nom_utilisateur>@debian:/home/<nom_utilisateur>/Document /media/<nom_utilisateur>/eepc -C
user@debian's password:
Montage du répertoire utilisateur
$ sshfs <nom_utilisateur>@debian: /media/<nom_utilisateur>/eepc -C
La déconnexion nécessite l'utilisation de fusermount :
$ fusermount -u /chemin_point_montage_local
soit, avec l'exemple précédent
$ fusermount -u ~/media/<nom_utilisateur>/eepc
Ajouter dans la table de montage :
$ cat /etc/fstab |grep sshfs # Montage sshfs du /home/philippe de eepc sur /media/philippe/eepc
philippe@eepc:/home/philippe /media/philippe/eepc fuse.sshfs rw,user,noauto,_netdev,uid=1000,gid=1000,port=22,allow_other,reconnect,transform_symlinks,BatchMode=yes 0 0
pour un montage
avec les options de mount:
rw : Mount the filesystem read-write
user : Anybody can mount the corresponding filesystem
noauto : Can only be mounted explicitly
_netdev : The filesystem resides on a device that requires network access (used to prevent the system from attempting to mount these filesystems until the network has been enabled on the system)
avec les options de sshfs-fuse
allow_other : Allow access to other users
uid=1000,gid=1000 : set file owner (number), set file group (number)
reconnect : Reconnect to server
transform_symlinks : Transform absolute symlinks to relative
option ssh_config
BatchMode=Yes : If set to ``yes'', passphrase/password querying will be disabled. In addition, the ServerAliveInterval option will be set to 300 seconds by default. This option is useful in scripts and other batch jobs where no user is present to supply the password, and where it is desirable to detect a broken network swiftly. The argument must be ``yes'' or ``no''. The default is ``no''.
Pour monter le système de fichier distant, utiliser soit la ligne de commande :
$ mount /media/philippe/eepc
soit le gestionnaire de fichier, thunar dans le cas du bureau Xfce4
Pour démonter le système de fichier distant, utiliser de même soit la ligne de commande :
$ umount /media/philippe/eepc
soit le gestionnaire de fichier