GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare e utilizzare SSHFS su Linux

SSHFS (SSH File System) è un'implementazione di un File System in User Space (FUSE) che consente ai client di montare un filesystem remoto su una connessione SSH. SSHFS utilizza SSH File Transfer Protocol (SFTP) per montare il file system remoto sulla macchina client e le connessioni tra client e server sono sicure e crittografate.

SSHFS può essere utilizzato come alternativa al tradizionale protocollo FTP. È sicuro per impostazione predefinita tramite la connessione SSH e non sono necessari pacchetti o configurazioni aggiuntivi. SSHFS funziona con una semplice configurazione SSH predefinita.

In questo tutorial imparerai come montare una directory remota in modo sicuro usando SSHFS tra due macchine Linux (client e server). Questa guida include anche come impostare chroot su SSHFS che impedirà agli utenti di accedere alle directory di altri utenti.

Prerequisiti

Per seguire questa guida, avrai bisogno di due macchine Linux, un client e un server. Puoi utilizzare qualsiasi distribuzione Linux e assicurarti che sul server sia installato un server OpenSSH e che tu abbia un utente non root con i privilegi di root sudo.

Installazione di SSHFS sul tuo computer locale

Per impostazione predefinita, SSHFS i pacchetti sono disponibili sulla maggior parte delle distribuzioni Linux, inclusi Debian/Ubuntu, RHEL/CentOS/Rocky e ArchLinux/Manjaro. Puoi installarlo facilmente usando il tuo gestore di pacchetti di sistema. In questa sezione, installerai SSHFS sul tuo computer locale/client.

Innanzitutto, aggiorna l'elenco degli indici dei pacchetti eseguendo il comando seguente.

# For Debian/Ubuntu
sudo apt update

# For RHEL/CentOS/RockyLinux
sudo dnf check-update

# For ArchLinux/Manjaro
sudo pacman -Syu

Dopo che l'indice del tuo pacchetto è stato aggiornato, installa il pacchetto SSHFS usando il tuo gestore di pacchetti come di seguito. Nelle distribuzioni Debian e Archlinux, il pacchetto è denominato 'sshfs ', ma nella distribuzione basata su RHEL, il pacchetto è chiamato 'fuse-sshfs '.

# For Debian/Ubuntu
sudo apt install sshfs

# For RHEL/CentOS/RockyLinux
sudo dnf install fuse-sshfs

# For ArchLinux/Manjaro
sudo pacman -S sshfs

Ora hai completato l'installazione del pacchetto SSHFS sul tuo computer locale. Successivamente, imparerai il comando di base per montare e smontare la directory/partizione remota sulla tua macchina locale usando il comando SSHFS.

Base:monta e smonta usando SSHFS

Prima di iniziare con il comando SSHFS, assicurati di avere un server Linux con OpenSSH installato abilitato su di esso. Per l'autenticazione dell'utente al server, è possibile utilizzare l'autenticazione basata su password SSH o l'autenticazione basata su chiave SSH. Tuttavia, potresti prendere in considerazione l'uso dell'autenticazione basata su chiave SSH, che è più sicura dell'autenticazione basata su password.

In questa sezione imparerai il comando di base di 'sshfs' per montare directory/partizioni remote dal server alla macchina locale/client. Inoltre, imparerai come smontare sshfs dal tuo computer locale.

1. Il comando di base di 'sshfs ' per il montaggio di una directory sulla macchina locale tramite il protocollo SSH è di seguito.

sshfs [email protected]:/remote/directory /local/directory

In pratica, monta la directory remota '/srv/data ' dal server '172.16.1.10 ' nella directory della macchina locale '~/data '. Questo esempio utilizza l'utente SSH 'johndoe'.

sshfs [email protected]:/srv/data ~/data

Ora ti verrà richiesta l'autenticazione della password se stai utilizzando l'autenticazione basata sulla password per il tuo SSH.

Per verificare, esegui il comando 'ls' nella directory '~/data ' sul computer locale.

ls -lah ~/data

Vedrai un elenco di file dal server remoto sul tuo computer locale.

2. Ora, per smontare la directory remota dal tuo computer locale, esegui il comando 'fusermount ' come sotto. Questo comando viene utilizzato per montare e smontare i filesystem FUSE.

fusermount -u ~/data

3. Un altro esempio di 'sshfs ' comando che potrebbe interessarti.

Il comando 'sshfs' con l'opzione di debug '-d '. Ogni volta che hai problemi con il comando 'sshfs', usa l'opzione aggiuntiva '-d' per mostrare tutti i messaggi di debug quando si effettua una connessione al server.

sshfs [email protected]:/remote/directory /local/directory -d

Ora, se stai utilizzando un server con una porta SSH non standard, puoi aggiungere l'opzione '-p' seguito dalla tua porta SSH.

sshfs [email protected]:/remote/directory /local/directory -C -p 2222

L'opzione '-C ' abiliterà la compressione, equivalente all'opzione '-o compression=yes' nel comando ssh.

Per un riferimento completo, puoi utilizzare l'opzione '--help' o la pagina di manuale SSHFS.

sshfs --help
man sshfs

Configurazione di Chroot su SSHFS

