fb-pixel
SupportHost italian

Come usare SSHFS per montare file system remoti

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.

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
Cambiare Proprieta Cartella Mount

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
Montare File System Sshfs

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:

  • rw per dare i permessi di lettura e scrittura;
  • noauto per far sì che il file system non venga montato automaticamente all’avvio;
  • identityfile per 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.

Comando Findmnt

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=2299 indichiamo 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.

Categorie
Indice dei contenuti

    🚀

    Articoli correlati

    Commenti

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *