|
SSH o SFTP: cosa cambia e quale usare sul tuo server
SSH e SFTP fanno cose diverse. Scopri quando usare l'uno o l'altro e come configurarli correttamente sul tuo server self-hosted.

Se gestisci un server, un NAS o qualsiasi servizio self-hosted, prima o poi ti troverai davanti a una scelta: usare SSH o SFTP per accedere ai tuoi file e al tuo sistema. I due termini appaiono spesso insieme, vengono talvolta usati come sinonimi, ma non sono la stessa cosa. Capire la differenza ti aiuta a configurare l’accesso nel modo giusto, con il livello di sicurezza appropriato per ogni situazione.
In questa guida vediamo cosa sono, come funzionano e quando usare SSH o SFTP.
Indice dei contenuti
- SSH: l’accesso completo al tuo server
- Connettersi via SSH: i comandi di base
- Autenticazione: password o chiave crittografica
- Tunnel SSH: accedere a servizi interni senza aprire porte
- SFTP: solo i file, niente di più
- Le stesse credenziali SSH, zero configurazione aggiuntiva
- Connettersi via SFTP: da riga di comando e con FileZilla
- Perché SFTP è più sicuro di SSH per certi accessi
- Creare un utente solo-SFTP con accesso limitato
- Confronto pratico
- Quale scegliere?
- Errori frequenti da evitare
- Conclusione
SSH: l’accesso completo al tuo server
SSH (Secure Shell) è un protocollo che ti permette di connetterti a un server remoto in modo cifrato e di controllarlo come se fossi fisicamente davanti a lui. È lo strumento principale di chi amministra server Linux, container, VPS e NAS.
Con SSH puoi:
- Aprire un terminale remoto ed eseguire comandi
- Avviare, fermare e monitorare servizi
- Modificare file di configurazione
- Creare tunnel cifrati per accedere a risorse interne
- Automatizzare operazioni con script
Il punto chiave di SSH è che dà accesso completo al sistema. Chi si connette via SSH con le credenziali giuste può fare praticamente tutto ciò che farebbe un amministratore locale.
Connettersi via SSH: i comandi di base
La connessione più semplice richiede solo utente e indirizzo del server:
ssh utente@192.168.1.100
Se il server ascolta su una porta diversa dalla 22 (pratica comune per ridurre i tentativi automatici di intrusione):
ssh -p 2222 utente@192.168.1.100
Autenticazione: password o chiave crittografica
SSH supporta due metodi di autenticazione principali. Il primo è la classica password, semplice ma esposta ad attacchi di forza bruta se il server è esposto su internet. Il secondo è l’autenticazione con chiave, dove si generano una chiave pubblica (da caricare sul server) e una chiave privata (da tenere sul proprio dispositivo): senza la chiave privata, l’accesso è impossibile anche conoscendo la password.
Per generare una coppia di chiavi sul tuo computer:
ssh-keygen -t ed25519 -C "homelab"
Questo crea due file: ~/.ssh/id_ed25519 (chiave privata, non condividere mai) e ~/.ssh/id_ed25519.pub (chiave pubblica, da copiare sul server). Per caricarla automaticamente:
ssh-copy-id utente@192.168.1.100
Da quel momento potrai accedere senza inserire la password. Per chi gestisce server self-hosted esposti su internet, l’autenticazione con chiave non è un’opzione avanzata: è la baseline minima consigliata.
Tunnel SSH: accedere a servizi interni senza aprire porte
Una funzionalità meno conosciuta ma molto utile è il port forwarding. SSH può creare un tunnel cifrato tra il tuo computer e un servizio interno al server, come se quel servizio fosse in esecuzione localmente.
Un esempio pratico: hai Portainer (la GUI per Docker) che gira sulla porta 9000 del tuo server, ma non vuoi esporla su internet. Con questo comando:
ssh -N -L 9000:localhost:9000 utente@192.168.1.100
puoi aprire http://localhost:9000 sul tuo browser e raggiungere Portainer attraverso il tunnel SSH, senza aprire nessuna porta sul firewall. Lo stesso principio funziona per Grafana, Home Assistant, database, e qualsiasi altro servizio interno.
SFTP: solo i file, niente di più
SFTP (SSH File Transfer Protocol) è un protocollo di trasferimento file che usa SSH come layer di trasporto cifrato per autenticazione e cifratura, ma invece di aprirti un terminale ti offre solo la possibilità di gestire file: caricare, scaricare, rinominare, cancellare, navigare tra le cartelle.
Non si tratta di FTP con SSH sopra, come il nome potrebbe far pensare: è un protocollo completamente diverso, progettato per essere sicuro fin dall’inizio.
Con SFTP puoi:
- Caricare e scaricare file in modo sicuro
- Navigare e gestire directory remote
- Rinominare e cancellare file
- Impostare permessi sui file
Le stesse credenziali SSH, zero configurazione aggiuntiva
Un dettaglio che sorprende chi si avvicina per la prima volta: SFTP non richiede un account separato. Usa esattamente le stesse credenziali SSH, perché gira sopra la stessa connessione. Se riesci ad accedere al server via SSH con utente e password (o con la tua chiave), puoi usare quelle stesse credenziali per connetterti via SFTP. Non c’è nulla da configurare in più sul server, a meno che tu non voglia creare utenti dedicati con accesso limitato (lo vediamo più avanti).
Connettersi via SFTP: da riga di comando e con FileZilla
Da terminale, la connessione SFTP funziona come SSH, ma apre una sessione interattiva per la gestione file invece di un terminale:
sftp utente@192.168.1.100
Una volta connesso, i comandi più utili sono:
ls # elenca i file nella directory remota
lls # elenca i file nella directory locale
cd cartella # entra in una cartella remota
lcd cartella # entra in una cartella locale
get file.txt # scarica un file dal server
put backup.tar # carica un file sul server
mkdir archivio # crea una cartella remota
exit # chiude la sessione
Per trasferire file senza aprire una sessione interattiva, puoi anche usare sftp in modalità batch. Questo è utile negli script di backup:
sftp utente@192.168.1.100 <<EOF
put /backup/dati.tar.gz /uploads/dati.tar.gz
exit
EOF
Se preferisci un’interfaccia grafica, FileZilla è il client gratuito più diffuso e funziona su Windows, macOS e Linux. Per connettersi via SFTP basta aprire il Site Manager, scegliere il protocollo SFTP, inserire indirizzo, porta, utente e password (o indicare il file della chiave privata nella sezione dedicata). FileZilla mostra i file locali e remoti affiancati e permette di trascinare i file da un lato all’altro, rendendo i trasferimenti accessibili anche a chi non ama la riga di comando.
Perché SFTP è più sicuro di SSH per certi accessi
Quando dai accesso SFTP a qualcuno, puoi configurare il server in modo che quella persona non possa aprire un terminale, non possa eseguire comandi, e non possa uscire da una cartella specifica. Si chiama accesso in chroot: l’utente vede solo la directory che gli hai assegnato, come se fosse l’unica esistente sul server.
Questo è fondamentale quando devi condividere l’accesso con qualcuno di cui ti fidi per caricare file, ma a cui non vuoi dare controllo sull’intero sistema: un collaboratore, un servizio automatizzato, un backup remoto.
Creare un utente solo-SFTP con accesso limitato
Ecco la configurazione completa per un utente che può solo caricare file in una cartella dedicata, senza mai accedere alla shell. I comandi sono testati su Debian e Ubuntu; su altre distribuzioni il percorso di nologin o il comando di ricarica del servizio potrebbero differire.
Prima crea l’utente e la cartella:
sudo useradd -s /usr/sbin/nologin -m backup_remoto
sudo mkdir -p /sftp/backup_remoto/uploads
sudo chown root:root /sftp/backup_remoto
sudo chown backup_remoto /sftp/backup_remoto/uploads
Poi aggiungi queste righe in fondo a /etc/ssh/sshd_config:
Match User backup_remoto
ChrootDirectory /sftp/backup_remoto
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Infine ricarica SSH:
sudo systemctl reload sshd
Da questo momento backup_remoto può connettersi via SFTP e accedere solo alla cartella uploads, senza possibilità di navigare nel resto del sistema o aprire un terminale.
Confronto pratico
| Caratteristica | SSH | SFTP |
|---|---|---|
| Accesso al terminale | Sì | No |
| Trasferimento file | Solo con strumenti aggiuntivi (SCP) | Sì, nativo |
| Esecuzione di comandi | Sì | No |
| Accesso limitato a una cartella | No (di default) | Sì, con chroot |
| Cifratura | Sì | Sì, nativa |
| Adatto a terze parti | No | Sì |
| Porta utilizzata | 22 | 22 (stessa di SSH) |
Quale scegliere?
La risposta dipende da cosa devi fare e a chi stai dando l’accesso.
Scegli SSH quando:
- Sei tu ad accedere al tuo server per amministrarlo
- Devi eseguire comandi, gestire servizi o configurare il sistema
- Vuoi creare tunnel per raggiungere risorse interne
- Stai automatizzando operazioni con script
Scegli SFTP quando:
- Devi caricare o scaricare file senza bisogno di accedere al terminale
- Vuoi dare accesso a un collaboratore o a un servizio esterno limitandolo a una cartella
- Stai configurando backup automatici verso il server
- Vuoi ridurre al minimo la superficie di attacco
Se gestisci un NAS come Synology o QNAP, troverai spesso entrambi i protocolli già disponibili nelle impostazioni. In quel caso, abilita SFTP per i trasferimenti file e limita SSH solo agli account amministratori di cui hai reale bisogno.
Errori frequenti da evitare
Dare accesso SSH quando basterebbe SFTP. Se un servizio deve solo caricare file, non ha bisogno di un terminale. Meno privilegi si concedono, meno danni può causare una credenziale compromessa.
Lasciare SSH aperto su internet con password semplici. I bot che cercano server SSH esposti sulla porta 22 sono attivi 24 ore su 24. Se SSH è accessibile dall’esterno, usa sempre l’autenticazione con chiave e considera di cambiare la porta di ascolto. Per disabilitare del tutto l’accesso con password, imposta in /etc/ssh/sshd_config:
PasswordAuthentication no
Confondere SFTP con FTP. FTP è un protocollo vecchio e non cifrato: trasmette credenziali e file in chiaro. SFTP (SSH File Transfer Protocol) è un sottosistema del protocollo SSH-2, progettato da Tatu Ylönen, lo stesso autore di SSH. Non è FTP cifrato, non è FTP su SSH: è un protocollo binario completamente diverso, con un formato dei pacchetti, un set di comandi e un’architettura di connessione propri. FTP apre due canali TCP separati (uno per il controllo, uno per i dati) e comunica tramite comandi testuali come USER, PASS, RETR. SFTP usa un singolo canale cifrato sulla porta 22 e pacchetti binari senza alcuna compatibilità con FTP.
Conclusione
SSH e SFTP non sono in competizione: si completano. SSH ti dà il controllo completo del sistema, SFTP ti permette di scambiare file in modo sicuro senza aprire quella porta. Per chi gestisce server self-hosted, la configurazione ideale prevede SSH riservato agli amministratori autenticati con chiave, e SFTP per tutto ciò che riguarda il trasferimento file, soprattutto quando sono coinvolti servizi automatizzati o accessi esterni.
Pochi minuti dedicati a separare questi due livelli di accesso possono evitare molti problemi in futuro.








