Monter un répertoire d'une machine distante avec sshfs

Introduction

Après avoir installé ssh sur une machine distante, on peut facilement copier des fichiers dans un sens ou dans l'autre sans toutefois avoir la nécessité de donner un mot de passe à chaque commande. L'installation de sshfs permet de faire mieux, en effet elle permet d'intégrer le répertoire distant et son contenu dans la hiérachie locale et toutes les commandes locales deviennent applicables.

La description de cette installation est ici générale et est donc applicable à toute machine distante, à condition d'en avoir le controle, y compris un modem neufbox, un raspberry Pi, ...

Installation coté distant

On suppose qu'un compte utilisateur a été installé et est accessible par ssh (/etc/passwd, group, shadow, ~/.ssh + clés rsa).

On suppose également que la machine distante dispose d'un stockage externe (clé ou disque usb) accessible en lecture et écriture, sinon l'ajout de cette fonctionnalité ne présenterait pas beaucoup intérêt.

On installe le binaire sftp-server ou le paquet le contenant. Si il s'agit d'un paquet il s'installe dans /usr/lib ou /usr/libexec. Si vous installez le fcihier vous pouvez aussi utiliser les mêmes répertoires.

Notes pour la neufbox

La fonctionnalité ssh est installée dans le logiciel d'origine de la box par le paquet dropbear. Cependant, dropbear ne possède pas la fonctionnalité sftp-server. Il faut donc le complémenter en installant le binaire sftp-server du paquet openssh-sftp-server, fourni par openwrt et son sytème de compilation. sftp-server est alors installé dans /usr/lib avec un lien symbolique dans /usr/libexec.

Installation coté local

Sur notre machine PC, il faut commencer par installer le paquet sshfs suivant la procédure habituelle de votre distribution. Ce paquet fournit une commande qui s'appelle aussi sshfs. Il ne reste plus qu'à l'exécuter après avoir créer un répertoire, par exemple box, qui servira de point de montage.

mkdir box
sshfs hq@omix: box
...
fusermount -u box

Le répertoire principal de l'utilisateur hq de la machine omix est monté sur le répertoire box et fait ainsi partie de la hiérarchie locale de fichiers.

Voici les fichiers du répertoire box:

[hq@olix ~]$ ls box
cron  ff  hqwget  ipt1    pg    rflashmain  td  teleidir  usbdisk
f     h   ipt     ipt_ok  psax  status      te  testres

Après utilisation, la commande suivante permet de démonter notre répertoire box.

fusermount -u box
Notes pour la neufbox

Le principe est le même pour la neufbox, mais celle-ci n'utilisant pas le port standart, il faut le spécifier dans la commande.

mkdir -p box
sshfs hq@nb: box -p 1288

Dans le cas où la commande sftp-server est installée, pour une raison ou une autre, dans un autre répertoire, on peut donner à sshfs son chemin absolu

mkdir -p box
sshfs hq@nb: box -p 1288 -o sftp_server=/opt/usr/sbin/sftp-server

La commande monte le répertoire ~hq de la machine distante nb et le port 1288 sur le point de montage box. L'option -o sftp_server= spécifie le chemin d'accès à sftp_server sur la machine distante.

Différence entre ssh et sshfs

Avec ssh, on se déplace sur la machine distante, on exécute les commandes de la machine distante sur les fichiers de la machine distante.

Avec sshfs on importe les fichiers distants sur la machine locale et on exécute les commandes locales sur ces fichiers.