GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare e utilizzare SFTP su server Linux

SFTP o SSH File Transfer Protocol è un metodo per trasferire in modo sicuro i dati tra due computer e altro. È FTP che funziona su protocollo SSH e sfrutta la sua sicurezza e supporta pienamente la sua autenticazione.

Al giorno d'oggi, si consiglia di utilizzare SFTP invece del vecchio protocollo FTP o FTP/S legacy. SFTP è sicuro per impostazione predefinita perché è così che funziona SSH. Dal punto di vista della sicurezza, SFTP ti protegge anche dallo sniffing delle password e dagli attacchi man-in-the-middle (MiTM).

Proprio come SSH, SFTP protegge anche l'integrità dei tuoi dati utilizzando la crittografia e la funzione hash crittografica. Inoltre, supporta più metodi di autenticazione sicura, inclusa l'autenticazione basata su password e chiave. Inoltre, riduce la porta aperta del server alla rete esterna, perché viene eseguito sulla stessa porta del protocollo SSH.

Prerequisiti

In questa guida imparerai come configurare il server SFTP su un sistema Linux. Inoltre, imparerai i comandi di base del client sftp.

Di seguito è riportato l'ambiente attuale per l'implementazione:

  • Un server Linux:puoi utilizzare Debian, Ubuntu, CentOS, Fedora, Rocky o qualsiasi altra distribuzione Linux.
  • Assicurati che i pacchetti OpenSSH siano disponibili sul tuo sistema Linux.
  • Client SFTP - riga di comando sftp o qualsiasi client GUI come preferisci.

Verifica i pacchetti OpenSSH

Per configurare un server SFTP, devi avere i pacchetti OpenSSH installati sul tuo sistema Linux. Quasi tutti i server di distribuzione Linux hanno i pacchetti OpenSSH installati per impostazione predefinita. Ma, nel caso in cui non hai il pacchetto OpenSSH sul tuo sistema, puoi installarlo dal repository ufficiale.

1. Per assicurarti che i pacchetti OpenSSH siano installati sul tuo sistema Linux, usa il comando seguente.

Per i server Debian o Ubuntu, puoi usare il comando dpkg di seguito.

dpkg -l | grep ssh

Di seguito è riportato l'output del nostro sistema Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

La prima colonna 'ii ' significa che il pacchetto è installato. Il pacchetto 'openssh-sftp-server ' è installato sul sistema Debian/Ubuntu.

Per gli utenti RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux, puoi usare il comando rpm come di seguito.

rpm -qa | grep ssh

Crea gruppo e utente

A questo punto creerai un nuovo gruppo e un nuovo utente per il server SFTP. Gli utenti all'interno di questo gruppo potranno accedere al server SFTP. E per motivi di sicurezza, gli utenti SFTP non possono accedere al servizio SSH. Gli utenti SFTP accedono solo al server SFTP.

1. Eseguire il comando seguente per creare un nuovo gruppo 'sftpgroup '.

sudo groupadd sftpgroup

2. Crea un nuovo utente 'sftpuser ' usando il seguente comando.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Opzioni dettagliate:

  • -G :aggiunge automaticamente l'utente al 'sftpgroup '.
  • -d :specifica la home directory per il nuovo utente.
  • -s :imposta il valore predefinito per il nuovo utente su '/sbin/nologin ', il che significa che l'utente non può accedere al server SSH.

3. Quindi, crea la password per l'utente 'sftpuser ' utilizzando il comando seguente.

passwd sftpuser

Digita la tua password complessa e ripeti, quindi premi 'Invio ' per confermare.

Per aggiungere più utenti, ripeti le fasi numero 2 e 3, e, soprattutto, tutti gli utenti SFTP devono essere nel gruppo 'sftpgroup ' senza accesso alla shell tramite SSH.

Imposta la directory della prigione di Chroot

Dopo aver creato un nuovo gruppo e utente, devi creare e configurare la directory chroot per gli utenti SFTP.

1. Per l'utente 'sftpuser', la nuova home directory sarà in '/srv/sftpuser' . Esegui il comando seguente per crearlo.

mkdir -p /srv/sftpuser

2. Per configurare chroot per l'utente 'sftpuser ', devi cambiare la proprietà della directory nell'utente root, ma rimanere il gruppo da leggere ed eseguire senza accesso in scrittura.

Cambia la proprietà della directory in utente 'root' usando il comando seguente.

