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
| Opzione | Cosa fa |
|---|---|
-o reconnect | Si riconnette dopo una connessione caduta |
-o ServerAliveInterval=15,ServerAliveCountMax=3 | Si accorge di una connessione morta, invece di restare appeso |
-o ro | Monta in sola lettura |
-o idmap=user | Mostra i file dell'utente remoto come tuoi |
-o follow_symlinks | Segue i link simbolici sul server |
-o allow_other | Permette 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:
| Configurazione | Risultato |
|---|---|
| Mount semplice, sessione terminata | sshfs è terminato e la cartella è tornata vuota, senza mount |
-o reconnect, sessione terminata | Il successivo ls ha funzionato su una nuova connessione |
Processo sshfs terminato con kill -9 | ls: 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 conidmap=usercomparivano come l'utente locale. - Non è un disco locale. Ogni lettura e scrittura passa dalla rete. Gli strumenti che scorrono molti file, come
git statuso 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.