SSHFS permet de monter un répertoire d’une machine distance dans l’arborescence locale en utilisant SSH :
sshfs serveur:/répertoire/distant /répertoire/local
Mais comment monter un répertoire local sur une machine distante ?
Une solution simple serait de se connecter en SSH sur la machine distante et d’exécuter la commande sshfs
classique.
Mais d’abord, ce n’est pas toujours directement possible : la machine locale peut ne pas être accessible (non adressable) depuis la machine distante. Ça se contourne en créant un tunnel SSH utilisant la redirection de port distante (option -R
).
Et surtout, ce n’est pas toujours souhaitable : cela nécessite que la clé privée autorisée sur la machine locale soit connue de la machine distante. Or, dans certains cas, nous ne voulons pas qu’une machine esclave puisse se connecter à notre machine maître.
Reverse SSHFS
En me basant sur la commande donnée en exemple, j’ai donc écrit un petit script Bash (rsshfs
, licence GPLv3) qui permet le reverse SSHFS :
(disponible également sur github)
git clone http://git.rom1v.com/rsshfs.git
cd rsshfs
sudo install rsshfs /usr/local/bin
Les paquets sshfs
et fuse
doivent être installés sur la machine distante (et l’utilisateur doit appartenir au groupe fuse
). Le paquet openssh-sftp-server
doit être installé sur la machine locale ainsi que vde2
(pour la commande dpipe
). (plus maintenant)
Son utilisation se veut similaire à celle de sshfs
:
rsshfs /répertoire/local serveur:/répertoire/distant
Comme avec sshfs
, /répertoire/distant
doit exister sur serveur
et doit être vide.
Il est également possible de monter le répertoire en lecture seule :
rsshfs /répertoire/local serveur:/répertoire/distant -o ro
Attention. L’option « lecture seule » est demandée à la machine distante, par un paramètre sshfs
. Par conséquent, une version modifiée de sshfs
pourrait ignorer la demande de lecture seule. Vous devez donc faire confiance à la machine distante. (plus maintenant)
Contrairement à sshfs
, étant donné que rsshfs
agit comme un serveur, cette commande ne retourne pas tant que le répertoire distant n’est pas démonté.
Pour démonter, dans un autre terminal :
rsshfs -u serveur:/répertoire/distant
Ou plus simplement (depuis le commit 440a357
) en pressant Ctrl+C
dans le terminal de la commande de montage.
TODO
J’ai choisi la facilité en écrivant un script indépendant qui appelle la commande qui-va-bien.
L’idéal serait d’ajouter cette fonctionnalité à sshfs directement.
Original post of ®om.Votez pour ce billet sur Planet Libre.