Per condividere cartelle o file system tra due macchine, una remota e una locale, possiamo usare SSHFS. In parole semplici SSHFS è un file system che ci permette di montare una cartella di un server remoto sul computer locale. Per farlo utilizza la connessione SSH che ci assicura che il trasferimento dei dati avvenga in maniera criptata.
Una volta montata la cartella remota sul dispositivo locale avremo accesso a quei file direttamente dal dispositivo locale, proprio come se si trattasse di file locali.
Indice
Installare SSHFS
L’installazione di SSHFS dipende dalla distribuzione che stiamo usando e quindi dal gestore dei pacchetti, di seguito andiamo a elencare i comandi per le principali distribuzioni.
Per Arch:
sudo pacman -S sshfs
Per Debian e Ubuntu:
sudo apt install sshfs
Per Fedora:
dnf install fuse-sshfs
Montare un file system con SSHFS
Per poter montare un file system remoto dobbiamo avere a disposizione le credenziali SSH per collegarci alla macchina remota. La connessione può avvenire con password o, come vedremo più avanti in questa guida, può richiedere la creazione delle chiavi SSH. Se hai bisogno di maggiori dettagli, puoi leggere la nostra guida sulla connessione SSH.
La prima cosa da fare per montare un file system remoto è creare il mount point, scegliamo quindi dove crearlo e creiamo una nuova cartella con il comando seguente:
sudo mkidr /mnt/disco-remoto
La cartella che scegliamo come mount point, nel nostro esempio disco-remoto, deve appartenere all’utente e non deve essere una cartella appartenente all’utente root. Per cambiare la proprietà della cartella usiamo il comando chown in questo modo:
sudo chown utente:gruppo /mnt/disco-remoto
Per esempio:
sudo chown maria:maria /mnt/disco-remoto

Una volta creato il mount point, possiamo montare il file system in diversi modi:
- usando SSHFS;
- usando il comando mount;
- inserendo una riga all’interno di fstab per montarlo in automatico.
Montare il file system con SSHFS
Per montare il file system usando l’accesso SSH con password, usiamo il comando seguente:
sshfs user@host:/percorso-di-origine/ /percorso-mount-point/
Dove l’host è indirizzo del server remoto a cui ci stiamo collegando.
Che in un esempio pratico diventa:
sshfs maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-remoto