sudo chown root /srv/sftpuser

Concedi al gruppo il permesso di leggere ed eseguire, ma non di scrivere.

sudo chmod g+rx /srv/sftpuser

3. Quindi, crea una nuova directory 'data' all'interno di '/srv/sftpuser ' directory e cambia la proprietà di quei 'dati ' nella directory dell'utente 'sftpuser '.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Finora, di seguito i dettagli della configurazione per la directory utente SFTP.

  • La directory '/srv/sftuser' è la directory home predefinita.
  • L'utente 'sftpuser ' non posso scrivi nella directory '/srv/sftpuser ', ma può leggere all'interno di quella directory.
  • L'utente 'sftpuser ' può caricare file sul server SFTP nella directory '/srv/sftpuser/data '.

Abilita SFTP su server SSH

Per abilitare il server SFTP su OpenSSH, devi modificare la configurazione SSH '/etc/ssh/sshd_config'.

1. Modifica la configurazione ssh '/etc/ssh/sshd_config ' usando nano o vim.

sudo nano /etc/ssh/sshd_config

2. Commento la seguente configurazione per disabilitare il 'sftp-server autonomo ' funzione.

#Subsystem      sftp    /usr/lib/openssh/sftp-server

3. Incolla la seguente configurazione in fondo alla riga.

Subsystem sftp internal-sftp

Match Group sftpgroup
     ChrootDirectory %h
     X11Forwarding no
     AllowTCPForwarding no
     ForceCommand internal-sftp

Salva la configurazione ed esci.

Configurazione dettagliata:

  • Invece di utilizzare il processo secondario 'sftp-server ', stiamo usando 'internal-sftp '.
  • Il server SFTP abilitato per il gruppo 'sftpgroup '.

4. Per applicare una nuova configurazione, riavvia il servizio ssh utilizzando il comando seguente.

sudo systemctl restart sshd

Il server SFTP è pronto e accessibile ed è in esecuzione sulla stessa porta del servizio SSH.

Accedi al server SFTP

Sul lato client, utilizzeremo la riga di comando sftp, che è installata per impostazione predefinita sulla maggior parte delle distribuzioni Linux. Ma puoi anche usare un altro client della riga di comando o un client FTP della GUI come FileZilla , Cyberduck , ecc.

1. Per connettersi al server SFTP, eseguire il comando sftp come di seguito.

sftp [email protected]

Se il tuo server SFTP e/o SSH è in esecuzione sulla porta personalizzata, puoi utilizzare il comando sftp come di seguito.

sftp -P PORT [email protected]

Digita la password per 'sftpuser '.

2. Una volta connesso al server SFTP, eseguire il comando seguente.

Mostra la directory di lavoro del percorso corrente ed elenca tutti i file e le directory disponibili.

pwd
ls

3. Carica un file locale sul server SFTP nella directory '/ ', che risulterà come 'autorizzazione negata ', perché è la directory chroot.

put /path/to/file/on/local /

4. Carica un file locale nella directory '/data/ ' sul server SFTP. Se la tua configurazione è corretta, il tuo file verrà caricato in '/data/ ' directory.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

5. Ora controlla i file disponibili su '/data ' utilizzando il comando seguente.

ls /data/

E vedrai il tuo file caricato sul server SFTP.

Conclusione

Congratulazioni! Hai configurato correttamente il server SFTP sul sistema Linux. Questo tipo di configurazione può essere applicato sulla maggior parte dei sistemi Linux con OpenSSH installato su di esso. Inoltre, hai imparato a configurare la directory chroot per gli utenti SFTP e hai appreso il comando di base del client sftp.


Ubuntu
  1. Come installare e utilizzare lo schermo Linux, con i comandi

  2. Come installare e utilizzare Hubot su Ubuntu Linux

  3. Come installare e utilizzare Flatpak in Linux

  4. Come installare e configurare il server sftp in Ubuntu 20.04

  5. Come installare e utilizzare Traceroute in Linux

Come installare e utilizzare gli strumenti per screenshot di Ubuntu Linux

Come installare e utilizzare WinSCP su Ubuntu 20.04 Linux

Come installare e utilizzare ProtonVPN su desktop Linux

Come installare e utilizzare Flatpak su Linux

Come installare e utilizzare Thonny Python IDE su Linux

Come installare e utilizzare i3 Window Manager su Linux