Monter les disques de son Raspberry Pi grâce à SSHFs

Partage linux windowsBonjour à tous. Aujourd’hui on va aller faire un tour du côté de Linux pour voir comment monter n’importe quel répertoire ou encore disque dur USB via sshfs. Dans mon cas je l’utilise pour monter mon home de Raspberry Pi sur Windows comme un disque standard que l’on peut accéder via l’explorateur Windows. On va grâce à ça pouvoir faire du partage de fichier entre Windows et un Raspberry ou n’importe quelle machine Linux. Pour la petite histoire, ce tuto était déjà en cours d’écriture, mais il n’était pas destiné à être publié tout de suite. Cependant, un lecteur de DaDaRevue m’a demandé de l’aide pour monter ses disques USB de son Raspberry sur son Windows. Du coup me voilà entrain de finaliser cet article plus rapidement que prévu.

Monter les disque de Linux ou Raspbian sur Windows

Il existe de nombreuses méthodes pour accéder à sa machine Linux depuis Windows et pour faire du transfert de fichier. On peut notamment citer la plus courante qui est d’utiliser un client SFTP tel que le célèbre FileZilla. Dans un précédent article, j’ai même présenté un soft qui permet de faire du SCP ou encore SFTP depuis Windows, j’ai nommé WinSCP.

Cependant, ces méthodes ont un désavantage certain (et beaucoup d’avantages aussi), on est obligé d’utiliser un logiciel tiers et on n’accède pas aux disques de sa machine distante depuis l’explorateur Windows. Le but de ce tutoriel est donc de donner une méthode simple à mettre en place qui permet de monter ses disques distants dans l’explorateur Windows au même titre qu’un disque local via SSH (donc via un canal sécurisé). Le logiciel que nous allons utiliser s’appelle SSHFS (SSH file system), c’est un logiciel léger, facile à mettre en place, gratuit et open source (que demander de plus).

SSH-FS est en réalité un peu plus qu’un simple soft, c’est système de fichier qui permet de monter des disques distant par ssh, autrement dit il permet de monter un lecteur réseau via ssh.

Voilà le résultat après 5 min de configuration :

partage fichier raspberry windows

Le home de mon raspberry accessible via le disque local Mon-Raspberry

Comme on le voit sur l’image, j’ai 4 disques locales, dont un qui s’appelle Mon-Raspberry qui est en réalité le home de mon Raspberry. Lorsque l’on clique dessus, Windows l’ouvre comme un disque local alors que c’est en réalité le montage d’un disque réseau ssh.

On peut évidement parcourir les fichiers comme un simple disque :

monter répertoire raspberry windows

Parcourir son Raspberry Pi depuis l’explorateur Windows

 

Activer SSH sur son raspberry

Bien entendu la première étape est de vérifier que le service ssh est bien démarré sinon aucune chance que cela fonctionne. Pour cela il est possible de vérifier avec la commande :

sudo service ssh status

Si la réponse ressemble à quelque chose du genre :

● ssh.service – fast remote file copy program daemon
Loaded: loaded (/lib/systemd/system/rsync.service; disabled)
Active: inactive (dead)

Cela signifie que ssh n’est soit pas activé. Pour le démarrer il suffit de taper la commande suivante :

sudo raspi-config

Ensuite on sélectionne « 5 interfacing option » puis « P2 SSH » et on valide afin d’activer le service ssh.

Voilà normalement cela devrait faire l’affaire.

Installer SSH-FS sur Raspbian, debian, ubuntu ou simplement Linux : côté serveur

La première étape est d’installer SSH-FS sur votre Raspberry Pi (ou autre machine Linux) qui sera le serveur. Pour cela, rien de plus simple, on va juste lancer la commande suivante :

sudo apt-get install sshfs

Voilà, c’est tout ce qu’il y a à configurer sur votre machine Linux.

On va juste avoir besoin d’une dernière chose, le chemin d’accès vers le disque que vous souhaitez monter. Si c’est votre home c’est simplement /pi/home (dans le cas de l’utilisateur pi).
Dans le cas d’un disque USB, vous trouverez son chemin d’accès avec la commande df -h qui vous donnera quelque chose qui ressemble à ça :

Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/root 30G 6,0G 22G 22% /
devtmpfs 459M 0 459M 0% /dev
/dev/mmcblk0p1 63M 21M 42M 33% /boot
nas-home:/mnt/HD/HD_a2/Pi-Save 985G 287G 699G 30% /home/pi/pi-save

