Recherche de site Web

Comment installer et utiliser SSHFS sur Linux


Comment installer et utiliser SSHFS sur Linux

Sur cette page

  1. Conditions préalables
  2. Installer SSHFS sur votre ordinateur local
  3. Basique : Monter et démonter en utilisant SSHFS
  4. Configurer Chroot sur SSHFS
  5. Dépannage
  6. Conclusion

SSHFS (Système de fichiers SSH) est une implémentation d'un système de fichiers dans l'espace utilisateur (FUSE) qui permet aux clients de monter un système de fichiers distant via une connexion SSH. SSHFS utilise le protocole de transfert de fichiers SSH (SFTP) pour monter le système de fichiers distant sur la machine cliente, et les connexions entre le client et le serveur sont sécurisées et cryptées.

SSHFS peut être utilisé comme alternative au protocole FTP traditionnel. Il est sécurisé par défaut grâce à la connexion SSH et aucun paquet ou configuration supplémentaire n'est nécessaire. SSHFS fonctionne avec une simple configuration SSH par défaut.

Dans ce tutoriel, vous apprendrez comment monter un répertoire distant de manière sécurisée en utilisant SSHFS entre deux machines Linux (client et serveur). Ce guide comprend également comment configurer chroot sur SSHFS, ce qui empêchera les utilisateurs d'accéder aux répertoires d'autres utilisateurs.

Conditions préalables

Pour suivre ce guide, vous aurez besoin de deux machines Linux, un client et un serveur. Vous pouvez utiliser n'importe quelle distribution Linux, et assurez-vous que le serveur dispose d'un serveur OpenSSH installé, et que vous avez un utilisateur non-root avec des privilèges sudo.

Installer SSHFS sur votre ordinateur local

Par défaut, les paquets SSHFS sont disponibles sur la plupart des distributions Linux, y compris Debian/Ubuntu, RHEL/CentOS/Rocky, et ArchLinux/Manjaro. Vous pouvez facilement l'installer en utilisant le gestionnaire de paquets de votre système. Dans cette section, vous allez installer SSHFS sur votre machine locale/client.

Tout d'abord, mettez à jour votre liste d'index de paquets en exécutant la commande suivante.

For Debian/Ubuntu
sudo apt update
For RHEL/CentOS/RockyLinux
sudo dnf check-update
For ArchLinux/Manjaro
sudo pacman -Syu

Après la mise à jour de votre index de paquets, installez le paquet SSHFS en utilisant votre gestionnaire de paquets comme ci-dessous. Sur les distributions Debian et Archlinux, le paquet s'appelle '<strong>sshfs</strong>', mais sur les distributions basées sur RHEL, le paquet s'appelle '<strong>fuse-sshfs</strong>.'

For Debian/Ubuntu
sudo apt install sshfs
For RHEL/CentOS/RockyLinux
sudo dnf install fuse-sshfs
For ArchLinux/Manjaro
sudo pacman -S sshfs

Maintenant que vous avez terminé l'installation du paquet SSHFS sur votre machine locale. Ensuite, vous apprendrez la commande de base pour monter et démonter un répertoire/partition distant sur votre machine locale en utilisant la commande SSHFS.

Basique : Monter et démonter en utilisant SSHFS

Avant de commencer avec la commande SSHFS, assurez-vous d'avoir un serveur Linux avec OpenSSH installé et activé. Pour l'authentification de l'utilisateur au serveur, vous pouvez utiliser l'authentification par mot de passe SSH ou l'authentification par clé SSH. Cependant, vous pouvez envisager d'utiliser l'authentification par clé SSH, qui est plus sécurisée que l'authentification par mot de passe.

Dans cette section, vous apprendrez la commande de base de 'sshfs' pour monter un répertoire/partition distant depuis le serveur vers la machine locale/client. De plus, vous apprendrez comment démonter sshfs de votre machine locale.

1. La commande de base de 'sshfs' pour monter un répertoire sur la machine locale via le protocole SSH est ci-dessous.

sshfs user@server-ip:/remote/directory /local/directory

En pratique, montez le répertoire distant '/srv/data' du serveur '172.16.1.10' vers le répertoire local '~/data'. Cet exemple utilise l'utilisateur SSH 'johndoe'.

