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.
- 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 sshDi 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 remoteLa 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 sshCrea 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.
- Esegui il seguente comando per creare un nuovo gruppo ‘ sftpgroup ‘.
sudo groupadd sftpgroup- Crea un nuovo utente ‘ sftpuser ‘ utilizzando il seguente comando.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuserOpzioni 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.
- Successivamente, crea la password per l’utente ‘ sftpuser ‘ utilizzando il comando qui sotto.
passwd sftpuserDigita la tua password forte e ripetila, quindi premi ‘ Enter ‘ 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.
Configura la directory Chroot Jail
Dopo aver creato un nuovo gruppo e utente, devi creare e configurare la directory chroot per gli utenti SFTP.
- Per l’utente ‘sftpuser’, la nuova home directory sarà in ‘/srv/sftpuser’. Esegui il comando qui sotto per crearla.
mkdir -p /srv/sftpuser- 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/sftpuserDai al gruppo il permesso di leggere ed eseguire, ma non di scrivere.
sudo chmod g+rx /srv/sftpuser- 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
Finora, di seguito i dettagli della configurazione per la directory utente SFTP.
- La directory ‘ /srv/sftpuser ‘ è la home directory predefinita.
- L’utente ‘ sftpuser ‘ non 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’.
- Modifica la configurazione ssh ‘ /etc/ssh/sshd_config ‘ utilizzando nano o vim.
sudo nano /etc/ssh/sshd_config- Commenta la seguente configurazione per disabilitare la funzionalità standalone ‘ sftp-server ‘.
#Subsystem sftp /usr/lib/openssh/sftp-server- Incolla la seguente configurazione in fondo alla linea.
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftpSalva 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 ‘.
- Per applicare una nuova configurazione, riavvia il servizio ssh utilizzando il comando qui sotto.
sudo systemctl restart sshdIl 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.
- Per connetterti al server SFTP, esegui il comando sftp come di seguito.
sftp ftpuser@SERVER-IPSe 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-IPDigita la password per l’ ‘ sftpuser ‘.
- 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
- 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 /- 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/
- 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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.