Dans mon cas on voit que j’ai mon disque nas-home dont le point de montage est /home/pi/pi-save.

SSHFS sur Windows : côté client

Pour installer SSHFS sur Windows il va nous falloir deux logiciels, d’une part la librairie Dokan (librairie qui permet de créer des systèmes de fichiers sur Windows) et bien entendu le logiciel WinSshFS ou win-sshfs. Ces logiciels gratuits et open source.

On va donc commencer par télécharger la librairie Dokan sur laquelle s’appuie WinSshFS pour créer le système de fichier SSHFS sur Windows. On la récupère sur le git de Dokan.

On prend soin de télécharger le fichier DokanSetup.exe comme sur l’image suivante :

sshfs windows

On télécharge DokanSetup.exe

Ensuite, il suffit d’installer Dokan, rien de bien compliqué, il suffit d’accepter les termes de licence en cochant la petite case sur la première page d’installation :

windows sshfs

Installation de Dokan

dokan sshfs

Fin d’installation de Dokan

Maintenant, passons à l’installation de WinSshFS. On va télécharger WinSshFS sur le git du projet. On ne va pas télécharger la dernière version, car c’est une version en développement (donc potentiellement instable) mais aussi parce que le fichier d’installation .msi ne fonctionne pas (du moins pas sur deux de mes pc sous Windows). On va donc prendre le fichier previous.release-1.6.0-rc3.zip comme dans l’image ci-dessous :

partage de fichier linux

Télécharger WinSshFS

Pas d’installation nécessaire pour WinSshFS, il suffit de décompresser l’ensemble de l’archive dans un répertoire et de lancer l’exécutable WinSshFS.exe. On arrive alors sur cette fenêtre :

winsshfs raspbian

Premier lancement de WinSshFS

C’est là que nous allons rentrer les informations de connexion à son Raspberry Pi. Vous pouvez créer un utilisateur ou utiliser votre utilisateur par défaut (ici on prend l’exemple de pi mais je vous conseille de supprimer cet utilisateur par raison de sécurité).

On va donc cliquer sur le bouton « + add » et remplir les informations suivantes :

  • Drive Name : le nom que vous souhaitez donner au disque dure sur votre Windows (dans mon cas je vais l’appeler Mon-Raspberry)
  • Host : l’adresse IP de votre Raspberry sur votre réseau (ici 192.168.1.100)
  • Port : 22 (port par défaut du SSH, si vous avez modifié ce port il faudra le changer ici aussi)
  • Username : le login avec lequel vous souhaitez vous connecter à votre Raspberry (ici pi)
  • Authentication method : la méthode avec laquelle vous souhaitez vous connecter à votre Raspberry (par défaut password mais vous pouvez aussi bien choisir l’identification par clé ssh)
  • Directory : le dossier que vous souhaitez monter, par défaut il va monter le home mais il est possible de monter un autre répertoire. Par exemple si vous souhaitez faire un disque pour monter votre dossier Pictures dans le home de l’utilisateur pi il vous faudra écrire ici : /home/pi/Pictures ou encore si vous souhaitez monter un disque dur connecté en USB sur votre Raspberry pi cela ressemblera à quelque chose du type /mnt/identifiant-de-votre-disque/
sshfs raspberry

Configuration WinSshFS

Voilà, il ne vous reste plus qu’à cliquer sur Save pour sauvegarder votre session et le tour est joué. Plus qu’à cliquer sur Mount et votre disque apparait dans votre explorateur Windows.

Notez qu’il vous est possible de monter plusieurs fois votre Raspberry Pi, du coup il est possible de monter un disque pour vos photos, un disque pour vos films, un disque pour vos documents, etc. Pour cela il vous faudra juste créer d’autres disque avec le bouton « + Add » et modifier la valeur de Directory.

SSHFS sur Linux : côté client

Il est bien entendu possible de monter un disque via SSHFS sur une machine Linux. Pour cela, il va falloir installer les paquets sshfs sur le client. Ce sont les mêmes paquets qui ont été installés au début du tutoriel sur votre machine serveur. Je vous redonne la commande :

sudo apt-get install sshfs

Montage SSHFS via le terminal

Il est possible de le monter via le terminal avec une commande du type :

sshfs username@host:directory point_de_montage