sshfs [email :/srv/data ~/data

Maintenant, vous serez invité à vous authentifier par mot de passe si vous utilisez l'authentification par mot de passe pour votre SSH.

Pour vérifier, exécutez la commande 'ls' dans le répertoire '~/data' sur la machine locale.

ls -lah ~/data

Vous verrez une liste de fichiers du serveur distant sur votre machine locale.

2. Maintenant, pour démonter le répertoire distant de votre machine locale, exécutez la commande 'fusermount' comme ci-dessous. Cette commande est utilisée pour monter et démonter les systèmes de fichiers FUSE.

fusermount -u ~/data

3. Un autre exemple de la commande 'sshfs' qui pourrait vous intéresser.

La commande 'sshfs' avec l'option de débogage '-d'. Chaque fois que vous rencontrez des problèmes avec la commande 'sshfs', utilisez l'option supplémentaire '-d' pour afficher tous les messages de débogage lors de la connexion au serveur.

sshfs user@server-ip:/remote/directory /local/directory -d

Maintenant, si vous exécutez un serveur avec un port SSH non standard, vous pouvez ajouter l'option '-p' suivie de votre port SSH.

sshfs user@server-ip:/remote/directory /local/directory -C -p 2222

L'option '-C' activera la compression, équivalente à l'option '-o compression=yes' dans la commande ssh.

Pour une référence complète, vous pouvez utiliser l'option '--help' ou consulter la page de manuel SSHFS.

sshfs --help
man sshfs

Configurer Chroot sur SSHFS

Dans cette section, vous apprendrez comment activer chroot sur SSHFS, ce qui peut être réalisé en configurant le serveur SSH et en spécifiant l'utilisateur et le répertoire. L'environnement chroot limitera l'accès au répertoire, mais votre utilisateur pourra toujours lire et écrire dans le répertoire de montage.

1. Tout d'abord, vous allez créer un nouveau répertoire chroot pour votre utilisateur et autoriser l'accès en lecture et en écriture. Dans ce guide, vous allez créer un nouveau répertoire partagé '/srv/shared', puis créer un nouveau répertoire personnel et un répertoire de données pour chaque utilisateur.

Exécutez la commande suivante pour créer un nouveau répertoire partagé principal '/srv/shared' et changez la propriété pour l'utilisateur et le groupe 'root'.

mkdir -p /srv/shared
sudo chown -R root:root /srv/shared

2. Maintenant, créez un autre répertoire pour chaque utilisateur sous le répertoire '/srv/shared'. Et assurez-vous de changer la propriété de ce répertoire à l'utilisateur et au groupe 'root'.

mkdir -p /srv/shared/johndoe
sudo chown -R root:root /srv/shared/johndoe

3. Ensuite, créez le répertoire 'data' à l'intérieur du répertoire personnel de l'utilisateur '/srv/shared/johndoe'. Puis, changez la propriété de ce répertoire à l'utilisateur 'root' et au groupe 'johndoe'. Enfin, permettez au groupe 'johndoe' de lire et d'écrire dans ce répertoire.

mkdir -p /srv/shared/johndoe/data
sudo chown -R root:johndoe /srv/shared/johndoe/data
sudo chmod g+rwx /srv/shared/johndoe/data

Maintenant, vous pouvez monter le répertoire distant '/data', mais il est équivalent au répertoire '/srv/shared/johndoe/data' sur le serveur.

4. Après avoir créé le répertoire chroot pour votre utilisateur, vous devrez modifier la configuration SSH '/etc/ssh/sshd_config'. Modifiez-le en utilisant nano ou votre éditeur de texte préféré.

sudo nano /etc/ssh/sshd_config

Ajoutez les lignes suivantes au fichier.

Subsystem sftp internal-sftp
Match User johndoe 
       ChrootDirectory /srv/shared/%u
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no

La configuration 'internal-sftp' permettra à SSH d'agir également en tant que serveur SFTP. Ensuite, définissez le 'ChrootDirectory' pour l'utilisateur 'johndoe' sur le répertoire '/srv/shared/%u'. Le '%u' signifie comme nom d'utilisateur.

Enregistrez et fermez le fichier.

5. Ensuite, exécutez la commande suivante pour vérifier la configuration SSH, et assurez-vous de ne pas avoir d'erreurs de syntaxe. Ensuite, redémarrez le service SSH pour appliquer la nouvelle configuration.

sudo sshd -t
sudo systemctl restart sshd

6. Maintenant, revenons à la machine cliente/local, puis montez le répertoire distant dans l'environnement chroot. Vous devriez utiliser le répertoire '/data', au lieu du chemin complet '/srv/shared/johndoe/data'. Et vous avez les privilèges de lire, d'écrire et d'exécuter dans le répertoire 'data'.

sshfs user@server-ip:/data ~/data

Pour vérifier l'accès en écriture, créez un nouveau fichier sur votre machine cliente en utilisant la commande suivante.

cd ~/data
echo "This file from client machine" >> another-file.md

Maintenant, retournez au serveur, naviguez vers le répertoire '/srv/shared/johndoe/data', vérifiez le fichier disponible dans ce répertoire.

cd /srv/shared/johndoe/data/
ls
cat another-file.md

Vous verrez le fichier que vous venez de créer depuis la machine cliente.

Dans cette section, vous avez créé le répertoire chroot pour les utilisateurs SSHFS et configuré le service SSH pour activer chroot.

Dépannage

Si vous obtenez une erreur lors de la connexion SSHFS, vous pouvez dépanner votre connexion en utilisant les méthodes suivantes.

Vous pouvez utiliser le mode débogage avec l'option '-d'. Avec cette option, vous verrez les journaux de votre connexion dans votre terminal shell.

Exécutez la commande 'sshfs' en mode debug comme ci-dessous.

sshfs user@server-ip:/data ~/mnt -d

Une autre méthode que vous pouvez essayer est de vérifier le journal SSH sur votre serveur. Avant d'utiliser la commande 'sshfs', ouvrez un nouveau terminal et connectez-vous à votre serveur, puis exécutez la commande 'tail' pour vérifier le service de journal SSH.

Sur un système basé sur Ubuntu/Debian, le journal SSH est disponible à '<em>/var/log/auth.log</em>'. Et pour un système basé sur RHEL/CentOS, le journal SSH est disponible à '<em>/var/log/secure</em>.'

For Ubuntu/Debian
tail -f /var/log/auth.log
For RHEL/CentOS
tail -f /var/log/secure

Conclusion

Félicitations ! Vous avez maintenant appris à utiliser SSHFS pour monter un répertoire distant depuis le serveur sur votre machine locale. De plus, vous avez appris à configurer un environnement chroot sur SSHFS et à dépanner votre connexion SSHFS.