Dopo aver dato il comando ci verrà richiesta la password dell’utente.
Per montare il file system usando l’autenticazione SSH con chiavi, dobbiamo indicare la posizione della chiave privata:
sshfs -o IdentityFile=/home/client/.ssh/chiave_server maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-remoto
La posizione della chiave deve essere indicata usando l’opzione “IdentityFile=”.
Se vogliamo aggiungere più opzioni, possiamo farlo indicandole dopo -o e separandole con una virgola, ad esempio per specificare una porta diversa da quella di default, aggiungeremo l’opzione port:
sshfs -o port=2299,IdentityFile=/home/client/.ssh/chiave_server maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-remoto
Montare il file system con mount
Un altro metodo per montare un file system remoto è quello di utilizzare il comando mount.
Il comando si usa in questo modo:
mount -t sshfs user@host:/cartella-di-origine /mnt/disco-rete
In un esempio pratico avremo:
mount -t sshfs maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-rete
Con il comando qui sopra stiamo fornendo le credenziali di accesso al server:
- user, nell’esempio maria
- host name o IP del server, nell’esempio 192.168.1.15.
In questo caso vogliamo montare la cartella “file-condivisi” nel mount point creato all’inizio.
Nota: dopo aver dato il comando ci verrà richiesta la password dell’utente.
Se, invece, vogliamo usare l’accesso SSH con le chiavi (pubblica e privata), dobbiamo modificare il comando di prima, indicando la posizione della chiave privata, in questo modo:
mount -t sshfs -o IdentityFile=/home/client/.ssh/chiave_server maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-rete
Usare fstab per montare i file system remoti in automatico
Se vogliamo rendere il montaggio del file system remoto più rapido, ci conviene salvarci le informazioni per accedere direttamente nel file fstab. Una volta aggiunte queste informazioni nel file fstab potremo collegarci ai file system remoti semplicemente indicando il mount point.
La riga da inserire nel file fstab deve avere questa struttura:
user@host:/percorso-di-origine /punto-di-mount sshfs rw,noauto,identityfile=/percorso-chiave-privata 0 0
In questo caso abbiamo usato queste opzioni:
rwper dare i permessi di lettura e scrittura;noautoper far sì che il file system non venga montato automaticamente all’avvio;identityfileper indicare la posizione della chiave privata che ci permette di collegarci con SSH.
Con dei valori reali avremo quindi una riga come questa:
maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-rete sshfs rw,noauto,identityfile=/home/client/.ssh/chiave_server 0 0
Dopo aver salvato le modifiche al file fstab (che si trova nella cartella /etc), ci basterà dare il comando seguente:
mount /punto-di-mount
Nel nostro caso il punto di mount è /mnt/disco-rete, quindi il comando da usare sarà:
mount /mnt/disco-rete
In questo modo il file system remoto verrà montato senza richiedere altre credenziali visto che abbiamo fornito l’autenticazione con chiave direttamente nel file fstab.
Verificare se il file system è stato montato e smontarlo
Dopo aver montato il file system con uno dei metodi che abbiamo visto prima, possiamo verificare se è stato montato usando il comando:
findmnt
L’output di questo comando ci mostrerà i diversi file system montati.
Per smontare un file system remoto, invece, ci basta utilizzare il comando umount seguito dal mount point, in questo modo:
umount /mnt/disco-rete
Opzioni di SSHFS
Quando usiamo SSHFS possiamo aggiungere delle opzioni per modificare il comportamento di default. Le opzioni si aggiungono in questo modo:
sshfs user@host:/percorso-remoto /punto-di-mount -o [opzioni]
In un esempio reale diventa:
sshfs maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-remoto -o allow_root,compression=yes
Quando montiamo un file system con il comando che abbiamo visto prima e senza utilizzare opzioni, i file saranno poi accessibili solo all’utente che montato il disco remoto. Possiamo rendere i file accessibili anche ad altri utenti usando delle opzioni.
- allow_root – permette l’accesso ai file anche all’utente root;
- allow_other – permette a tutti gli utenti l’accesso ai file.
In alternativa possiamo assegnare la proprietà della cartella del mount point e quindi limitare l’accesso a solo quell’utente, specificando ID dell’utente e del gruppo, in questo modo:
- uid – per indicare l’utente
- gid – per indicare il gruppo.
Nel comando complessivo dovremo quindi indicarli in questo modo:
sshfs maria@192.168.1.15:/home/maria/file-condivisi /mnt/disco-remoto -o uid=1002,gid=1002
Altre opzioni utili possono essere:
port=numero-porta– possiamo usarlo se vogliamo usare una porta diversa da quella di default (cioè la 22). Per esempio con l’opzione-o port=2299indichiamo di usare la porta specificata invece di quella predefinita.reconnect– ci permette di ricollegarci in automatico se la connessione viene interrotta.compression=yes– attiva la compressione ed è utile quando usiamo connessioni lente.ServerAliveInterval=15– fa sì che la connessione venga mantenuta anche quando c’è un periodo di inattività.
Puoi consultare la lista di tutte le opzioni nella documentazione.
Conclusioni
Abbiamo visto come usare SSHFS per condividere cartelle tra dispositivi, ad esempio per accedere a una cartella remota su un server. Questo strumento ci permette di collegarci usando la connessione SSH e poi rendere accessibili le cartelle proprio come se fossero cartelle del sistema locale.
Pronto a costruire il tuo sito WordPress?
Prova il nostro servizio gratuitamente per 14 giorni. Nessun impegno, nessuna carta di credito richiesta.