Comment monter un dossier distant via SSH avec sshfs

Installez sshfs, créez un dossier vide et lancez sshfs user@server:/path ~/mnt/server. Le dossier distant se comporte alors comme un dossier local. Pour le démonter, lancez fusermount3 -u ~/mnt/server sous Linux ou umount ~/mnt/server sous macOS. Le serveur n'a besoin que de SSH normal avec SFTP activé. Sur un Mac, sshfs nécessite d'abord macFUSE.

Mis à jour le . SSHFS 3.7.3 avec FUSE 3.17.2 en root sur Debian 13 dans un conteneur privilégié jetable, vers OpenSSH 10.0 dans un autre.

Monter et démonter sous Linux

sudo apt install sshfs
mkdir -p ~/mnt/server
sshfs user@server:/var/www ~/mnt/server

Désormais, ls ~/mnt/server affiche le dossier du serveur, et les fichiers que vous y écrivez sont écrits sur le serveur. Un chemin sans barre oblique initiale, comme dans server:project, part de votre dossier personnel là-bas. Sous Fedora, le paquet s'appelle fuse-sshfs.

fusermount3 -u ~/mnt/server

Sur les systèmes plus anciens, la commande peut être fusermount sans le 3. Si vous êtes dans le dossier ou si un programme y a un fichier ouvert, elle échoue avec Device or resource busy. Sortez du dossier et réessayez.

Vos clés habituelles, les entrées de ~/.ssh/config et les options de port fonctionnent :

sshfs server:project ~/mnt/server
sshfs -p 2222 user@server:/srv ~/mnt/server
sshfs -o IdentityFile=~/.ssh/id_work user@server:/srv ~/mnt/server

Options utiles

OptionCe qu'elle fait
-o reconnectSe reconnecte après une coupure de connexion
-o ServerAliveInterval=15,ServerAliveCountMax=3Détecte une connexion morte au lieu de se figer
-o roMonte en lecture seule
-o idmap=userPrésente les fichiers de l'utilisateur distant comme les vôtres
-o follow_symlinksSuit les liens symboliques sur le serveur
-o allow_otherLaisse les autres utilisateurs locaux voir le montage

Une commande pratique au quotidien :

sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 user@server:/srv ~/mnt/server

allow_other en utilisateur ordinaire échoue avec ce message tant que vous n'ajoutez pas user_allow_other à /etc/fuse.conf :

fusermount3: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

Quand la connexion se coupe

Nous avons tué la session sur le serveur dans trois configurations :

ConfigurationRésultat
Montage simple, session tuéesshfs s'est terminé et le dossier était de nouveau vide, sans montage
-o reconnect, session tuéeLe ls suivant a fonctionné sur une nouvelle connexion
Processus sshfs tué avec kill -9ls: cannot access ...: Transport endpoint is not connected

Dans le dernier cas, fusermount3 -u ~/mnt/server nettoie la situation, et vous pouvez monter à nouveau.

Avec reconnect, une connexion qui exige un mot de passe saisi ne peut pas se reconnecter seule : utilisez une clé sans invite ou un agent.

Surprises courantes

  • Le contenu du dossier local disparaît de la vue. Dans notre test, sshfs monté sur un dossier contenant un fichier a masqué ce fichier jusqu'au démontage. Utilisez un dossier vide.
  • Les fichiers montrent un autre propriétaire. Sans idmap=user, les propriétaires numériques du serveur sont affichés tels quels, comme 1000. Dans notre test avec idmap=user, ils apparaissaient comme l'utilisateur local.
  • Ce n'est pas un disque local. Chaque lecture et écriture passe par le réseau. Les outils qui parcourent beaucoup de fichiers, comme git status ou un indexeur de code, peuvent être lents.
  • Le chemin doit exister. Un mauvais chemin échoue tout de suite avec server:nosuch: No such file or directory.

macOS : macFUSE

macFUSE ajoute la prise en charge de FUSE, mais n'inclut pas de systèmes de fichiers par lui-même. Son site propose un paquet SSHFS en téléchargement séparé. Installez d'abord macFUSE, puis SSHFS.

macFUSE a deux backends. L'extension du noyau est celle par défaut et, sur Apple silicon, elle demande la première fois un redémarrage en mode Recovery pour autoriser les extensions tierces. D'après la documentation de macFUSE, le backend FSKit sous macOS 26 fonctionne sans ce changement : ajoutez l'option de montage -o backend=fskit. Démontez avec :

umount ~/mnt/server

État du projet

Le README de SSHFS dit qu'il n'a pas de contributeurs réguliers actifs, et que son mainteneur applique les pull requests et publie des versions mais ne corrige que les problèmes à fort impact. Il fonctionne, comme le montre notre test, mais gardez cela en tête pour tout usage critique. Pour des transferts réguliers, rsync convient souvent mieux.

Pour choisir entre les outils, voir scp, sftp ou rsync.

Questions

sshfs a-t-il besoin de quelque chose sur le serveur ?

Seulement d'un serveur SSH normal avec SFTP activé. Si sftp échoue avec subsystem request failed, voir le guide de cette erreur.

Pourquoi sshfs est-il lent ?

Chaque lecture et écriture passe par le réseau. Les outils qui parcourent beaucoup de fichiers, comme git status ou un indexeur de code, le ressentent le plus. Copiez avec rsync quand la vitesse compte.

Comment corriger Transport endpoint is not connected ?

Le processus sshfs s'est arrêté en laissant le montage. Exécutez fusermount3 -u sur le dossier, ou umount sous macOS, puis montez à nouveau. Ajoutez -o reconnect pour reprendre après une coupure.

Sources

Autres guides : SFTP et transfert de fichiers

Tous les guides