Pour illustrer reprenons l’exemple du paragraphe précédent :

  • username : utilisateur (dans mon cas pi)
  • host : adresse ip du Raspberry (dans mon cas 192.168.1.100)
  • directory : répertoire que l’on souhaite monter (ici /home/pi/Pictures)
  • point_de_montage : destination où on va monter le disque (disons dans /mnt/Mon-Raspberry)

La commande devient alors :

sshfs [email protected]:/home/pi/Pictures /mnt/Mon-Raspberry

On va alors vous demander le mot de passe et ensuite vous pouvez aller dans le dossier /mnt/Mon-Raspberry et vous verrez vos fichiers : le tour est joué.

Montage automatique SSHFS via fstab

Il est aussi possible de faire en sorte que Linux monte automatiquement le répertoire au démarrage. Pour cela on va aller modifier le fichier /etc/fstab :

sudo nano /etc/fstab

On ajoute une ligne du type :

sshfs#username@host:directory point_de_montage fuse port=22,user,noauto,noatime 0 0

Dans notre cas, avec l’exemple habituel cela nous donne la ligne suivante :

sshfs#[email protected]:/home/pi/Pictures /mnt/Mon-Raspberry fuse port=22,user,noauto,noatime 0 0

On sauvegarde (ctrl+x puis o) et on redémarre la machine. Au démarrage vous devriez avoir votre disque monté dans le dossier /mnt/Mon-Raspberry.

Voilà, c’est tout pour aujourd’hui, en espérant que cet article vous aura été utile et surtout n’hésitez pas à laisser un commentaire si vous avez une question, un problème ou simplement si vous avez aimé ce tutoriel. Comme toujours, je vous invite à partager l’article sur les réseaux sociaux, ce n’est pas grand-chose mais c’est un grand coup de pouce pour DaDaRevue !

 

