Monter une partition d’un serveur distant avec ssh, fuse et sshfs
But de ce document
Ce document me sert de mémo pour installer, configurer et utiliser le paquet « sshfs » permettant de monter les partitions d’un serveur distant dans son propre système de fichiers. Cela permet d’ouvrir et d’enregistrer des fichiers sur votre serveur distant avec n’importe quelles applications.
J’ai testé ce mémo sur Debian Testing et Debian Sid, mais il doit pouvoir s’adapter aux autres distributions sans problème.
Pré-requis
Pour pouvoir monter un système de fichier via ssh, il faut bien évidemment disposer d’un serveur ssh opérationnel sur le le poste serveur et d’un client ssh sur le poste client.
Pour l’installation de ssh, vous pouvez suivre ce mémo :
Présentation du projet fuse
Le but du projet fuse est de faciliter le développement de nouveaux programmes permettant de monter toutes sortes de systèmes de fichiers distants (ssh, ftp, webdav,...)
Vous trouverez plus d’informations sur le site officiel : http://fuse.sourceforge.net/
Sur cette page, vous trouverez la liste des logiciels utilisant le système « fuse » et permettant de monter tous types de systèmes de fichiers distant :
Ce mémo sera consacré uniquement à l’utilisation du logiciel « sshfs » reposant sur « fuse » et permettant de monter des partitions distantes via ssh.
Installation et configuration
Installation du paquet :
# aptitude install sshfs
Ce paquet installera en plus les dépendances suivantes : fuse-source fuse-utils libfuse2
Dés l’installation du paquet, j’ai tenté sans succès un premier test avec la commande suivante
# sshfs toto@192.168.0.1:/home/toto /mnt
toto@192.168.0.1's password:
fusermount: failed to open /dev/fuse: No such file or directory
En fait, il faut commencer par charger le module fuse. C’est lui qui va créer ce device spécial :
# modprobe fuse
Pour charger le module automatiquement à chaque démarrage de l’ordinateur, il faut ajouter « fuse » dans le fichier « /etc/modules »
Et ensuite, le montage fonctionne sans problème avec la commande suivante :
# sshfs utilisateur@serveur:/dossier /point_de_montage
exemple :
# sshfs toto@192.168.0.0.1:/home/toto /mnt
Il est désormais possible d’accéder aux fichiers depuis n’importe quelle applications.
Le démontage de la partition peut se faire avec les deux commandes suivantes :
# fusermount -u /mnt
ou (sous root uniquement) :
# umount /mnt
Remarque : Par défaut, seul l’utilisateur ayant effectué le montage peux accéder (et même voire) le point de montage. Pour autoriser tous les utilisateurs (attention à la sécurité) à accéder au point de montage, il faut ajouter l’option « allow_other », ce qui donne :
# sshfs toto@192.168.0.0.1:/home/toto /mnt -o allow_other
Montage d’une partition en tant que simple utilisateur
Pour monter une partition en tant que simple utilisateur, il faut effectuer quelques réglages, car cela ne fonctionne pas par défaut :
$ sshfs toto@192.168.0.0.1:/home/toto /mnt
toto@192.168.0.1's password:
fuse: failed to exec fusermount: Permission denied
Il y a donc un problème pour exécuter « fusermount ». Un petit « ls », permet de le vérifier :
$ ls -la /usr/bin/fusermount
-rwsr-x--- 1 root fuse 18400 2006-06-14 00:55 /usr/bin/fusermount
Il faut donc ajouter votre utilisateur au groupe fuse :
# adduser toto fuse
Ensuite, il faut se reconnecter pour que le groupe soit pris en compte.
Et après c’est bon :-) :
$ sshfs toto@192.168.0.0.1:/home/toto /mnt
Et pour démonter :
# fusermount -u /mnt
La commande « umount » ne fonctionne pas en tant que simple utilisateur car le point de montage n’est pas configuré dans « /etc/fstab » et je ne crois pas que ce soit possible.
Éviter la saisie du mot de passe
Pour éviter la saisie du mot de passe, il faut mettre en place un accès au serveur ssh par clé privée / clé publique. Cela dépasse le cadre de ce mémo, mais voici quand même les commandes permettant de faire cela :
Création de la clé privée et de la clé publique sur le poste client :
$ ssh-keygen -t dsa
Envoi de la clé publique sur le serveur
$ ssh-copy-id -i /home/toto/.ssh/id_dsa.pub toto@192.168.0.1"
Montage automatique des partitions au démarrage de l’ordinateur
Pour commencer, il faut savoir qu’il est possible de passer directement par « mount » pour monter une partition de type sshfs. Pour cela, il faut indiquer « fuse » comme système de fichiers et mettre « sshfs# » avant le nom et le serveur ssh. Voici un exemple :
mount -t fuse sshfs#toto@192.168.0.0.1:/home/toto /mnt
La ligne suivante insérée dans « /etc/fstab », permet de monter automatiquement la partition au démarrage de l’ordinateur à condition que la clé privée de root soit autorisée sur le serveur distant et que le réseau soit actif lors du montage des partitions
sshfs#toto@192.168.0.1:/home/totot /mnt fuse defaults 0 1
Problèmes rencontrés
Je n’ai pas rencontré de problème particulier, mais je trouve les temps d’accès assez longs lorsqu’on passe par Internet.
En utilisant Konqueror avec une URL de la forme suivante, nous arrivons au même résultat et avec des temps d’accès plus rapides mais malheureusement ce type d’URL n’est pas supporté par OpenOffice.org :
fish://root@192.0.0.13/root
Autres sources d’informations
La page de man de « sshfs »
La FAQ officielle : http://fuse.sourceforge.net/wiki/index.php/SshfsFaq
Ces deux articles sur le sujet :
Historique des modifications
Version | Date | Commentaire |
---|---|---|
0.2 | 15/07/06 | Création par Tony GALMICHE |