Comment utiliser SSHFS pour monter des systèmes de fichiers distants via SSH
Introduction
Le transfert de fichiers via une connexion SSH, en utilisant SFTP ou SCP, est une méthode populaire pour déplacer de petites quantités de données entre des serveurs. Dans certains cas, cependant, il peut être nécessaire de partager des répertoires entiers ou des systèmes de fichiers entiers entre deux environnements distants. Bien que cela puisse être accompli en configurant un montage SMB ou NFS, ces deux méthodes nécessitent des dépendances supplémentaires et peuvent introduire des préoccupations de sécurité ou d'autres surcharges.
En alternative, vous pouvez installer SSHFS pour monter un répertoire distant en utilisant uniquement SSH. Cela a l'avantage significatif de ne nécessiter aucune configuration supplémentaire et d'hériter des permissions de l'utilisateur SSH sur le système distant. SSHFS est particulièrement utile lorsque vous devez lire un grand ensemble de fichiers de manière interactive sur une base individuelle.
Conditions préalables
- Deux serveurs Linux qui sont configurés pour permettre un accès SSH entre eux. L'un de ceux-ci peut être une machine locale plutôt qu'un serveur cloud. Vous pouvez y parvenir en suivant notre Guide de Configuration Initiale du Serveur, en vous connectant directement d'une machine à l'autre.
Étape 1 — Installer SSHFS
SSHFS est disponible pour la plupart des distributions Linux. Sur Ubuntu, vous pouvez l'installer en utilisant apt.
Tout d'abord, utilisez apt update pour rafraîchir vos sources de paquets :
- sudo apt update
Ensuite, utilisez apt install pour installer le package sshfs.
- sudo apt install sshfs
Remarque : SSHFS peut être installé sur Mac ou Windows grâce à des bibliothèques de système de fichiers appelées FUSE, qui offrent une interopérabilité avec les environnements Linux. Elles utiliseront des concepts et des détails de connexion identiques à ce tutoriel, mais peuvent nécessiter que vous utilisiez des interfaces de configuration différentes ou installiez des bibliothèques tierces. Ce tutoriel traitera uniquement de SSHFS sur Linux, mais vous devriez pouvoir adapter ces étapes aux implémentations FUSE de Mac ou Windows.
Vous pouvez installer SSHFS pour Windows à partir du dépôt GitHub du projet.
Vous pouvez installer SSHFS pour Mac à partir du projet macFUSE.
Étape 2 — Monter le système de fichiers distant
Chaque fois que vous montez un système de fichiers distant dans un environnement Linux, vous avez d'abord besoin d'un répertoire vide dans lequel le monter. La plupart des environnements Linux comprennent un répertoire appelé /mnt dans lequel vous pouvez créer des sous-répertoires à cet effet.
Remarque : Sur Windows, les systèmes de fichiers distants sont parfois montés avec leur propre lettre de lecteur comme G:, et sur Mac, ils sont généralement montés dans le répertoire /Volumes.
Créez un sous-répertoire dans /mnt appelé droplet en utilisant la commande mkdir :
- sudo mkdir /mnt/droplet
Vous pouvez maintenant monter un répertoire distant en utilisant sshfs.
- sudo sshfs -o allow_other,default_permissions sammy@your_other_server:~/ /mnt/droplet
Les options de cette commande se comportent comme suit :
-oprécède les options de montage diverses (c'est la même chose que lorsqu'on exécute normalement la commandemountpour des montages de disque non-SSH). Dans ce cas, vous utilisezallow_otherpour permettre à d'autres utilisateurs d'accéder à ce montage (de sorte qu'il se comporte comme un montage de disque normal, carsshfsempêche cela par défaut), etdefault_permissions(pour que cela utilise sinon les permissions du système de fichiers habituelles).sammy@your_other_server:~/fournit le chemin complet vers le répertoire distant, y compris le nom d'utilisateur distant,sammy, le serveur distant,your_other_server, et le chemin, dans ce cas~/pour le répertoire personnel de l'utilisateur distant. Cela utilise la même syntaxe que SSH ou SCP./mnt/dropletest le chemin vers le répertoire local utilisé comme point de montage.
Si vous recevez un message Connection reset by peer, assurez-vous que vous avez copié votre clé SSH sur le système distant. sshfs utilise une connexion SSH ordinaire en arrière-plan, et si c'est votre première fois que vous vous connectez au système distant via SSH, il se peut que vous soyez invité à accepter l'empreinte de clé de l'hôte distant.
The authenticity of host '164.90.133.64 (164.90.133.64)' can't be established.
ED25519 key fingerprint is SHA256:05SYulMxeTDWFZtf3/ruDDm/3mmHkiTfAr+67FBC0+Q.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Remarque : Si vous devez monter un répertoire distant en utilisant SSHFS sans nécessiter de permissions sudo, vous pouvez créer un groupe d'utilisateurs appelé fuse sur votre machine locale, en utilisant sudo groupadd fuse, puis en ajoutant votre utilisateur local à ce groupe, en utilisant sudo usermod -a -G fuse sammy.
Vous pouvez utiliser ls pour lister les fichiers dans le répertoire monté afin de vérifier s'ils correspondent au contenu du répertoire distant :
- ls /mnt/droplet
remote_file1 remote_file2
Vous pouvez maintenant travailler avec des fichiers sur votre serveur distant comme s'il s'agissait d'un périphérique physique connecté à votre machine locale. Par exemple, si vous créez un fichier dans le répertoire /mnt/droplet, le fichier apparaîtra sur votre serveur virtuel. De même, vous pouvez copier des fichiers dans ou hors du dossier /mnt/droplet et ils seront téléchargés vers ou depuis votre serveur distant en arrière-plan.
Il est important de noter que la commande mount ne monte un disque distant que pour votre session actuelle. Si le serveur virtuel ou la machine locale est éteint ou redémarré, vous devrez utiliser le même processus pour le remonter.
Si vous n'avez plus besoin de ce montage, vous pouvez le démonter avec la commande umount :
- sudo umount /mnt/droplet
Dans la dernière étape, vous allez passer en revue un exemple de configuration d'un montage permanent.
Étape 3 — Montage permanent du système de fichiers distant
Comme pour d'autres types de montages de disque et de réseau, vous pouvez configurer un montage permanent en utilisant SSHFS. Pour ce faire, vous devrez ajouter une entrée de configuration dans un fichier nommé /etc/fstab, qui gère les montages de systèmes de fichiers Linux au démarrage.
En utilisant nano ou votre éditeur de texte préféré, ouvrez /etc/fstab :
- sudo nano /etc/fstab
À la fin du fichier, ajoutez une entrée comme celle-ci :
…
sammy@your_other_server:~/ /mnt/droplet fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/sammy/.ssh/id_rsa,allow_other,default_permissions 0 0
Les supports permanents nécessitent souvent un certain nombre d'options différentes comme celle-ci pour s'assurer qu'ils fonctionnent comme prévu. Ils fonctionnent comme suit :
sammy@votre_autre_serveur:~/est à nouveau le chemin distant, tout comme auparavant./mnt/dropletest à nouveau le chemin local.fuse.sshfsspécifie le pilote utilisé pour monter ce répertoire distant.noauto,x-systemd.automount,_netdev,reconnectsont un ensemble d'options qui fonctionnent ensemble pour garantir que les montages permanents des lecteurs réseau se comportent de manière élégante en cas de perte de connexion réseau depuis la machine locale ou la machine distante.identityfile=/home/sammy/.ssh/id_rsaspécifie un chemin vers une clé SSH locale afin que le répertoire distant puisse être monté automatiquement. Notez que cet exemple suppose que votre nom d'utilisateur local et votre nom d'utilisateur distant sont tous deuxsammy– cela fait référence au chemin local. Il est nécessaire de spécifier cela parce que/etc/fstabfonctionne effectivement en tant que root et ne saurait autrement quel fichier de configuration SSH de l'utilisateur vérifier pour une clé qui est approuvée par le serveur distant.allow_other,default_permissionsutilise les mêmes permissions que la commandemountci-dessus.0 0signifie que le système de fichiers distant ne doit jamais être sauvegardé ou validé par la machine locale en cas d'erreurs. Ces options peuvent être différentes lors du montage d'un disque local.
Enregistrez et fermez le fichier. Si vous utilisez nano, appuyez sur Ctrl+X, puis lorsque vous y êtes invité, appuyez sur Y puis sur ENTRER. Vous pouvez ensuite tester la configuration de /etc/fstab en redémarrant votre machine locale, par exemple en utilisant sudo reboot now, et en vérifiant que le montage est recréé automatiquement.
Il convient de noter que les montages SSHFS permanents ne sont pas nécessairement populaires. La nature des connexions SSH et d’SSHFS signifie qu'ils sont généralement mieux adaptés à des solutions temporaires et ponctuelles, lorsque vous n'avez pas besoin de vous engager sur un montage SMB ou NFS qui peut être configuré avec plus de redondance et d'autres options. Cela dit, SSHFS est très flexible et, plus important encore, agit comme un véritable pilote de système de fichiers, ce qui vous permet de le configurer dans /etc/fstab comme n'importe quel autre montage de disque et de l'utiliser autant que nécessaire. Faites attention à ne pas exposer accidentellement plus du système de fichiers distant via SSH que ce que vous souhaitez.
Conclusion
Dans ce tutoriel, vous avez configuré un montage SSHFS d'un environnement Linux à un autre. Bien que ce ne soit pas la solution la plus évolutive ou performante pour un déploiement en production, SSHFS peut être très utile avec une configuration minimale.
Ensuite, vous voudrez peut-être en savoir plus sur le travail avec le stockage d'objets qui peut être monté simultanément sur plusieurs serveurs.
