Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sshfs [Le 18/06/2025, 20:45]
krodelabestiole les scripts de cette doc ne sont pas audités et pas tenu à jour, ils ont leurs place sur des forges git par ex.
sshfs [Le 19/06/2025, 18:24] (Version actuelle)
krodelabestiole mise en forme
Ligne 3: Ligne 3:
 ====== SSH Filesystem ====== ====== SSH Filesystem ======
  
-SshFS sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion [[SSH]], le tout avec des droits utilisateur. +**[[wpfr>​SSHFS]]** ​sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion [[:SSH]], le tout avec des droits utilisateur. 
-L'​avantage est de manipuler les données distantes avec n'​importe quel gestionnaire de fichier (Nautilus, Konqueror, ROX, ou même la ligne de commande), ce qui est bien plus pratique que la commande scp couplée avec ssh+L'​avantage est de manipuler les données distantes avec n'​importe quel gestionnaire de fichier ([[:Nautilus|GNOME Fichiers]], Konqueror, ROX, ou même la ligne de commande), ce qui est bien plus pratique que la commande ​''​[[man>​scp]]'' ​couplée avec [[:SSH]]
-SshFS apporte ce qui pouvait manquer à certains utilisateurs Windows qui utilisaient WinSCP.+**SSHFS** ​apporte ce qui pouvait manquer à certains utilisateurs Windows qui utilisaient WinSCP. 
 + 
 +<note warning>​ 
 +Les performances de **SSHFS** semblent être très en dessous de celles proposées par ''​[[:​rclone#​montage|rclone mount]]''​.((**(//​en//​)** //​[[https://​obviy.us/​blog/​comparing-sshfs-rclone-mount/​|To sshfs or to rclone mount? ]]//)) 
 + 
 +On peut donc considérer que **SSHFS** est aujourd'​hui obsolète. 
 +</​note>​
  
 ===== Pré-requis ===== ===== Pré-requis =====
Ligne 15: Ligne 21:
 ===== Installation ===== ===== Installation =====
  
-Il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] ​**[[apt>​sshfs]]**+Il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] ​''​[[apt>​sshfs]]''​.
  
 Il est probable, surtout si vous utilisez l'​authentification ssh par certificat, que vous deviez redémarrer la machine... Il est probable, surtout si vous utilisez l'​authentification ssh par certificat, que vous deviez redémarrer la machine...
Ligne 21: Ligne 27:
 Vous obtiendrez l'​erreur //failed to open /dev/fuse: Permission denied// si les points précédents ne sont pas vérifiés. Vous obtiendrez l'​erreur //failed to open /dev/fuse: Permission denied// si les points précédents ne sont pas vérifiés.
  
-Voilà, vous pouvez utiliser ​SshFS !+Voilà, vous pouvez utiliser ​SSHFS !
  
 ===== Utilisation en mode console ===== ===== Utilisation en mode console =====
  
 Rien de plus simple maintenant : Rien de plus simple maintenant :
-  ​~$ mkdir tmp +  mkdir tmp 
-  ​~$ sshfs toto@lecole.fr:​Document/​Blagues tmp+  sshfs toto@lecole.fr:​Document/​Blagues tmp
   ​   ​
 Ou plus généralement : Ou plus généralement :
-       sshfs [user@]host:​[dir] mountpoint [options]+  ​sshfs [user@]host:​[dir] mountpoint [options]
  
 Pour démonter, vérifier que rien n'​accède au point de montage (fichier ouvert ou gestionnaire de fichier), et effectuer la commande : Pour démonter, vérifier que rien n'​accède au point de montage (fichier ouvert ou gestionnaire de fichier), et effectuer la commande :
-  ​~$ fusermount -u tmp+  fusermount -u tmp
  
 <​note>​ <​note>​
 Si vous avez l'​erreur suivante : **fuse: bad mount point `tmp': Transport endpoint is not connected**,​ le point de montage st probablement déjà utilisé. Si vous avez l'​erreur suivante : **fuse: bad mount point `tmp': Transport endpoint is not connected**,​ le point de montage st probablement déjà utilisé.
 Pour le libérer (démontage),​ exécutez la commande suivante : Pour le libérer (démontage),​ exécutez la commande suivante :
-<​code>​fusermount -u tmp</​code>​ ou <​code>​sudo umount tmp</​code> ​+<​code>​fusermount -u tmp</​code>​ ou <​code>​sudo umount tmp</​code> ​
 Relancer la procédure ci-dessus (sans la partie **mkdir**, bien entendu.) Relancer la procédure ci-dessus (sans la partie **mkdir**, bien entendu.)
 </​note>​ </​note>​
  
 <​note>​ <​note>​
