Montage de dossiers distants via sshfs

J’ai souvent vanté les mérites du SSHFS mais je n’ai jamais réellement expliqué le concept du partage à -la-windows… mais sécuritaire!

Attention aux non initiés en linux… c’est un howto très technique!


Le concept est simple. Un dossier de mount points sur diverses machines dans le local en linux. Disons que votre dossier ~ est dans /home/username, ajoutez vos serveurs, par exemple, dans un dossier “Drives”.

$ mkdir ~/Drives

Ajoutez y tout vos hosts que vous voulez… Je ne prendrai pas d’exemple réel étant donné qu’on a pas nécessairement tous les même droits partout sur les machines et vm. Personnellement, je l’ai fait sur les serveurs web1 et web2 deux serveurs redondants d’hébergement de services web. J’ai donc créé ~/Drives/web1 et ~/Drives/web2

$ mkdir ~/Drives/web1
$ mkdir ~/Drives/web2

Dans mon exemple, sur ces deux machines j’ai mon propre usager et j’ai ajouté mon login dans le ~/.ssh/authorized_keys de mon homedir. Si vous avez pas ça, faites vous le en suivant le howto ici: login ssh sans mot de passe. Vous pourrez tester en faisant $ ssh hostname il devrait se loguer tout seul. Si vous ne faites pas cela, vous serez oubligé d’entrer vos mots de passes de TOUTES vos machines… A chaque login.

Pour continuer, on doit aussi installer le paquetage sshfs

$ sudo apt-get install sshfs

Pour avoir le droit de monter les hôtes en sshfs, vous devez vous autoriser l’exécution du mount sinon vous êtes condamné a entrer le mot de passe root a chaque login. Vous pouvez aller via: System->Administration->Users and Groups Puis ajoutez dans Manage groups (ou quelque chose qui parle de ça) puis trouvez le groupe fuse puis dans Properties ajoutez votre propre login qui est probablement non coché.

Aussi:
Une manière alternative de s’ajouter le droit fuse, serait de faire en shell

$ sudo usermod -G fuse username

Finalement… l’auto exécution.

Il faut aller dans System->Préférences->Sessions puis ajouter un Startup programs avec la commande suivante:

$ sshfs REMOTE_USERNAME@REMOTE_HOSTNAME:/FULL/REMOTE/PATH/ /FULL/LOCAL/MOUNTED/PATH/Drives/web1/ -o reconnect

Vous devinerez comment écrire correctement la commande en l’appliquant a vos besoins.

Oubliez pas de faire sauvegarder votre session GNOME, ALT+F2 puis tapez gnome-session-save puis enter.

Déloguez vous et reloguez vous. En naviguant dans votre homedir, dans le dossier ~/Drives/ vous avez maintenant vos homedirectories sur toutes vos machines distantes… localement!

Considérations
Je tiens pour acquis certains détails dans ce document

  • Une $ devant une commande dans un bloc de code indique que l’on exécute la commande en tant que son user local
  • Un # indique, quant a lui qu’on est en root, on pourrait aussi bien le faire
    $ sudo [commande]
  • Le caractère ~ est un caractère shortcut au lieu de mentionner /home/username
  • Le howto utilise Ubuntu pour l’installation mais le nom du paquetage reste le meme soit fusermount ou sshfs
  • La commande ALT+F2 est un raccourci clavier pour faire exécuter une commande, on pourrait trouver RUN dans le menu aussi.

Références