Skip to Content

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 :

  •  http://www.coagul.org/article.php3 ?id_article=168

    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 :

  •  http://fuse.sourceforge.net/wiki/index.php/FileSystems

    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 :

  •  http://doc.ubuntu-fr.org/fuse
  •  http://doc.ubuntu-fr.org/sshfs

    Historique des modifications

    Version Date Commentaire
    0.2 15/07/06 Création par Tony GALMICHE