Utilisation des montages SSHFS sécurisés sur GNU/Linux

I. Présentation

Au travers de ce tutoriel, je vous propose de mettre en œuvre un système de fichiers SSH. Le système SSHFS est un système de fichiers client, basé sur l’utilitaire FUSE, permettant de monter des répertoires distants, au travers d’une connexion SSH. Ce mécanisme utilise le protocole SFTP qui est un sous-système de SSH et est activé, par défaut, sur la plupart des serveurs ssh.


REMARQUE : comme SSHFS s’appuie sur le protocole SFTP, toutes les données transmises entre le serveur et le client doivent être chiffrées et déchiffrées à la volée. Ceci implique donc que les performances de ce mécanisme sont moindres, par rapport à un montage NFS. De plus, cela accroît l’utilisation de la CPU, à la fois sur le serveur et sur le client.

Toutefois, comparé aux autres protocoles système en réseau, tels que NFS ou SAMBA, l’énorme avantage de SSHFS, c’est qu’il n’est pas nécessaire d’effectuer une quelconque configuration du côté du serveur. Pour mettre SSHFS en œuvre, il suffit simplement d’accéder au serveur distant via SSH depuis le client.

De plus, SSHFS peut être utilisé indifféremment sur GNU/Linux, MacOS ou même Microsoft Windows. Dans ce tutoriel nous activerons sshfs sur un serveur Gnu/Linux pour une distribution CentOS7.

II. Installation de SSHFS

Sur une distribution CentOS7 (et autres distributions type Red Hat), il suffit simplement d’exécuter la commande suivante pour installer sshfs :

# yum install sshfs

Il va sans dire que pour une distribution type Debian, on exécutera plutôt les commandes suivantes :

$ sudo apt update
$ sudo apt install sshfs

Dès lors que le package est installé, il ne reste donc plus qu’à l’utiliser. Dans le chapitre suivant, nous verrons les différentes opérations de montage et démontage d’un système de fichier SSHFS.

III. Utilisation de SSHFS

Afin de monter un répertoire distant, l’utilisateur SSH a besoin d’y accéder via la commande ssh. La commande de montage SSHFS est généralement de la forme suivante :

$ sshfs [<User>]@<Host>:[<Remote>] <Montage> [Options]

Ainsi, la commande sshfs lira le fichier de configuration SSH en utilisant les paramètres courants. Lorsque l’on ne précise pas le répertoire distant <Remote>, par défaut, l’accès sera effectué sur le répertoire d’accueil de l’utilisateur distant.

Par exemple, pour réaliser le montage du répertoire d’accueil de l’utilisateur phil d’un hôte distant ayant l’adresse IP 192.168.1.100, il faut créer le répertoire devant servir de point de montage sur le client:

# mkdir /usr/share/phil

Ensuite, il ne reste plus qu’à exécuter la commande sshfs de montage du répertoire distant ci-dessous, sur la machine cliente :

$ sshfs phil@192.168.1.100:/home/phil /usr/share/phil

Comme pour toute connexion SSH, il nous sera demandé le mot de passe de l’utilisateur concerné. Si l’on souhaite éviter de saisir systématiquement ce mot de passe, on peut générer une paire de clé privée/publique pour l’utilisateur concerné (ici, dans l’exemple, il s’agit de l’utilisateur phil) et ajouter la clé publique en fin de fichier authorized_keys sur l’hôte distant. La copie de la clé publique peut se faire via l’utilitaire ssh-copy-id :

$ ssh-copy-id <User>@<Host>

REMARQUE: pour ce transfert de clé, le mot de passe nous sera réclamé une dernière fois. Mais, dès lors que la clé publique est intégrée au fichier mentionné ci-dessus, on pourra effectuer autant de connexion sur le compte de l’utilisateur que souhaité, sans pour autant saisir un quelconque mot de passe.

On peut alors interagir avec le répertoire distant directement, comme si celui-ci se trouvait en local. Il devient alors possible d’y éditer des fichiers, ou d’en créer/supprimer autant que l’on souhaite.

Maintenant, afin d’automatiser l’opération de montage de ce système de fichiers sécurisé, on peut bien évidemment éditer le fichier /etc/fstab pour y ajouter l’occurrence de notre nouveau montage comme décrit ci-dessous:

phil@192.168.1.100:/home/phil /usr/share/phil fuse.sshfs defaults 0 0

ATTENTION : lorsque l’on insère ce genre de règle dans le fichier /etc/fstab, il faut s’assurer que l’on gère correctement la connexion sans mot de passe vue précédemment en insérant la clé publique de l’utilisateur dans le fichier authorized_keys de l’hôte distant.

Le démontage d’un système de fichier SSHFS peut utiliser à la fois la commande umount mais également la commande fusermount selon les modèles suivants :

$ fusermount -u /usr/share/phil

Ou

$ umount /usr/share/phil

 

IV. Conclusion

Dans ce tutoriel, nous avons vu comment utiliser les systèmes de fichiers SSHFS pour monter (ou démonter) un répertoire distant sur SSH. Cela peut être utile lorsque l’on souhaite interagir avec des fichiers ou répertoires distants, utilisant des applications de la machine locale.

Par ailleurs, à des fins de sécurisation des flux, on peut parfaitement cantonner les accès utilisateurs à leur répertoire d’accueil, en initialisant une prison chroot du service SFTP et en changeant le port de service SSH par défaut, par une autre valeur.

Ce genre de fonctionnalité permet d’ajouter une couche de sécurité à des applications transverses, tout en autorisant une grande flexibilité d’utilisation et une meilleure traçabilité des actions. Cela devrait faire plaisir à votre RSSI!

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Philippe PIERRE

A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.

    philippe-pierre has 53 posts and counting.See all posts by philippe-pierre

    2 pensées sur “Utilisation des montages SSHFS sécurisés sur GNU/Linux

    • SSHFS est en effet très pratique dans bien des cas, mais il faut que les utilisateurs aient bien conscience qu’il n’y a aucune notion d’accès concurrent. Donc si un répertoire est monté sur deux machines par deux utilisateurs et que les deux, pour une quelconque raison, modifient le même fichier… que le meilleur gagne !

      Mais en dehors de ce cas de dossier partagé problématique, pour monter un répertoire de son petit vps perso, c’est vraiment très très pratique.

      Répondre
    • Bonjour,

      Tout à fait. Mais, dans ce genre de cas de montage en simultané, il vaut mieux utiliser un NAS (généralement, ces équipements fournissent eux-mêmes des solutions sécurisées pour les montages parallèles).
      Sinon, tout à fait d’accord avec vous. dans la majeure partie des utilisations, les montages SSHFS sont vraiment très pratique.

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

     

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.