Tutorial > Come connettersi a cartelle remote con SSHFS su Ubuntu 18.04

Come connettersi a cartelle remote con SSHFS su Ubuntu 18.04

Pubblicato il: 11 maggio 2020

Storage

Introduzione

Spesso può risultare scomodo lavorare da locale su alcuni file presenti solamente sul proprio Cloud Server, al quale ci si deve necessariamente connettere da remoto.

Per fortuna esiste un modo che consente di avere accesso a una cartella del proprio server (o all’intera macchina) come se questa fosse presente localmente sul proprio computer. Questo è possibile grazie a SSHFS (SSH Filesystem), uno strumento che permette di montare sul proprio computer il filesystem della macchina remota attraverso una connessione SSH.

In questo tutorial imparerai a utilizzare SSHFS per accedere via SSH a unità di rete e cartelle remote presenti sul tuo server Ubuntu 18.04.

Installazione di SSHFS

SSHFS è uno strumento installabile direttamente tramite le repository ufficiali di Ubuntu. Il suo vantaggio rispetto ad altri file system è inoltre quello di non richiedere alcuna configurazione aggiuntiva.

Aggiorna prima le dipendenze tramite il seguente comando:

sudo apt-get update

Per installare SSHFS ti basterà quindi digitare:

sudo apt-get install sshfs

Montare temporaneamente una cartella remota

La prima cosa da fare è creare una directory nella quale effettuare il montaggio. Digita quindi:

sudo mkdir /mnt/folder_name

N.B. Puoi sostituire ‘folder_name’ con un nome a tua scelta, tuttavia ricordati poi di sostituirlo in tutte le future istruzioni in cui troverai ‘folder_name’.

A questo punto puoi collegarti alla cartella remota utilizzando SSH. Per farlo utilizza il seguente comando:

sudo sshfs -o allow_other,default_permissions user@server_ip:/path/to/folder /mnt/folder_name

Presta attenzione a sostituire:

  • ‘user’ con il nome dell’utente con il quale vuoi fare accesso al server;
  • ‘server_ip’ con l’ip del tuo server (o dominio che lo punta);
  • ‘root/my_server_folder’ con il percorso della cartella remota a cui vuoi connetterti;
  • ‘/mnt/folder_name’ con il percorso della tua cartella locale precedentemente creata.

In questo caso stiamo collegando una specifica cartella di un server, tuttavia puoi collegarti anche direttamente alla cartella root specificando invece di ‘/root/my_server_folder’ solamente ‘/’.

Mounting locale

Appena eseguito il comando, se previsto, ti verrà richiesto di inserire la password per l’utente specificato, proprio poiché si tratta di una connessione SSH.

Se hai invece bisogno di utilizzare la chiave SSH di autorizzazione per l’accesso al server, anziché eseguire il comando mostrato in precedenza dovrai eseguire questo:

sudo sshfs -o allow_other,default_permissions,IdentityFile=~/.ssh/id_rsa user@server_ip:/ /mnt/folder_name 

A questo punto puoi immaginare che tra il tuo computer e quello appena associato avvenga una sorta di sincronizzazione continua. Nonostante ti sembrarà di lavorare in locale, in realtà starai operando direttamente sul disco del tuo Cloud Server.

Se ti rechi nella directory creata (/mnt/server_folder) potrai vedere gli stessi file presenti sul server associato, e più precisamente, nel percorso della directory collegata. Prova a creare un file sul tuo computer all'interno della cartella nella quale hai collegato il server. Noterai che il file appena generato sarà rilevato anche nella macchina remota.

Questo avviene perché nonostante tu abbia generato il file in un percorso locale del tuo computer, esso è stato in realtà trasferito in tempo reale anche sul server collegato: il fatto che tu lo riesca a vedere “in locale” è dovuto all’operazione di mounting con SSHFS.

N.B. Tieni a mente che se il server viene spento o riavviato, devi ripetere la procedura per connettere nuovamente la cartella in locale.

Differenze cartella locale e remota

Disconnettere una cartella remota

Nel momento in cui non hai più bisogno di avere una cartella del tuo server montata in locale ti basterà effettuare l'unmounting digitando:

sudo umount /mnt/server_folder 

Montare permanentemente una cartella remota

Per evitare che alla disconnessione del server tu debba ripetere l’operazione di mounting, SSHFS fornisce la possibilità di montare una directory in maniera permanente, a patto di modificare un file di configurazione.

Digita quindi:

sudo nano /etc/fstab

Scorri il file fino in fondo e poi incolla il seguente testo:

sshfs#user@server_ip:/path/to/mount /mnt/server_folder

Come in precedenza sostituisci i parametri ‘user’, ‘server_ip’, e ‘server_folder’. Sostituisci inoltre ‘path/to/mount’ con il percorso della cartella a cui collegarti dalla tua macchina locale.

Terminata la modifica, salva il file (CTRL+X / Y / Invio) e qualora fosse necessario, riavvia.

Modifica file fstab

Per quanto questa operazione risulti molto comoda comporta anche un notevole svantaggio: in questa maniera esisterà infatti un canale diretto tra la tua macchina e quella remota. Qualora il server dovesse subire qualche tipo di attacco, sarebbe possibile per i malintenzionati accedere anche al tuo computer locale. Sconsigliamo quindi di effettuare questo tipo di montaggio permanente, se non strettamente necessario.

Conclusioni

In questo tutorial hai imparato come utilizzare SSHFS per montare directory remote mediante SSH. Effettuare il mounting in locale di una macchina remota può essere molto utile in diversi scenari.

Se ad esempio si possiede un VPS che ospita i propri siti web, grazie ad SSHFS sarebbe possibile modificare direttamente con il proprio IDE il codice delle pagine del sito web, senza dover effettuare continue sincronizzazioni o copie. Si opererebbe infatti su tali file proprio come se fossero salvati localmente sulla propria macchina, con notevoli vantaggi in termini di rapidità di modifica e aggiornamento.