-Si vous obtenez l'​erreur ​obscure ​suivante : **fuse: bad mount point `tmp': Too many levels of symbolic links**, il faut vous connecter au moins une fois au serveur distant en tant que root (de la machine locale), par exemple avec **sudo** +Si vous obtenez l'​erreur suivante : ''​fuse: bad mount point `tmp': Too many levels of symbolic links''​, il faut vous connecter au moins une fois au serveur distant en tant que root (de la machine locale), par exemple avec ''​[[:​sudo]]'' ​
-<​code>​sudo ssh  toto@lecole.fr</​code>​ +<​code>​sudo ssh  toto@lecole.fr</​code>​ 
-Ceci permet d'​ajouter la clé publique du root local sur le serveur distant (sachant que c'est root qui monte les répertoires au démarrage). Plus d'​infos [[https://​blog.luukhendriks.eu/​2019/​01/​25/​sshfs-too-many-levels-of-symbolic-links.html|ici]].+Ceci permet d'​ajouter la clé publique du root local sur le serveur distant (sachant que c'​est ​//root// qui monte les répertoires au démarrage). Plus d'​infos [[https://​blog.luukhendriks.eu/​2019/​01/​25/​sshfs-too-many-levels-of-symbolic-links.html|ici]].
 </​note>​ </​note>​
  
 **Remarque 1 : ** **Remarque 1 : **
 Il arrive que le répertoire monté ait un autre user.group que ceux attendus sur le client. ​ C'est que ce sont les uid et gid en chiffres qui sont passés et qu'ils ne correspondent pas toujours aux mêmes utilisateurs et groupes sur le serveur et sur le client. ​ Utiliser les options : Il arrive que le répertoire monté ait un autre user.group que ceux attendus sur le client. ​ C'est que ce sont les uid et gid en chiffres qui sont passés et qu'ils ne correspondent pas toujours aux mêmes utilisateurs et groupes sur le serveur et sur le client. ​ Utiliser les options :
- +  ​sshfs -o uid=xxxx -o gid=yyyy [user@]host:​[dir] mountpoint [options]
-  $ sshfs -o uid=xxxx -o gid=yyyy [user@]host:​[dir] mountpoint [options]+
  
 **Remarque 2 : ** **Remarque 2 : **
Ligne 84: Ligne 89:
 ===== Montage à la connexion ===== ===== Montage à la connexion =====
  
-Une autre possibilité est de monter le disque à la connexion de l'​utilisateur. Cela peut être très utile lorsque la connexion ne se fait pas immédiatement (Connexion Wifi e.g.), et représente une alternative à Autofs (cf ci-dessous).+Une autre possibilité est de monter le disque à la connexion de l'​utilisateur. Cela peut être très utile lorsque la connexion ne se fait pas immédiatement (connexion wifi par ex.), et représente une alternative à Autofs (cf ci-dessous).
  
-Pour ce faire, ​ [[:​tutoriel:​comment_modifier_un_fichier|créez le fichier]] ​**/​usr/​bin/​monterSSHFS** en mode [[:sudo|sudo]]: +Pour ce faire, [[:​tutoriel:​comment_modifier_un_fichier|créez le fichier]] ​''​/​usr/​bin/​monterSSHFS'' ​en mode [[:​sudo]]:​ 
- +<file - monterSSHFS>
-<code>+
 #!/bin/bash #!/bin/bash
 sleep 15 sleep 15
 sshfs <​user>​@<​serveur>:/​répertoire/​distant /​Point/​de/​montage sshfs <​user>​@<​serveur>:/​répertoire/​distant /​Point/​de/​montage
-</code>+</file>
  
 Modifiez les droits du fichier pour le rendre exécutable:​ Modifiez les droits du fichier pour le rendre exécutable:​
- +  ​sudo chmod 0755 /​usr/​bin/​monterSSHFS
-<​code>​ +
-~$ sudo chmod 0755 /​usr/​bin/​monterSSHFS +
-</​code>​+
  
 La commande //sleep 15// permet d'​attendre que le réseau soit bien monté. Elle peut être réduite en cas de réseau filaire. La commande //sleep 15// permet d'​attendre que le réseau soit bien monté. Elle peut être réduite en cas de réseau filaire.
  
-Ensuite, [[:​ssh#​authentification_par_un_systeme_de_cles_publiqueprivee|créez une clef ssh avec passphrase vide]] (ça permettra de lancer la connexion sans avoir à attendre SSH-Askpass.+Ensuite, [[:​ssh#​authentification_par_un_systeme_de_cles_publiqueprivee|créez une clef SSH avec passphrase vide]] (ça permettra de lancer la connexion sans avoir à attendre SSH-Askpass.
  
-Enfin, ajoutez le fichier ​**/​usr/​bin/​monterSSHFS** aux actions de démarrage. Et roulez jeunesse !+Enfin, ajoutez le fichier ​''​/​usr/​bin/​monterSSHFS'' ​aux actions de démarrage. Et roulez jeunesse !
  
 Vous pouvez ainsi monter un nombre quasi-illimité de répertoires. Attention tout de même la connexion est permanente et consomme des ressources (limitées). Vous pouvez ainsi monter un nombre quasi-illimité de répertoires. Attention tout de même la connexion est permanente et consomme des ressources (limitées).
Ligne 110: Ligne 111:
 ===== Autofs ===== ===== Autofs =====
  
-Le montage manuel ou par fstab a plusieurs inconvénients.+Le montage manuel ou par ''/​etc/​fstab'' ​a plusieurs inconvénients.
 Le principal, c'est qu'il n'est pas toujours possible de rendre le montage automatique : Si lors du montage vous n'​êtes pas encore connecté (en wifi par exemple), et bien le montage ne se fait pas, et il faut effectuer le montage manuellement. Le principal, c'est qu'il n'est pas toujours possible de rendre le montage automatique : Si lors du montage vous n'​êtes pas encore connecté (en wifi par exemple), et bien le montage ne se fait pas, et il faut effectuer le montage manuellement.
 Un autre inconvénient,​ moins important, est que même si vous n'​utilisez pas les répertoires montés, ils restent montés et consomment des ressources. Un autre inconvénient,​ moins important, est que même si vous n'​utilisez pas les répertoires montés, ils restent montés et consomment des ressources.
Ligne 116: Ligne 117:
 **autofs** permet de résoudre ces 2 problèmes. **autofs** permet de résoudre ces 2 problèmes.
  
-<​note>​Une autre alternative est d'​ajouter ​**_netdev** et de supprimer le paramètre ​**noauto** à la fin de la ligne de son fstab ce qui donnera alors: +<​note>​Une autre alternative est d'​ajouter ​''​_netdev'' ​et de supprimer le paramètre ​''​noauto'' ​à la fin de la ligne de ''/​etc/​fstab'' ​ce qui donnera alors: 
-<code>​sshfs#​user@machine:/​répertoire/​distant ​               /​mnt/​mon_rep ​         fuse            port=22,​user,​noatime,​allow_other,​_netdev ​    0 0</code>+<file - fstab>​sshfs#​user@machine:/​répertoire/​distant ​               /​mnt/​mon_rep ​         fuse            port=22,​user,​noatime,​allow_other,​_netdev ​    0 0</file>
 L'​installation d'​Autofs devient donc inutile. L'​ajout du paramètre **_netdev** dit à l'​ordinateur:​ "​Attention ce répertoire que tu veux monter est un répertoire réseau, il faut donc que tu attendes de t'​être bien connecté avant d'​essayer de le monter"</​note>​ L'​installation d'​Autofs devient donc inutile. L'​ajout du paramètre **_netdev** dit à l'​ordinateur:​ "​Attention ce répertoire que tu veux monter est un répertoire réseau, il faut donc que tu attendes de t'​être bien connecté avant d'​essayer de le monter"</​note>​
  
 ==== Installation d'​autofs ==== ==== Installation d'​autofs ====
  
-Pour l'​installer,​ il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] ​**[[apt>​fuse]]****[[apt>​autofs]]** et **[[apt>​sshfs]]**+Pour l'​installer,​ il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] ​''​[[apt>​fuse]]''​''​[[apt>​autofs]]'' ​et ''​[[apt>​sshfs]]''​.
  
 ==== Configuration d'​autofs ==== ==== Configuration d'​autofs ====
Ligne 133: Ligne 134:
 Le problème avec autofs, c'est qu'il s'​exécute en root. Il faut donc créer une paire de clés publiques/​privées pour l'​utilisateur root sur le client: Le problème avec autofs, c'est qu'il s'​exécute en root. Il faut donc créer une paire de clés publiques/​privées pour l'​utilisateur root sur le client:
 <​code>​sudo ssh-keygen -t rsa</​code>​ <​code>​sudo ssh-keygen -t rsa</​code>​
-et l'​autoriser sur le serveur en rajoutant le contenu ​///​root/​.ssh/​id_rsa.pub// du poste client dans //~/​.ssh/​authorized_keys// du poste serveur, pour chaque compte utilisateur auquel il sera possible de se connecter.+et l'​autoriser sur le serveur en rajoutant le contenu ​''​/​root/​.ssh/​id_rsa.pub'' ​du poste client dans ''​~/​.ssh/​authorized_keys'' ​du poste serveur, pour chaque compte utilisateur auquel il sera possible de se connecter.
  
 <​code>​sudo ssh-copy-id -i /​root/​.ssh/​id_rsa.pub <​utilisateur>​@<​ip serveur></​code>​ <​code>​sudo ssh-copy-id -i /​root/​.ssh/​id_rsa.pub <​utilisateur>​@<​ip serveur></​code>​
  
 === Désactiver le montage dans fstab === === Désactiver le montage dans fstab ===
-Maintenant que les problèmes de connexions ​ssh sont résolus, supprimez (ou commentez) dans ///etc/fstab// les montages que vous voulez gérer par **autofs** (si vous en aviez écrit auparavant).+ 
 +Maintenant que les problèmes de connexions ​[[:​SSH]] ​sont résolus, supprimez (ou commentez) dans ''​/etc/fstab'' ​les montages que vous voulez gérer par **autofs** (si vous en aviez écrit auparavant).
  
 === Récupération des userid et groupe === === Récupération des userid et groupe ===
-Afin d'​être propriétaire des répertoires qui vont être créés automatiquement par autofs, nous allons récupérer l'​userid de l'​utilisateur :+ 
 +Afin d'​être propriétaire des répertoires qui vont être créés automatiquement par autofs, nous allons récupérer l''​'​userid'' ​de l'​utilisateur :
 <​code>​benoit@Jack:​~$ cat /etc/passwd | grep benoit <​code>​benoit@Jack:​~$ cat /etc/passwd | grep benoit
 benoit:​x:​1000:​1000:​Benoit,,,:/​home/​benoit:/​bin/​bash benoit:​x:​1000:​1000:​Benoit,,,:/​home/​benoit:/​bin/​bash
Ligne 148: Ligne 151:
 === Ajout des montages === === Ajout des montages ===
  
-Ensuite, [[:​tutoriel:​comment_modifier_un_fichier|éditez le fichier]] ​**/​etc/​auto.master**, pour y ajouter la ligne : +Ensuite, [[:​tutoriel:​comment_modifier_un_fichier|éditez le fichier]] ​''​/​etc/​auto.master''​, pour y ajouter la ligne : 
-<​file>/​net ​  /​etc/​auto.sshfs ​ uid=1000,​gid=1000,​ --timeout=30,​ --ghost</​file>​ +<​file ​- auto.master>/​net ​  /​etc/​auto.sshfs ​ uid=1000,​gid=1000,​ --timeout=30,​ --ghost</​file>​ 
-L'​option ghost permet de toujours afficher les répertoires,​ même lorsqu'​ils ne sont pas montés. Il ne reste plus qu'à double-cliquer dessus dans le navigateur pour les monter automatiquement.+L'​option ​''​%%--%%ghost'' ​permet de toujours afficher les répertoires,​ même lorsqu'​ils ne sont pas montés. Il ne reste plus qu'à double-cliquer dessus dans le navigateur pour les monter automatiquement.
  
-Créez alors un fichier ​**/​etc/​auto.sshfs** +Créez alors un fichier ​''​/​etc/​auto.sshfs'' ​
-<​file>​monRepertoire -fstype=fuse,​port=22,​rw,​allow_other :​sshfs\#​votrelogin@192.168.0.1\:/​media/​share</​file>​ +<​file ​- auto.sshfs>​monRepertoire -fstype=fuse,​port=22,​rw,​allow_other :​sshfs\#​votrelogin@192.168.0.1\:/​media/​share</​file>​ 
-Le montage se fera alors dans ///​net/​monRepertoire// et pointera vers la machine ​//192.168.0.1// sur le répertoire ​///​media/​share//.+Le montage se fera alors dans ''​/​net/​monRepertoire'' ​et pointera vers la machine ​''​192.168.0.1'' ​sur le répertoire ​''​/​media/​share''​.
 Vous pouvez dans ce même fichier écrire plusieurs lignes pour chacun de vos points de montage. Vous pouvez dans ce même fichier écrire plusieurs lignes pour chacun de vos points de montage.
  
 Autre exemple : Autre exemple :
-<​file>​ZIK-portable -fstype=fuse,​rw,​nodev,​nonempty,​noatime,​allow_other,​max_read=65536 :​sshfs\#​benoit@192.168.1.110\:/​musique</​file>​ +<​file ​- auto.sshfs>​ZIK-portable -fstype=fuse,​rw,​nodev,​nonempty,​noatime,​allow_other,​max_read=65536 :​sshfs\#​benoit@192.168.1.110\:/​musique</​file>​ 
-Le montage se fera dans ///​net/​ZIK-portable// et pointera vers la machine ​//192.168.1.110// sur le répertoire ​//musique//.+Le montage se fera dans ''​/​net/​ZIK-portable'' ​et pointera vers la machine ​''​192.168.1.110'' ​sur le répertoire ​''​/musique''​.
  
 === Lancer le serveur === === Lancer le serveur ===
Ligne 170: Ligne 173:
 === Gestion de la passphrase === === Gestion de la passphrase ===
  
-Si vous avez défini une passphrase pour la clé de l'​utilisateur root, vous devrez enregistrer auparavant (une seule fois pour chaque session) cette clé dans l'​user-agent,​ par ssh-add.+Si vous avez défini une //passphrase// pour la clé de l'​utilisateur ​//root//, vous devrez enregistrer auparavant (une seule fois pour chaque session) cette clé dans l'//user-agent//, par ''​ssh-add''​.
  
-Malheureusement,​ après avoir entré une clé dans ssh-add, il faut relancer le serveur autofs:+Malheureusement,​ après avoir entré une clé avec ''​ssh-add''​, il faut relancer le serveur ​''​autofs'' ​:
 <​code>​sudo restart autofs</​code>​ <​code>​sudo restart autofs</​code>​
 ou ou
Ligne 183: Ligne 186:
 ==== 1re méthode : fusauto ==== ==== 1re méthode : fusauto ====
  
-À exploiter directement depuis votre gestionnaire de fichier, voir la documentation [[fusauto]].+À exploiter directement depuis votre gestionnaire de fichier, voir la documentation [[:fusauto]].
  
-{{ application:​xsshfs_0.4.png?​300}}+{{application:​xsshfs_0.4.png?​300}}
  
 ==== 2e méthode : Xsshfs ==== ==== 2e méthode : Xsshfs ====
Ligne 191: Ligne 194:
 === Présentation === === Présentation ===
  
-[[https://​framagit.org/​kepon/​xsshfs/​|xsshfs]] est un petit programme écrit en perl/glade offrant une interface graphique à sshfs+[[https://​framagit.org/​kepon/​xsshfs/​|xsshfs]] est un petit programme écrit en perl/glade offrant une interface graphique à SSHFS
  
 Quelques fonctions de ce programme : Quelques fonctions de ce programme :
-  * Monter des répertoires ​sshfs +  * Monter des répertoires ​avec SSHFS 
-  * Démonter des répertoires ​sshfs+  * Démonter des répertoires
   * Enregistrer vos connexions préférées   * Enregistrer vos connexions préférées
   * [[http://​xsshfs.zici.fr/​changelog|...]]   * [[http://​xsshfs.zici.fr/​changelog|...]]
Ligne 208: Ligne 211:
  
 Il arrive qu'on ne comprenne pas pourquoi la connexion ne fonctionne pas. Il arrive qu'on ne comprenne pas pourquoi la connexion ne fonctionne pas.
-Exemple ​message ​//**read: Connection reset by peer**//+Exemple ​d'​erreur ​''​read: Connection reset by peer''​
 On peut alors utiliser les option suivantes : On peut alors utiliser les option suivantes :
-**-odebug,​sshfs_debug,​loglevel=debug**, en plus de la commande habituelle :+''​-odebug,​sshfs_debug,​loglevel=debug''​, en plus de la commande habituelle :
 <​code>​sudo sshfs -odebug,​sshfs_debug,​loglevel=debug nom_utilisateur@mon_serveur:​repertoire_distant repertoire_local -p num_port | more</​code>​ <​code>​sudo sshfs -odebug,​sshfs_debug,​loglevel=debug nom_utilisateur@mon_serveur:​repertoire_distant repertoire_local -p num_port | more</​code>​
  
 ===== Voir aussi ===== ===== Voir aussi =====
 +
   * [[https://​github.com/​libfuse/​sshfs|Site officiel]]   * [[https://​github.com/​libfuse/​sshfs|Site officiel]]
   * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=38912|commentaires et discussion ici]]   * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=38912|commentaires et discussion ici]]
  • sshfs.1750272307.txt.gz
  • Dernière modification: Le 18/06/2025, 20:45
  • par krodelabestiole