Come montare una cartella remota via SSH con sshfs

Installa sshfs, crea una cartella vuota ed esegui sshfs user@server:/path ~/mnt/server. La cartella remota si comporta allora come una locale. Per smontarla esegui fusermount3 -u ~/mnt/server su Linux oppure umount ~/mnt/server su macOS. Al server basta il normale SSH con SFTP attivo. Su un Mac, sshfs richiede prima macFUSE.

Aggiornata il . SSHFS 3.7.3 con FUSE 3.17.2 come root su Debian 13 in un container privilegiato usa e getta, verso OpenSSH 10.0 in un altro.

Montare e smontare su Linux

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

Ora ls ~/mnt/server mostra la cartella sul server, e i file che scrivi lì vengono scritti sul server. Un percorso senza slash iniziale, come in server:project, parte dalla tua cartella home sul server. Su Fedora il pacchetto si chiama fuse-sshfs.

fusermount3 -u ~/mnt/server

Sui sistemi più vecchi il comando può essere fusermount senza il 3. Se sei dentro la cartella o un programma ha un file aperto, fallisce con Device or resource busy. Esci dalla cartella e riprova.

Funzionano le tue solite chiavi, le voci di ~/.ssh/config e le opzioni per la porta:

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

Opzioni utili

OpzioneCosa fa
-o reconnectSi riconnette dopo una connessione caduta
-o ServerAliveInterval=15,ServerAliveCountMax=3Si accorge di una connessione morta, invece di restare appeso
-o roMonta in sola lettura
-o idmap=userMostra i file dell'utente remoto come tuoi
-o follow_symlinksSegue i link simbolici sul server
-o allow_otherPermette ad altri utenti locali di vedere il mount

Un comando pratico per l'uso quotidiano:

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

allow_other come utente normale fallisce con questo messaggio finché non aggiungi user_allow_other a /etc/fuse.conf:

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

Quando la connessione si rompe

Abbiamo terminato la sessione sul server in tre configurazioni:

ConfigurazioneRisultato
Mount semplice, sessione terminatasshfs è terminato e la cartella è tornata vuota, senza mount
-o reconnect, sessione terminataIl successivo ls ha funzionato su una nuova connessione
Processo sshfs terminato con kill -9ls: cannot access ...: Transport endpoint is not connected

Nell'ultimo caso fusermount3 -u ~/mnt/server ripulisce tutto e puoi montare di nuovo.

Con reconnect, un login che richiede una password digitata non può riconnettersi da solo, quindi usa una chiave senza richiesta o un agent.

Sorprese comuni

  • Il contenuto della cartella locale sparisce dalla vista. Nel nostro test sshfs ha montato sopra una cartella che conteneva un file e lo ha nascosto fino allo smontaggio. Usa una cartella vuota.
  • I file mostrano un proprietario diverso. Senza idmap=user, i proprietari numerici del server vengono mostrati così come sono, per esempio 1000. Nel nostro test con idmap=user comparivano come l'utente locale.
  • Non è un disco locale. Ogni lettura e scrittura passa dalla rete. Gli strumenti che scorrono molti file, come git status o un indicizzatore di codice, possono essere lenti.
  • Il percorso deve esistere. Un percorso sbagliato fallisce subito con server:nosuch: No such file or directory.

macOS: macFUSE

macFUSE aggiunge il supporto a FUSE e da solo non include file system. Il suo sito offre un pacchetto SSHFS come download separato. Installa prima macFUSE, poi SSHFS.

macFUSE ha due backend. L'estensione del kernel è quella predefinita e su Apple silicon, la prima volta, richiede un riavvio in modalità Recovery per consentire le estensioni di terze parti. Secondo la documentazione di macFUSE, il backend FSKit su macOS 26 funziona senza questa modifica: aggiungi l'opzione di mount -o backend=fskit. Per smontare:

umount ~/mnt/server

Stato del progetto

Il README di SSHFS dice che non ha collaboratori regolari attivi e che il suo manutentore applica le pull request e pubblica le release, ma corregge solo i problemi ad alto impatto. Funziona, come mostra il nostro test, ma tienilo presente per tutto ciò che è critico. Per trasferimenti regolari, rsync è spesso più adatto.

Per scegliere tra gli strumenti, vedi scp, sftp o rsync.

Domande

sshfs ha bisogno di qualcosa sul server?

Solo di un normale server SSH con SFTP attivo. Se sftp fallisce con subsystem request failed, vedi la guida a quell'errore.

Perché sshfs è lento?

Ogni lettura e scrittura passa dalla rete. Lo notano di più gli strumenti che leggono molti file, come git status o un indicizzatore di codice. Se serve velocità, copia i file con rsync.

Come risolvo Transport endpoint is not connected?

Il processo sshfs è terminato e ha lasciato il mount. Esegui fusermount3 -u sulla cartella, o umount su macOS, poi monta di nuovo. Aggiungi -o reconnect per riprendere dopo le cadute di connessione.

Fonti

Altro in SFTP e trasferimento file

Tutte le guide