Come utilizzare SSHFS per montare file system remoti su SSH
introduzione
Il trasferimento di file su una connessione SSH, utilizzando uno dei montaggi NFS, entrambi richiedono dipendenze aggiuntive e possono introdurre problemi di sicurezza o altri sovraccarichi.
In alternativa, puoi installare SSHFS per montare una directory remota utilizzando solo SSH. Ciò ha il vantaggio significativo di non richiedere alcuna configurazione aggiuntiva e di ereditare le autorizzazioni dall'utente SSH sul sistema remoto. SSHFS è particolarmente utile quando è necessario leggere da un ampio set di file in modo interattivo su base individuale.
Prerequisiti
- Due server Linux configurati per consentire l'accesso SSH tra di loro. Uno di questi può essere una macchina locale piuttosto che un server cloud. Puoi farlo seguendo la nostra Guida alla configurazione iniziale del server, connettendoti direttamente da una macchina all'altra.
Passaggio 1: installazione di SSHFS
SSHFS è disponibile per la maggior parte delle distribuzioni Linux. Su Ubuntu, puoi installarlo usando apt
.
Per prima cosa, usa apt update
per aggiornare le fonti del tuo pacchetto:
- sudo apt update
Quindi, usa apt install
per installare il pacchetto sshfs
.
- sudo apt install sshfs
Nota: SSHFS può essere installato su Mac o Windows tramite l'uso di librerie di file system denominate FUSE, che forniscono l'interoperabilità con gli ambienti Linux. Utilizzeranno concetti e dettagli di connessione identici a questo tutorial, ma potrebbero richiedere l'utilizzo di interfacce di configurazione diverse o l'installazione di librerie di terze parti. Questo tutorial coprirà SSHFS solo su Linux, ma dovresti essere in grado di adattare questi passaggi alle implementazioni FUSE su Mac o Windows.
Puoi installare SSHFS per Windows dal repository GitHub del progetto.
Puoi installare SSHFS per Mac dal progetto macFUSE.
Passaggio 2: montaggio del file system remoto
Ogni volta che monti un filesystem remoto in un ambiente Linux, hai prima bisogno di una directory vuota in cui montarlo. La maggior parte degli ambienti Linux include una directory chiamata /mnt
in cui puoi creare sottodirectory per questo scopo.
Nota: su Windows, i filesystem remoti a volte sono montati con la propria lettera di unità come G:
, e su Mac, di solito sono montati nella directory /Volumes
.
Crea una sottodirectory all'interno di /mnt
chiamata droplet
usando il comando mkdir
:
- sudo mkdir /mnt/droplet
Ora puoi montare una directory remota usando sshfs
.
- sudo sshfs -o allow_other,default_permissions sammy@your_other_server:~/ /mnt/droplet
Le opzioni di questo comando si comportano come segue:
-o
precede varie opzioni di montaggio (è lo stesso di quando si esegue il comandomount
normalmente per i montaggi di dischi non SSH). In questo caso, stai usandoallow_other
per consentire ad altri utenti di accedere a questo montaggio (in modo che si comporti come un normale montaggio su disco, poichésshfs
lo impedisce per impostazione predefinita) edefault_permissions
(in modo che altrimenti utilizzi i normali permessi del filesystem).sammy@tuo_altro_server:~/
fornisce il percorso completo della directory remota, incluso il nome utente remoto,sammy
, il server remoto,your_other_server
, e il percorso, in questo caso~/
per la home directory dell'utente remoto. Utilizza la stessa sintassi di SSH o SCP./mnt/droplet
è il percorso della directory locale utilizzata come punto di montaggio.
Se ricevi un messaggio Connection reset by peer
, assicurati di aver copiato la tua chiave SSH sul sistema remoto. sshfs
utilizza una normale connessione SSH in background e, se è la prima volta che ti connetti al sistema remoto tramite SSH, ti potrebbe essere richiesto di accettare l'impronta digitale della chiave dell'host remoto.
OutputThe authenticity of host '164.90.133.64 (164.90.133.64)' can't be established.
ED25519 key fingerprint is SHA256:05SYulMxeTDWFZtf3/ruDDm/3mmHkiTfAr+67FBC0+Q.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Nota: se devi montare una directory remota usando SSHFS senza richiedere i permessi sudo
, puoi creare un gruppo utenti chiamato fuse
sulla tua macchina locale, usando sudo groupadd fuse
, e poi aggiungendo il tuo utente locale a quel gruppo, usando sudo usermod -a -G fuse sammy
.
Puoi usare ls
per elencare i file nella directory montata per vedere se corrispondono al contenuto della directory remota:
- ls /mnt/droplet
Outputremote_file1 remote_file2
Ora puoi lavorare con i file sul tuo server remoto come se fosse un dispositivo fisico collegato al tuo computer locale. Ad esempio, se crei un file nella directory /mnt/droplet
, il file apparirà sul tuo server virtuale. Allo stesso modo, puoi copiare i file all'interno o all'esterno della cartella /mnt/droplet
e questi verranno caricati su o dal tuo server remoto in background.
È importante notare che il comando mount
monta solo un disco remoto per la sessione corrente. Se il server virtuale o la macchina locale viene spento o riavviato, sarà necessario utilizzare lo stesso processo per rimontarlo.
Se non hai più bisogno di questo montaggio, puoi smontarlo con il comando umount
:
- sudo umount /mnt/droplet
Nell'ultimo passaggio, esaminerai un esempio di configurazione di un montaggio permanente.
Passaggio 3: montaggio permanente del file system remoto
Come con altri tipi di montaggio su disco e rete, puoi configurare un montaggio permanente utilizzando SSHFS. Per fare ciò, dovrai aggiungere una voce di configurazione a un file chiamato /etc/fstab
, che gestisce i montaggi del filesystem di Linux all'avvio.
Usando nano
o il tuo editor di testo preferito, apri /etc/fstab
:
- sudo nano /etc/fstab
Alla fine del file, aggiungi una voce come questa:
…
sammy@your_other_server:~/ /mnt/droplet fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/sammy/.ssh/id_rsa,allow_other,default_permissions 0 0
I montaggi permanenti spesso richiedono una serie di opzioni diverse come questa per garantire che si comportino come previsto. Funzionano come segue:
sammy@tuo_altro_server:~/
è di nuovo il percorso remoto, proprio come prima./mnt/droplet
è di nuovo il percorso locale.fuse.sshfs
specifica il driver utilizzato per montare questa directory remota.noauto,x-systemd.automount,_netdev,reconnect
sono un insieme di opzioni che lavorano insieme per garantire che i montaggi permanenti sulle unità di rete si comportino correttamente nel caso in cui la connessione di rete cada dalla macchina locale o la macchina remota.identityfile=/home/sammy/.ssh/id_rsa
specifica un percorso per una chiave SSH locale in modo che la directory remota possa essere montata automaticamente. Nota che questo esempio presuppone che sia il tuo nome utente locale che quello remoto sianosammy
– questo si riferisce al percorso locale. È necessario specificarlo perché/etc/fstab
viene effettivamente eseguito come root e altrimenti non saprebbe quale configurazione SSH del nome utente controllare per una chiave considerata attendibile dal server remoto.allow_other,default_permissions
usa gli stessi permessi del comandomount
sopra.0 0
significa che il filesystem remoto non dovrebbe mai essere scaricato o convalidato dalla macchina locale in caso di errori. Queste opzioni possono essere diverse durante il montaggio di un disco locale.
Salva e chiudi il file. Se stai usando nano
, premi Ctrl+X
, quindi quando richiesto, Y
e poi INVIO
. Puoi quindi testare la configurazione /etc/fstab
riavviando la tua macchina locale, ad esempio usando sudo reboot now
, e verificando che il montaggio venga ricreato automaticamente.
Va notato che i montaggi SSHFS permanenti non sono necessariamente popolari. La natura delle connessioni SSH e SSHFS significa che di solito è più adatta a soluzioni temporanee una tantum, quando non è necessario impegnarsi in un montaggio SMB o NFS che può essere configurato con maggiore ridondanza e altre opzioni. Detto questo, SSHFS è molto flessibile e, cosa più importante, agisce come un vero e proprio driver di filesystem, che ti permette di configurarlo in /etc/fstab
come qualsiasi altro montaggio su disco e di usarlo tanto quanto necessario. Fai attenzione a non esporre accidentalmente più file system remoto su SSH di quanto intendi.
Conclusione
In questo tutorial, hai configurato un montaggio SSHFS da un ambiente Linux a un altro. Sebbene non sia la soluzione più scalabile o performante per una distribuzione di produzione, SSHFS può essere molto utile con una configurazione minima.
Successivamente, potresti voler imparare a lavorare con l'archiviazione di oggetti che può essere montata contemporaneamente su più server.