SSHFS inversé (rsshfs)
SSHFS permet de monter un répertoire d’une machine distance dans l’arborescence locale en utilisant SSH :
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 : rsshfs.
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.
Son utilisation se veut similaire à celle de sshfs
:
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 :
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 :
Ou plus simplement en pressant Ctrl+C
dans le terminal de la commande de
montage.
Amélioration
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.