SFTP Linux · 6 min read · Sep 24, 2025

Come installare e utilizzare SFTP sui server Linux

SFTP o SSH File Transfer Protocol è un metodo per trasferire dati in modo sicuro tra due computer e oltre. È FTP che funziona sopra il protocollo SSH e sfrutta la sua sicurezza, supportando completamente la sua autenticazione.

Oggi, si raccomanda di utilizzare SFTP invece del protocollo FTP o FTP/S legacy. SFTP è sicuro per impostazione predefinita perché è così che funziona SSH. Da un punto di vista della sicurezza, SFTP ti protegge anche contro il sniffing delle password e gli attacchi man-in-the-middle (MiTM).

Proprio come SSH, SFTP protegge l’integrità dei dati utilizzando la crittografia e una funzione di hash crittografico. Supporta anche più metodi di autenticazione sicuri, inclusa l’autenticazione basata su password e chiave. Inoltre, riduce la porta aperta del server verso la rete esterna perché funziona sulla stessa porta del protocollo SSH.

Prerequisiti

In questa guida, imparerai come configurare un server SFTP su un sistema Linux. Inoltre, imparerai il comando 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 - comando sftp da riga di comando o qualsiasi client GUI a tua scelta.

Verifica i pacchetti OpenSSH

Per impostare un server SFTP, i pacchetti OpenSSH devono essere installati sul tuo sistema Linux. Quasi tutti i server delle distribuzioni Linux hanno i pacchetti OpenSSH installati per impostazione predefinita. Ma, nel caso in cui tu non abbia il pacchetto OpenSSH sul tuo sistema, puoi installarlo dal repository ufficiale.

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

Per i server Debian o Ubuntu, puoi utilizzare il comando dpkg qui sotto.

dpkg -l | grep ssh

Di seguito è riportato l’output dal nostro sistema Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        Libreria client-side SSH2  
ii  openssh-client                1:8.4p1-5                      amd64        client di shell sicura (SSH), per accesso sicuro a macchine remote  
ii  openssh-server                1:8.4p1-5                      amd64        server di shell sicura (SSH), per accesso sicuro da macchine remote  
ii  openssh-sftp-server           1:8.4p1-5                      amd64        modulo server sftp di shell sicura (SSH), per accesso SFTP da macchine remote

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

Puoi utilizzare il comando rpm qui sotto per gli utenti RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux.

rpm -qa | grep ssh

Crea gruppo e utente

In questo passaggio, creerai un nuovo gruppo e un nuovo utente per il server SFTP. Gli utenti all’interno di questo gruppo saranno autorizzati ad accedere al server SFTP. Per motivi di sicurezza, gli utenti SFTP non possono accedere al servizio SSH; possono accedere solo al server SFTP.

  1. Esegui il seguente comando per creare un nuovo gruppo ‘ sftpgroup ‘.
sudo groupadd sftpgroup
  1. Crea un nuovo utente ‘ sftpuser ‘ utilizzando il seguente comando.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Opzioni dettagliate:

  • -G: aggiungi automaticamente l’utente al gruppo ‘ 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.
  1. Successivamente, crea la password per l’utente ‘ sftpuser ‘ utilizzando il comando qui sotto.
passwd sftpuser

Digita la tua password forte e ripetila, quindi premi ‘ Enter ‘ per confermare.

Aggiungi utente e gruppo sftpserver

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.

Configura la directory Chroot Jail

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 qui sotto per crearla.
mkdir -p /srv/sftpuser
  1. Per impostare chroot per l’utente ‘ sftpuser ‘, devi cambiare la proprietà della directory all’utente root, ma mantenere il gruppo per leggere ed eseguire senza accesso in scrittura.

Cambia la proprietà della directory all’utente ‘root’ utilizzando il seguente comando.

sudo chown root /srv/sftpuser

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

sudo chmod g+rx /srv/sftpuser
  1. Successivamente, crea una nuova directory ‘data’ all’interno della directory ‘ /srv/sftpuser ‘ e cambia la proprietà di quella directory ‘ data ‘ all’utente ‘ sftpuser ‘.
mkdir -p /srv/sftpuser/data  
chown sftpuser:sftpuser /srv/sftpuser/data

configura la directory chroot jail per stpuser

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

  • La directory ‘ /srv/sftpuser ‘ è la home directory predefinita.
  • L’utente ‘ sftpusernon può scrivere 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 sul 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 ‘ utilizzando nano o vim.
sudo nano /etc/ssh/sshd_config
  1. Commenta la seguente configurazione per disabilitare la funzionalità standalone ‘ sftp-server ‘.
#Subsystem      sftp    /usr/lib/openssh/sftp-server
  1. Incolla la seguente configurazione in fondo alla linea.
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 sottoprocesso ‘ sftp-server ‘, stiamo utilizzando l’ ‘ internal-sftp ‘.
  • Il server SFTP è abilitato per il gruppo ‘ sftpgroup ‘.
  1. Per applicare una nuova configurazione, riavvia il servizio ssh utilizzando il comando qui sotto.
sudo systemctl restart sshd

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

Accedi al server SFTP

Dalla parte del client, utilizzeremo il comando sftp da riga di comando, che è installato per impostazione predefinita sulla maggior parte delle distribuzioni Linux. Ma, puoi anche utilizzare un altro client da riga di comando o un client FTP GUI come FileZilla, Cyberduck, ecc.

  1. Per connetterti al server SFTP, esegui il comando sftp come di seguito.
sftp ftpuser@SERVER-IP

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

sftp -P PORT ftpuser@SERVER-IP

Digita la password per l’ ‘ sftpuser ‘.

  1. Una volta connesso al server SFTP, esegui il seguente comando.

Mostra il percorso corrente della directory di lavoro e elenca tutti i file e le directory disponibili.

pwd  
ls

Connetti a sftpserver con comando sftp

  1. Carica un file locale sul server SFTP nella directory ‘/ ‘, il che risulterà in ‘ permesso negato ‘, perché è la directory chroot.
put /path/to/file/on/local /
  1. Carica un file locale nella directory ‘ /data/ ‘ sul server SFTP. Se la tua configurazione è corretta, il tuo file verrà caricato nella directory ‘ /data/ ‘.
put /path/to/file1/on/local1 /data/  
put /path/to/file2/on/local /data/

Verifica lettura e scrittura su sftpserver

  1. Ora controlla i file disponibili nella directory ‘ /data ‘ utilizzando il seguente comando.
ls /data/

E vedrai il tuo file caricato sul server SFTP.

Conclusione

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

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.