En fait, il s’agit d’un cas d’utilisation de FUSE (Filesystem in User SpacE) avec SSH (Secure SHell).
Pour faire simple, FUSE permet de créer à un utilisateur non root de créer ses propres systèmes de fichier virtuels, pour accéder un peu à n’importe quoi: le contenu d’une image de CD, le contenu d’un dossier stocké sur un serveur distant.
Dans le cas qui nous intéresse, le but est d’accéder à un dossier distant accessible uniquement via SSH/SFTP, afin de travailler dessus comme si nous étions en local, sur notre cher ordinateur personnel fonctionnant sous Debian GNU/Linux (au moins la dernière version stable: Etch, avec un kernel Linux version 2.6.14 ou plus récent).
Paquets requis:
- pour la partie FUSE (gérée par le kernel):
fuse-utils
etfuse-source
(si vous utilisez un noyau custom) ; - pour sshfs,
sshfs
.
La config de base, step by step:
- ouvrir un terminal ;
- se logguer en root (
su -
); aptitude install fuse-utils sshfs
(ça devrait aussi installerlibfuse2
qui est une dépendance defuse-utils
);- éventuellement
aptitude install fuse-source
, puismodule-assistant build fuse
, … (mais bon, ça vous avez l’habitude non?); - faire en sorte que les utilisateurs de l’ordinateur qui utiliseront FUSE/sshfs fassent partie du groupe fuse (
adduser leloginquivabien fuse
); - éventuellement, chargez le module fuse (
modprobe fuse
).
Et voilà!
Utilisation à la mano, en ligne de commande:
C’est assez simple, dans votre terminal il vous suffit de taper une commande dont le synopsis est:
-
login
est votre identifiant sur le serveur distant -
server
est le nom du serveur distant ou son adresse IP /chemin/du/dossier
… facile 😉/point/de/montage
l’endroit sur votre ordinateur où vous voulez trouver vos fichiers distants.-o idmap=user
est utile uniquement si vos ID utilisateurs sont différents sur le serveur et votre machine, ça vous permet d’avoir un résultat lisible quand vous faire unls -l
dans/point/de/montage
…
sshfs login@server:/chemin/du/dossier /point/de/montage [ -o idmap=user ]
Donc, par exemple, je peux faire sshfs guillaume@guillaume.theflyingbear.net:/home/guillaume/public_html ~/mon_site
pour accéder dans le répertoire mon_site
à ma p’tite page ouaib.
Plus dangereux, je peux faire sshfs root@un_serveur:/etc /qqpart
pour accéder au répertoire /etc
d’un serveur mal configuré 😉
Trucs et astuces (imaginez les bricol girls ou les garage babes vous l’annonçant, c’est plus sexy…)
sshfs
vous demandera le mot de passe qui correspond à votre login sur le serveur distant à chaque fois que vous voudrez monter votre répertoire distant. Pour éviter cela, vous pouvez utiliser l’authentification par clef de SSH, en utilisant une clef sans phrase secrète (ssh-keygen(1) est votre ami)…
TODO
Utilisation de FUSE+sshfs avec mount
et le le fichier /etc/fstab