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 13/11/2019, 18:23]
94.228.190.38
sshfs [Le 11/09/2022, 10:35] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
 {{tag>​ssh sécurité}} {{tag>​ssh sécurité}}
 ---- ----
- 
 ====== 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. 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, Konqueror, ROX, ou même la ligne de commande), ce qui est bien plus pratique que la commande scp couplée avec ssh.
Ligne 10: Ligne 7:
  
 ===== Pré-requis ===== ===== Pré-requis =====
- 
   * Disposer des [[:​sudo|droits d'​administration]].   * Disposer des [[:​sudo|droits d'​administration]].
   * Disposer d'une connexion à Internet configurée et activée.   * Disposer d'une connexion à Internet configurée et activée.
   * Avoir installé et configuré [[fuse#​installation_de_fuse|FUSE]].   * Avoir installé et configuré [[fuse#​installation_de_fuse|FUSE]].
- 
  
 ===== 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 faut veiller à ce que les utilisateurs potentiels de sshfs fassent bien partie du groupe fuse. Il faut veiller à ce que les utilisateurs potentiels de sshfs fassent bien partie du groupe fuse.
Ligne 27: Ligne 21:
  
 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]
  
Ligne 43: Ligne 34:
  
 <​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é.
 +Pour le libérer (démontage),​ exécutez la commande suivante :
 +<​code>​$ fusermount -u tmp</​code>​ ou <​code>​$ sudo umount tmp</​code> ​
 +Relancer la procédure ci-dessus (sans la partie **mkdir**, bien entendu.)
 +</​note>​
  
-Si vous avez l'​erreur suivante : **fuse: bad mount point `tmp': ​Transport endpoint is not connected**, veuillez exécuter ​la commande suivante+<​note>​ 
-<​code>​fusermount -u tmp</​code>​, et relancer ​la procédure ci-dessus ​(sans la partie **mkdir**, bien entendu.)</​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** ​
 +<​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]]. 
 +</​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]
Ligne 72: Ligne 71:
   sudo chmod 0770 /​mnt/​mon_rep   sudo chmod 0770 /​mnt/​mon_rep
  
-Ensuite [[:​tutoriel:​comment_modifier_un_fichier|modifiez le fichier]] **/​etc/​fstab**.+Ensuite [[:​tutoriel:​comment_modifier_un_fichier|modifiez le fichier]] **/​etc/​fstab**
  
-Il faut y rajouter la ligne suivante :+Il faut y rajouter la ligne suivante : ​(attention: cette syntaxe est décrite comme dépréciée dans le manuel de fstab - voir la note ci-après)
 <​file>​sshfs#​user@machine:/​répertoire/​distant ​               /​mnt/​mon_rep ​         fuse            port=22,​user,​noauto,​noatime ​    0 0</​file>​ <​file>​sshfs#​user@machine:/​répertoire/​distant ​               /​mnt/​mon_rep ​         fuse            port=22,​user,​noauto,​noatime ​    0 0</​file>​
  
-<​note>​La syntaxe décrite ci-dessus, bien que totalement juste et fonctionnelle,​ peut poser problème selon la configuration du montage, notamment lors du démontage par un utilisateur via nautilus ou la commande umount.\\ On privilégiera alors la syntaxe suivante qui résout le problème lors du démontage ​+<​note>​La syntaxe décrite ci-dessus ​est dépréciée. Bien que totalement juste et fonctionnelle, ​elle peut poser problème selon la configuration du montage, notamment lors du démontage par un utilisateur via nautilus ou la commande umount.\\ On privilégiera alors la syntaxe suivante qui résout le problème lors du démontage
 <​file>​user@machine:/​répertoire/​distant ​               /​mnt/​mon_rep ​         fuse.sshfs ​          ​port=22,​user,​noauto,​noatime ​    0 0</​file></​note>​ <​file>​user@machine:/​répertoire/​distant ​               /​mnt/​mon_rep ​         fuse.sshfs ​          ​port=22,​user,​noauto,​noatime ​    0 0</​file></​note>​
  
Ligne 105: Ligne 104:
 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).
 =====Autofs===== =====Autofs=====
- 
 Le montage manuel ou par fstab a plusieurs inconvénients. Le montage manuel ou par 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.