In questa sezione imparerai come abilitare chroot su SSHFS, che può essere ottenuto configurando il server SSH e specificando l'utente e la directory. L'ambiente chroot limiterà l'accesso alla directory, ma il tuo utente può ancora leggere e scrivere sulla directory di montaggio.

1. Innanzitutto, creerai una nuova directory chroot per il tuo utente e consentirai l'accesso in lettura e scrittura. In questa guida creerai una nuova directory condivisa '/srv/shared', quindi creerai una nuova home directory e una nuova directory di dati per ogni utente.

Esegui il comando seguente per creare una nuova directory condivisa principale '/srv/shared' e cambia la proprietà dell'utente e del gruppo 'root '.

mkdir -p /srv/shared
sudo chown -R root:root /srv/shared

2. Ora, crea un'altra directory per ogni utente sotto '/srv/shared' directory. E assicurati di cambiare la proprietà di quella directory per l'utente e il gruppo 'root '.

mkdir -p /srv/shared/johndoe
sudo chown -R root:root /srv/shared/johndoe

3. Quindi, crea i 'dati ' directory all'interno della directory home dell'utente '/srv/shared/johndoe '. Quindi cambia la proprietà di quella directory nell'utente 'root ' e raggruppa 'johndoe '. Infine, consenti al gruppo 'johndoe ' per leggere e scrivere su quella directory.

mkdir -p /srv/shared/johndoe/data
sudo chown -R root:johndoe /srv/shared/johndoe/data
sudo chmod g+rwx /srv/shared/johndoe/data

Ora puoi montare la directory remota '/data ', ma è equivalente alla directory '/srv/shared/johndoe/data' sul server.

4. Dopo aver creato la directory chroot per il tuo utente, dovrai modificare la configurazione SSH '/etc/ssh/sshd_config'. Modificalo utilizzando nano o il tuo editor di testo preferito.

sudo nano /etc/ssh/sshd_config

Aggiungi le seguenti righe al file.

Subsystem sftp internal-sftp
Match User johndoe
       ChrootDirectory /srv/shared/%u
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no

La configurazione 'internal-sftp ' consentirà a SSH di fungere anche da server SFTP. Quindi definisci la 'CrootDirectory ' per l'utente 'johndoe ' a '/srv/shared/%u ' directory. Il '%u ' significa come nome utente.

Salva e chiudi il file.

5. Quindi, esegui il comando seguente per verificare la configurazione SSH e assicurati di non ricevere errori di sintassi. Quindi riavvia il servizio SSH per applicare una nuova configurazione.

sudo sshd -t
sudo systemctl restart sshd

6. Ora, torna al client/macchina locale, quindi monta la directory remota nell'ambiente chroot. Dovresti usare la directory '/data', invece della directory del percorso completo '/srv/shared/johndoe/data'. E hai i privilegi per leggere, scrivere ed eseguire nella directory 'data'.

sshfs [email protected]:/data ~/data

Per verificare l'accesso in scrittura, crea un nuovo file sul tuo computer client utilizzando il comando seguente.

cd ~/data
echo "This file from client machine" >> another-file.md

Ora, tornando al server, vai alla directory '/srv/shared/johndoe/data ', controlla il file disponibile su quella directory.

cd /srv/shared/johndoe/data/
ls

cat another-file.md

Vedrai il file che hai appena creato dal computer client.

In questa sezione, hai creato la directory chroot per gli utenti SSHFS e configurato il servizio SSH per abilitare chroot.

Risoluzione dei problemi

Se ricevi un errore sulla connessione SSHFS, puoi risolvere i problemi di connessione nei seguenti modi.

Puoi usare la modalità di debug con l'opzione '-d' . Con questa opzione, vedrai i registri della tua connessione sul tuo terminale shell.

Esegui 'sshfs ' comando con modalità di debug come di seguito.

sshfs [email protected]:/data ~/mnt -d

Un altro modo che puoi provare è controllare il registro SSH sul tuo server. Prima di utilizzare il comando 'sshfs', apri un nuovo terminale e connettiti al tuo server, quindi esegui 'tail ' per controllare il servizio di log SSH.

Su un sistema basato su Ubuntu/Debian, il registro SSH è disponibile in '/var/log/auth.log '. E per i sistemi basati su RHEL/CentOS, il registro SSH è disponibile in '/var/log/secure' .

# For Ubuntu/Debian
tail -f /var/log/auth.log

# For RHEL/CentOS
tail -f /var/log/secure

Conclusione

Congratulazioni! Ora hai imparato come usare SSHFS per montare una directory remota dal server al tuo computer locale. Inoltre, hai imparato come configurare l'ambiente chroot su SSHFS e come risolvere i problemi della tua connessione SSHFS.


Linux
  1. Che cos'è un comando Chown in Linux e come usarlo

  2. Come usare il comando Su in Linux

  3. Come installare e utilizzare Flatpak in Linux

  4. Come installare e utilizzare Traceroute in Linux

  5. Come installare e utilizzare il comando Ping in Linux

Come installare e utilizzare phpMyAdmin in Linux

Come installare e utilizzare il comando Ping in Linux

Come installare e utilizzare il comando fd in Linux

Come installare e utilizzare Nu Shell su Linux

Come installare e utilizzare il comando Ack nel sistema Linux

Come installare e utilizzare il comando Ack in Linux