29 commentaires

      1. Bon moi revoila. J’ai tout repris depuis le debut.
        Installation rabian + recalbox via noobs. puis mise à jour via ligne de commande.
        installation de Kodi qu’il faut que je potasse pour trouver comment gérer les catégories.
        J’ai branché mon DD externe sur le raspberry . il apparait. J’ai suivi ton nouveau tuto trés complet.
        J’ai un message d’erreur au moment de mount le disque il me dit que l’ordinateur cible l’a refusée.

        1. décidément…mes tutoriels et toi ce n’est pas une histoire d’amour :p

          Bon alors je crois savoir d’où ça vient. Il me semble avoir oublié de préciser dans le tutoriel qu’il faut SSH pour que cela fonctionne.

          Est-ce que tu peux me dire ce que te donne la commande suivante :
          sudo service ssh status

          Si la réponse est :
          ● ssh.service
          Loaded: not-found (Reason: No such file or directory)
          Active: inactive (dead)

          cela signifie que le ssh n’est pas installé sur ton raspberry.

          Si la réponse est qu’il est activé dans ce cas, est-ce que tu pourrais me faire un copier/coller de la réponse à la commande pour voir s’il n’y a pas une erreur de configuration.

          Si tel est le cas voilà comment l’activer :
          tape la commande « sudo raspi-config »

          ensuite tu va descendre jusqu’à « 5 interfacing option » (ou option d’interface en français)
          Après cela va sur « P2 ssh »

          Ensuite il te demande si tu veux activer le ssh et tu répond oui.

          Dit moi si ça a résolu ton problème 😉

          1. Je veins te donner des news cela marche en effet le ssh n’etait pas activé. Il faut juste que je regarde pour identifier mon disque dur dessus ainsi que le parametrage de kodi. Merci de ton aide super boulot

          2. Super si ça fonctionne 🙂

            Du coup j’ai édité l’article pour le ssh, c’est quelque chose auquel je n’avais pas pensé.
            Qu’est-ce que tu entends par identifier ton disque dur?

            Si tu as encore des questions, n’hésite pas 😉

  1. Je parles du chemin d’accès dans ton tuto tu dis du type /mnt/identifiant-de-votre-disque/
    C’est cela l’identification que je parle car la j’arrive sur la sd je pense

    1. Désolé pour ma réponse tardive.

      En effet j’ai oublié d’expliquer comment trouver ça, je vais mettre à jour le tutoriel.

      Sinon du coup pour trouver le chemin d’accès voilà ce que tu peux taper :
      df -h

      Cela va te lister tes systèmes de fichiers. Par exemple voilà ce que me retourne la commande chez moi :
      Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
      /dev/root 30G 6,0G 22G 22% /
      devtmpfs 459M 0 459M 0% /dev
      tmpfs 463M 0 463M 0% /dev/shm
      tmpfs 463M 47M 416M 11% /run
      tmpfs 5,0M 4,0K 5,0M 1% /run/lock
      tmpfs 463M 0 463M 0% /sys/fs/cgroup
      /dev/mmcblk0p1 63M 21M 42M 33% /boot
      log2ram 40M 22M 19M 55% /var/log
      tmpfs 93M 0 93M 0% /run/user/501
      nas-home:/mnt/HD/HD_a2/Pi-Save 985G 287G 699G 30% /home/pi/pi-save

      Par exemple à la dernière ligne on voit que j’ai mon disque nas-home qui est monté dans /home/pi/pi-save
      Tu devrais voir ton disque USB dans cette liste et son chemin d’accès.

      David

  2. super pour ta reponse. Je bossais hier donc ne t’inquiete pas pour la reponse. Je vois bien mon dd externe sur mon explorateur windows. Par contre impossible d’envoyer en copie dessus j’ai un message d’erreur qui me dit que le fichier est inexistant sur mon disque dur de base une idée?

  3. quand je veux supprimer un fichier sur le dd externe de mon pc il me dit que je n’ai pas les droits et quand je veux mettre un fichier le message est element introuvable il n’existe plus dans K: verifiez son emplacement actuel.

    1. Alors c’est certainement une question de droit OU un mauvais point de montage.

      Pour le point de montage, je viens de me rendre compte que mon commentaire où je t’expliquais comment récupérer le répertoire de montage était faux, j’ai confondu origine et destination et donc le chemin de ton point de montage est sur la colonne de droite (dans mon cas c’était /home/pi/pi-save) et non la colonne de gauche comme je l’avais marqué à l’origine (j’ai modifié le commentaire).

      Cependant je penses que c’est quand même une question de droit.

      Tu peux faire la commande suivante sur ton raspberry pour donner les droits à ton utilisateur sur ton disque USB :
      sudo chown -R utilisateur point-de-montage-du-disque

      cela devrait résoudre ton problème.

  4. J’avais bien pris le repertoire de montage de droite qui est chez moi /media/pi/kodi.
    J’ai fait la commande sudo chown -r pi /media/pi/kodi
    pi étant l’utilisateur de base je n’ai pas changé. J’obtiens dans la console tous les fichiers qui défile avec système de fichier en lecture seulement.
    Toujours le même problème. Sachant qu’a la base je n’ai fait que brancher le dd externe sur le raspberry. il s’est connecté dans le pi dans aucune commande. Je suis vraiment désole de t’embêter avec mon truc en carton.

    1. Est-ce que tu peux me dire en quel format est formaté ton disque dure externe ? Ça ne serait pas du NTFS par hasard ? Si c’est le cas ça explique pourquoi ton disque est monté en lecture seule.

    1. Pas besoin de le formater mais il va falloir faire une petite manipulation (installation de driver ntfs et rendre le montage automatique et permanent).

      Ce n’est pas très complexe mais cela me prendrait un commentaire de la taille d’un article pour expliquer. Du coup je te renvoi vers cet article où on explique clairement comment faire. La partie qui va t’intéresser c’est « identifier le type de disque dur » et « monter le disque de manière permanente ». Je précise que je n’ai jamais testé ce tutoriel et que je ne connais pas vriament ce blog mais en lisant rapidement cela me semble la bonne méthode.

      Il y a juste la ligne à metrte dans fstab qui est fausse, il faut retirer les balises strong qui sont autour de « nofail » pour obtenir la ligne suivante :
      /dev/sda1 /media/iomega ntfs nofail,uid=1001,gid=1001 0 0

      Le lien de l’article : ici

  5. ok je vais essayer tout cela. Merci pour tes recherches. derniere question comment nous devons mettre la ligne
    /dev/sda1 /media/iomega ntfs nofail,uid=1001,gid=1001 0 0
    direct en ligne de command dans la console?

    1. Encore une fois réponse tardive (les congés ne me laissent pas beaucoup de temps).

      Cette ligne doit être ajoutée au fichier /etc/fstab et bien entendu elle doit être adaptée à ton cas (le chemin /dev/sda1 devra peut-être être changé et de même pour /media/iomega).

      Pour éditer, tu peux le faire avec un éditeur de texte standard depuis l’explorateur ou sinon avec l’éditeur en ligne de commande nano avec la commande suivante :
      sudo nano /etc/fstab

      Une fois la ligne ajoutée, pour sauvegarder dans nano il faut faire ctrl+x

      Voilà, normalement tout devrait fonctionner après cela 😉

      N’hésite pas si tu as un souci et tient moi au courant du résultat 😉

      David

  6. Salut j’ai fait le tuto que tu m’as donné et comme tu te doute, je rencontre encore un probleme. au passage Pour monter le disque dur de manière permanente sur je tape la commande sudo mount -t ntfs-3g -o uid=1000,gid=1000 /dev/sda1 /media/externe.
    J’ai un message qui est : mount is denied because the ntfs volume is already exclusively opened. the volume may be already mounted, oranother software may use it which.
    Voila ou j’en suis. Je désespère. une idée?!!

    1. C’est tout simple. Avant de monter un disque il faut qu’il soit déjà démonté.
      Du coup il faut lancer la commande suivante :
      Sudo umount /dev/sda1

      En étant certain que /dev/sda1 correspond bien à ton disque externe.

  7. c’est vrai que c’est logique. Bon les modifs sont faites et cela marche enfin!!!
    Je peux accéder et modifier depuis mon pc. Si je rajoute un autre disque dur je ferai toute la procédure en changeant les noms je suppose. Maintenant que la partie disque dur externe est ok je vais pourvoir m’attaquer au paramétrage de kodi (je vais encore m’amuser). Merci de ton aide super taf

    1. Ah super 😀
      Content de voir qu’on y est arrivé !

      Pour kodi je ne vais pas pouvoir t’aider puisque je n’utilise pas mon raspberry en lecteur multimédia.
      Mais il y a certainement de super tutos sur le net !

      Bonne continuation et à bientôt 😉
      David

  8. Bonjour ,
    Est-ce que ça fonctionne en Wan? J’ai essayé en entrant ip publique ou mon ddns ainsi que ma privateKey et passphrase.
    J’ai un message d’erreur:
    « »Une tentative de connexion a échoué car le parti connectée na pas répondu convenablement au-delà d’une certaine durée ou une connexion établi a échoué car l’hôte de connexion na pas répondu. » »
    Merci

    1. Bonjour,

      Cela devrait fonctionner avec une IP publique à condition que le SSH fonctionne, que les bon ports sont ouvert et que la redirection du port se fait bien.
      Est-ce que vous arrivez à vous connecter en SSH vers la machine en question en utilisant l’ip publique et putty ? Je dirais que le problème n’a rien à voir avec sshfs mais plutôt avec le ssh directement.
      D’après l’erreur je dirais qu’il n’arrive juste pas à joindre le serveur SSH. Je penses notamment à un problème de NAT ou redirection du port ssh (22) sur le routeur vers le serveur SSH.

      En espérant que cela vous aidera
      David pour DaDaRevue

  9. Bonjour DAVID,
    merci bien pour le tuto super util par la suite j’ai quelques questions ,
    je voucrais monter mon raspberry sur mon pc en disc dur afin de remonter a un fichier ou j’enregistre des photos prise par une camera brancher sur le raspberry ,
    de la est ce que je peux acceder directement au dossier photos et sur une commande en programmation c ou je doit acceder a ces photos pour un traitement est t il possible en indiquant le chemin tt cela sur mon pc windows
    enfin est ce que je pourrai deplacer ces photos vers le disc dur du pc et les effacer du raspberry pour laiser de l’espace mais en code cad automatiquement
    merciiii pour votre aide

  10. Bonjour,

    sous un client Linux, est-il vraiment nécessaire de passer par cet outil pour accéder aux fichiers distants sur le Raspi ?

    Dans mon Ubuntu, j’ai intégré mon raspi directement dans /etc/fstab

    //192.168.1.xx/home/pi /media/mon_raspi cifs uid=1000,gid=1000,credentials=/root/.smbcredentials,iocharset=utf8 0 0

    .smbcredentials ressemble à ça :
    user=toto
    password=toto12345

    puis un sudo chmod 400 sur le fichier et ça tourne chez moi, le Raspi est visible tout le temps avec les explorateurs de fichiers graphiques.

  11. Commentaire de commentaire !
    Une découverte du soft et un tuto parfait ! Juste un peu bataillé pour trouver une version convenant à Windows XP 32 bits, mais j’ai trouvé !
    Vers 0.0.1.5 du 23.05.2012 ! Et ça marche !
    Merci merci
    Denis

Laisser un commentaire

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