Ligne 117: Ligne 115:
  
 ====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|fuse]]**, **[[apt://autofs|autofs]]** et **[[apt://sshfs|sshfs]]**+
  
 ====Configuration d'​autofs==== ====Configuration d'​autofs====
 === Identification automatique en ssh === === Identification automatique en ssh ===
- 
- 
 Contrairement au montage NFS par autofs, SSHFS a besoin d'une authentification,​ et cette authentification doit se faire "​automatiquement"​. Contrairement au montage NFS par autofs, SSHFS a besoin d'une authentification,​ et cette authentification doit se faire "​automatiquement"​.
 Pour cela, il faut utiliser le système de clés publiques/​privées pour l'​authentification ssh, et utiliser l'​user-agent (par ssh-add) si vous avez défini une passphrase. Pour cela reportez-vous à la page [[ssh]]. Pour cela, il faut utiliser le système de clés publiques/​privées pour l'​authentification ssh, et utiliser l'​user-agent (par ssh-add) si vous avez défini une passphrase. Pour cela reportez-vous à la page [[ssh]].
  
 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 dsa</​code>​ +<​code>​sudo ssh-keygen -t rsa</​code>​ 
-et l'​autoriser sur le serveur en rajoutant le contenu ///​root/​.ssh/​id_dsa.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_dsa.pub <​utilisateur>​@<​ip serveur></​code>​ +<​code>​sudo ssh-copy-id -i /root/.ssh/id_rsa.pub <​utilisateur>​@<​ip serveur></​code>​
- +
-===Desactiver 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).
  
-===Recupé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
Ligne 180: Ligne 172:
  
 {{ application:​xsshfs_0.4.png?​300}} {{ application:​xsshfs_0.4.png?​300}}
- 
- 
  
 ==== 2e méthode : Xsshfs ==== ==== 2e méthode : Xsshfs ====
- 
 === Présentation === === Présentation ===
- +[[https://framagit.org/​kepon/​xsshfs/​|xsshfs]] est un petit programme écrit en perl/glade offrant une interface graphique à sshfs
-[[http://xsshfs.zici.fr|xsshfs]] est un petit programme écrit en perl/glade offrant une interface graphique à sshfs+
  
 Quelques fonctions de ce programme : Quelques fonctions de ce programme :
Ligne 196: Ligne 184:
  
 === Installation === === Installation ===
- +Deux possibilités :
-Deux possibilités : +
   - Suivre les [[http://​xsshfs.zici.fr/​installation|instructions]] et ouvrir un terminal et taper directement la commande : <​code>​wget http://​xsshfs.zici.fr/​files/​xsshfs_current.deb && sudo dpkg -i xsshfs_current.deb && sudo apt-get install -f && rm xsshfs_current.deb</​code>​   - Suivre les [[http://​xsshfs.zici.fr/​installation|instructions]] et ouvrir un terminal et taper directement la commande : <​code>​wget http://​xsshfs.zici.fr/​files/​xsshfs_current.deb && sudo dpkg -i xsshfs_current.deb && sudo apt-get install -f && rm xsshfs_current.deb</​code>​
   - Utiliser le dépôt PPA suivant: **ppa:​profnoel/​xsshfs** et tapez la commande suivante : <​code>​sudo add-apt-repository ppa:​profnoel/​xsshfs && sudo apt-get update >/​dev/​null && sudo apt-get install xsshfs</​code>​   - Utiliser le dépôt PPA suivant: **ppa:​profnoel/​xsshfs** et tapez la commande suivante : <​code>​sudo add-apt-repository ppa:​profnoel/​xsshfs && sudo apt-get update >/​dev/​null && sudo apt-get install xsshfs</​code>​
  
 ==== 3e méthode : sshfs-dialog.sh ==== ==== 3e méthode : sshfs-dialog.sh ====
- 
 === Création et explication de sshfs-dialog.sh === === Création et explication de sshfs-dialog.sh ===
 Voici un petit programme écrit en GtkDialog, il faut donc l'​installer. De plus, il faut pouvoir renseigner le mot de passe d'une manière sécurisée,​ pour cela il y a ssh-askpass-gnome :​ installez les paquets **[[apt://​gtkdialog,​ssh-askpass-gnome|gtkdialog ssh-askpass-gnome]]**. Voici un petit programme écrit en GtkDialog, il faut donc l'​installer. De plus, il faut pouvoir renseigner le mot de passe d'une manière sécurisée,​ pour cela il y a ssh-askpass-gnome :​ installez les paquets **[[apt://​gtkdialog,​ssh-askpass-gnome|gtkdialog ssh-askpass-gnome]]**.
Ligne 244: Ligne 230:
 Glisser/​déposer le fichier toto@portable.essh sur sshfs-dialog.sh,​ et la fenêtre s'​ouvre directement avec les informations renseignées.\\ Glisser/​déposer le fichier toto@portable.essh sur sshfs-dialog.sh,​ et la fenêtre s'​ouvre directement avec les informations renseignées.\\
  
-Vous pouvez aussi cliquer-droit sur le fichier *.essh puis propriètés ​-- > onglet "​ouvrir avec" --> ajouter ​  et là vous sélectionnez l'​emplacement du script sshfs-dialog.sh grâce à la commande "​parcourir"​. Ainsi vous pourrez créer des lanceurs sur le bureau. Le script s'​exécutera maintenant automatiquement en cliquant sur un fichier *.essh. ​\\  +Vous pouvez aussi cliquer-droit sur le fichier *.essh puis propriétés ​-- > onglet "​ouvrir avec" --> ajouter ​  et là vous sélectionnez l'​emplacement du script sshfs-dialog.sh grâce à la commande "​parcourir"​. Ainsi vous pourrez créer des lanceurs sur le bureau. Le script s'​exécutera maintenant automatiquement en cliquant sur un fichier *.essh.
- +
- +
-=== Code de ssh-dialog.sh === +
  
 +=== Code de ssh-dialog.sh ===
 <code bash> <code bash>
 #! /bin/bash #! /bin/bash
Ligne 352: Ligne 336:
 gtkdialog --program=MAIN_DIALOG gtkdialog --program=MAIN_DIALOG
 </​code>​ </​code>​
- 
  
 ===== débogage en mode console ===== ===== débogage en mode console =====
- 
 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 message : //**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]] 
-  ​* [[http://fuse.sourceforge.net/sshfs.html|Site officiel]] +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=38912|commentaires et discussion ici]]
-  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=38912|commentaires et discussion ici]]+
  
 ---- ----
 //​Contributeurs principaux :​ ...// //​Contributeurs principaux :​ ...//
  • sshfs.1573665780.txt.gz
  • Dernière modification: Le 13/11/2019, 18:23
  • par 94.228.190.38