SSHFS inversé (rsshfs)
15 Jun 2014SSHFS permet de monter un répertoire d’une machine distance dans l’arborescence locale en utilisant SSH :
sshfs serveur:/répertoire/distant /répertoire/localMais 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.
git clone https://github.com/rom1v/rsshfs
cd rsshfs
sudo install rsshfs /usr/local/binLes 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 :
rsshfs /répertoire/local serveur:/répertoire/distantComme 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 roContrairement à 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/distantOu 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.
Pas mal. Ce que j’aimerais bien, c’est un outils pour utiliser une connexion ssh déjà existante.
Je m’explique avec un exemple. Je me suis connecté sur une machine, et je voudrais copier un fichier du serveur vers ma machine (ou vice versa). Je pourrais ouvrir un autre terminal et lancer un scp, mais comme je suis un gros flemmard je me dis que vu que j’ai déjà une connexion ssh, je pourrais faire simple un :
ou équivalent dans le shell distant.
Je me pencherais dessus un jour (peut être).