Ricerca nel sito web

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:

  1. sudo apt update

Quindi, usa apt install per installare il pacchetto sshfs.

  1. 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:

  1. sudo mkdir /mnt/droplet

Ora puoi montare una directory remota usando sshfs.

  1. 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 comando mount normalmente per i montaggi di dischi non SSH). In questo caso, stai usando allow_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) e default_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.

Output
The 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:

  1. ls /mnt/droplet
Output
remote_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:

  1. 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:

  1. 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 siano sammy – 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 comando mount 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.