Modifications entre les versions 2 et 3
Version 2 à la date du 2008-03-03 12:02:53
Taille: 6687
Éditeur: ThomasNoël
Commentaire: c'est beau hein ?
Version 3 à la date du 2008-03-03 12:13:38
Taille: 6701
Éditeur: ThomasNoël
Commentaire: BatchMode=yes dans fstab pour planter quand un mot de passe est requis
Texte supprimé. Texte ajouté.
Ligne 55: Ligne 55:
sshfs#bao.sn.auf: /sshfs/ServeurBAO fuse user,noauto,sshfs_debug,nonempty,compression=yes,reconnect 0 0 sshfs#bao.sn.auf: /sshfs/ServeurBAO fuse user,noauto,sshfs_debug,nonempty,compression=yes,reconnect,BatchMode=yes 0 0

SSHFS est, comme son nom l'indique, un système de fichier utilisant le protole SSH. En fait, il permet d'accéder à ses fichiers stockés sur un serveur distant via le protocole SSH de façon transparent, via un simple répertoire.

Quelques liens pour en savoir plus :

Utilisation dans le cadre AUF

L'idée est de proposer un accès simplifié à leurs fichiers à nos utilisateurs nomades, c'est-à-dire à ceux qui disposent d'un ordinateur portable sur Ubuntu1. Pour les postes fixes, NFS reste nettement plus performant.

Pour que cet accès reste simple et néanmoins bien sécurisé :

  • il faut que le montage soit automatique, mais non-permanent. L'utilisateur doit pouvoir monter et démonter le partage de manière simple et bien intégrée à Ubuntu ;
  • la connexion SSH doit se faire avec une authentification par clé, mais l'utilisateur ne doit pas avoir à entrer de mot de passe sans arrêt ;
  • l'accès SSH ne sera pas disponible en dehors du réseau privé de l'AUF (RPV), si vous désirez proposer un accès externe il faut utiliser

OpenVPN. Un effet secondaire agréable est qu'OpenVPN solutionne le problème des adresses IP changeantes pour un client sur une liaison type ADSL.

Note bien : il ne faut pas ouvrir ce service directement sur Internet. On se le permet pour la messagerie car le contenu est réputé plus volatile et les utilisateurs sont censés le savoir aujourd'hui. Pour leurs fichiers, c'est différent, il peut s'agir de projets en cours, de données beaucoup plus confidentielles qu'il ne s'agit surtout pas de se faire pirater ! En outre, le tracé de l'activité de ce service est délicat, on ne pourra pas détecter et prouver une usurpation comme on peut le faire avec la messagerie. Si vous voulez rendre l'accès aux fichiers disponible depuis n'importe quelle machine sur Internet, ajoutez d'abord une couche de connexion au réseau privé, via OpenVPN.

Préliminaire : configuration au niveau SSH

L'utilisateur doit avoir un compte accessible en SSH sur le serveur sur lequel se trouve ses données. L'accès SSH ne doit être possible que par clé (pas d'authentification par mot de passe). Cependant pour éviter que l'utilisateur ne doive entrer le mot de passe de sa clé privée à chaque montage, on la crypte avec le même mot de passe que pour son compte et on utilise libpam-ssh. La clé sera donc disponible dans l'agent SSH dès la connexion de l'utilisateur (voir explications sur la page de SSH).

Notes :

  • Pour un utilisateur paranoïaque, on peut lui proposer un mot de passe différent pour sa clé privée, mais dans la pratique on sait que cela finira par l'ennuyer : il mettra un mot de passe trivial sur la clé, ou n'utilisera plus le service sshfs ;
  • Lorsque l'utilisateur changera son mot de passe de connexion, il faudra changer celui qui crypte sa clé privée.

Installation et test de SSHFS

  1. Installation :
    # aptitude install sshfs
  2. SSHFS utilisant FUSE, il faut que l'utilisateur ait accès à FUSE. Sur Ubuntu il suffit de l'ajouter au groupe correspondant (voir ici pour le faire de façon générique) :

    # adduser utilisateur fuse
  3. Test, depuis le compte de l'utilisateur :
    $ mkdir serveur               
    $ sshfs bao.sn.auf: serveur   <---- on monte le HOME de bao.sn.auf sur le répertoire serveur
    $ ls serveur                  <---- doit afficher les fichiers de bao.sn.auf:~
  4. Vérifiez les droits, la navigation dans les fichiers, les liens symboliques, etc...
  5. Démontage :
    $ fusermount -u serveur

Automatisation du montage

  1. On indique au système le point de montage :
    # (... extrait de /etc/fstab ...)
    sshfs#bao.sn.auf:    /sshfs/ServeurBAO       fuse    user,noauto,sshfs_debug,nonempty,compression=yes,reconnect,BatchMode=yes 0 0
  2. On créée le point de montage :
    mkdir -p /sshfs/ServeurBAO
    chown root:fuse /sshfs/ServeurBAO
    chmod 770 /sshfs/ServeurBAO

Et c'est tout ! A partir de là, un système de fichier ServeurBAO sera visible dans Nautilus, mais aussi dans les fenêtres de dialogue de Gnome. De plus, un icône disque ServeurBAO s'affichera sur le bureau lors du montage.

Note 1 : pour que les choses soient bien automatiques, idéalement il faut que l'utilisateur ait un login identique sur son poste et sur le serveur. Sinon il faut modifier la ligne du /etc/fstab et la faire commencer par sshfs#login_sur_serveur@bao.sn.auf:. Mais dans ce cas, le système ne fonctionnera que pour cet utilisateur donné, c'est un peu moins élégant comme solution.

Note 2 : on ne passe pas par la solution Se connecter à un serveur... disponible dans Gnome. En effet celle-ci se base sur Gnome et les fichiers ne sont alors disponibles que pour les applications Gnome qui utilisent Gnome-VFS. Avec la solution /etc/fstab, toutes les applications pourront accéder au partage sshfs. Pour aider l'utilisateur avec ses applications on peut éventuellement ajouter un lien symbolique sur son répertoire personnel vers /sshfs/le_repertoire_partagé.

Ca ne marche pas ? C'est normal !

Malheureusement, gnome-vfs est un peu buggué au niveau du lancement du montage SSHFS. Pour une sombre histoire de tty, le montage est effectué... puis tué aussitôt ! Pour corriger cela, on peut mettre en place une solution de surcharge de sshfs insensible aux signaux HUP :

  • # !/bin/sh
    
    # script à placer dans /usr/local/bin/sshfs (il sera appelé à
    # la place de /usr/bin/sshfs). Ne pas oublier de lui donner
    # les droits d'execution : chmod 755 /usr/local/bin/sshfs
    # Note : un simple "nohup sshfs ..." suffirait, mais j'ai préféré
    # ajouter une gestion des erreurs qui permette leur affichage dans
    # Gnome si ça plante...
    
    # fichier où l'on stocke les messages de sortie de nohup
    errlog=`tempfile -p sshfs -s .out`
    
    # lancement du montage
    nohup /usr/bin/sshfs "$@" > $errlog 2>&1
    
    # en cas d'erreur, affichage du probleme
    ret=$?
    if [ $ret != 0 ]; then
            cat $errlog 1>&2
    fi
    
    rm -f $errlog
    exit $ret

Ca marche enfin, la preuve

nautilus.png ouvrir.png icone-bureau.png


Notes de bas de page :

  1. ou MacOS X, mais bon. Pour windows, voir winscp et ses amis. (1)

SSHFS (dernière édition le 2008-08-27 15:36:21 par ThomasNoël)