Le basi

FTP, SFTP e FTPS spiegati come si deve

6 min di lettura

Tre sigle, quattro lettere ciascuna, una lettera di differenza. Verrebbe da pensare che siano varianti dello stesso tema. Due lo sono. La terza è un protocollo completamente estraneo a cui è toccato un nome che collide con gli altri, e quel singolo fatto spiega gran parte della confusione che si fa configurando un server.

Prima la versione breve, poi il dettaglio.

FTPFTPSSFTP
Nome completoFile Transfer ProtocolFTP Secure (FTP su TLS)SSH File Transfer Protocol
Si basa suSe stesso (RFC 959)FTP + TLSSSH (RFC 4253)
CifratoNo
Connessioni2 (controllo + dati)2 (controllo + dati)1
Porta predefinita2121 (esplicito) / 990 (implicito)22
Va d’accordo coi firewallNoPeggio
AutenticazionePasswordPassword + certificato del serverPassword o chiave SSH
Verifica l’identità del serverNoSì, col certificatoSì, con la host key
Disponibile se hai SSHSempre

FTP: l’originale

FTP sposta i file usando due connessioni TCP separate — una per i comandi, una per i byte — e manda tutto, credenziali comprese, in chiaro. Quello che conta qui è che non offre nessuna cifratura e nessun modo di verificare che dall’altra parte ci sia davvero il server giusto.

Usalo solo su una rete di cui ti fidi già, e solo quando l’altro capo non sa offrire niente di meglio.

FTPS: FTP con TLS avvolto attorno

FTPS è FTP a tutti gli effetti. Stessi comandi, stesse due connessioni, stesse stranezze — con in più uno strato TLS, esattamente la stessa tecnologia che trasforma HTTP in HTTPS. Esiste in due varianti:

FTPS esplicito (AUTH TLS) si collega normalmente alla porta 21 in chiaro, poi manda un comando AUTH TLS per passare a una connessione cifrata prima di autenticarsi. È la forma moderna e consigliata, ed è quella che oggi quasi tutti intendono dicendo “FTPS”.

FTPS implicito dà per scontato il TLS fin dal primo byte e tradizionalmente ascolta sulla porta 990. È stato dichiarato deprecato, e poi tenuto in vita in sordina da apparati hardware e server datati che non si sono mai spostati. Upstream li supporta entrambi perché nella pratica li incontri entrambi.

Siccome sotto resta FTP, FTPS si porta dietro il progetto a due connessioni — e peggiora la situazione con i firewall. Un firewall che ispezionava la connessione di controllo per capire quale porta dati aspettarsi ora non riesce più a leggerla, perché è cifrata. Da qui il classico fallimento di FTPS: l’autenticazione riesce perfettamente, poi l’elenco delle cartelle va in timeout.

FTPS introduce anche l’identità del server: il server presenta un certificato TLS. Se è firmato da un’autorità pubblica viene validato come qualsiasi sito HTTPS. Molto spesso però, su una macchina gestita in proprio, è autofirmato — ed è lì che entrano in gioco le impronte dei certificati e la fiducia al primo utilizzo.

SFTP: non è FTP per niente

SFTP è l’SSH File Transfer Protocol. Non è FTP con una S attaccata davanti. Non condivide con FTP nessun comando, nessun codice, nessuna porta e nessuna parentela di progetto. È nato come parte di SSH alla fine degli anni Novanta e funziona in modo completamente diverso:

  • Una sola connessione. Tutto — comandi, elenchi, dati dei file — viaggia multiplexato dentro un unico canale SSH cifrato sulla porta 22. Non c’è nessuna connessione dati da bloccare, quindi non esistono modo attivo e passivo né drammi con i firewall.
  • Operazioni strutturate. Elencare una cartella restituisce record tipizzati, non una riga formattata per gli umani da interpretare a mano. Nomi, dimensioni, date e permessi arrivano senza ambiguità — niente delle stranezze sui file nascosti tipiche degli elenchi FTP.
  • Autenticazione SSH. Le password funzionano, ma funzionano anche le chiavi SSH, enormemente più solide e impossibili da rubare con il phishing o da indovinare a forza bruta.
  • Gratis insieme a SSH. Se un server accetta login SSH, quasi certamente accetta già SFTP, senza nessun servizio in più da installare o configurare.

Il risultato pratico: su qualsiasi macchina Linux che affitti, SFTP è disponibile già adesso, passa attraverso qualunque firewall che permetta SSH ed è nettamente migliore delle alternative.

E SCP?

SCP è il vecchio comando di copia basato su SSH. Trasferisce un file e finisce lì — niente navigazione delle cartelle, niente ripresa, niente rinomina. È stato anche dichiarato deprecato in OpenSSH a favore di SFTP, in parte per ragioni di sicurezza legate a come gestiva i nomi dei file. Se stai scegliendo oggi, scegli SFTP.

Quindi quale usare?

Usa SFTP ogni volta che il server offre SSH. È cifrato, autentica il server, supporta le chiavi, attraversa i firewall e non ha nessuna delle stranezze protocollari di FTP. Questo copre praticamente ogni VPS, istanza cloud e server Linux gestito.

Usa FTPS quando il tuo hosting offre FTP su TLS ma nessun accesso alla shell. È la situazione tipica degli hosting condivisi economici e dei NAS. Preferisci il modo esplicito sulla porta 21; ripiega sull’implicito sulla 990 solo se il server insiste.

Usa FTP solo su una rete locale fidata, parlando con un dispositivo che non sa fare altro — un NAS vecchio, una telecamera, uno strumento da laboratorio. Mai attraverso internet.

Se il tuo hosting offre solo FTP semplice per un sito pubblico, è un buon motivo per valutare un altro hosting.

Passo per passo

  1. Controlla per prima cosa se hai accesso SSH — se il pannello del tuo hosting nomina SSH, accesso shell o un terminale, allora hai SFTP. Usalo e fermati qui.
  2. Altrimenti cerca FTPS — nella documentazione del tuo hosting, “FTP over TLS”, “TLS esplicito” e “FTP sicuro” indicano tutti FTPS sulla porta 21.
  3. Imposta il protocollo esplicitamente nel client — non affidarti al riconoscimento automatico. In Upstream l’editor del sito ha un selettore con FTP, FTPS esplicito, FTPS implicito e SFTP.
  4. Verifica l’identità del server alla prima connessione — ti verrà mostrata l’impronta di un certificato o di una host key. Confrontala con quella pubblicata dal tuo hosting, poi accettala una volta sola.
  5. Se gli elenchi FTPS si bloccano, passa al modo passivo — e se ancora non funziona, il problema è il firewall, non le tue credenziali.

Domande frequenti

SFTP è semplicemente FTP con la cifratura?

No. Sono protocolli senza alcuna parentela, con nomi purtroppo somiglianti. SFTP viaggia dentro SSH sulla porta 22 e non condivide nulla con FTP oltre all’idea generale di spostare file.

È più sicuro SFTP o FTPS?

Entrambi cifrano correttamente, quindi nessuno dei due è sensibilmente più debole in transito. Nella pratica SFTP è di solito la scelta migliore perché supporta l’autenticazione con chiave, ha bisogno di una sola porta e presenta una superficie d’attacco più semplice. Anche FTPS con un certificato validato correttamente è perfettamente sicuro.

Quale dei due è più veloce?

Sono abbastanza vicini da non fare quasi mai differenza. FTPS può guadagnare qualcosa su file singoli molto grandi, perché la sua connessione dati è un flusso TLS puro con meno sovraccarico di incapsulamento rispetto ai canali SSH. Nell’uso reale conta molto di più quanti file il client trasferisce in parallelo che non il protocollo.

Posso usare SFTP sulla porta 21?

Solo se il server è stato configurato apposta in quel modo, cosa insolita. SFTP segue normalmente SSH sulla porta 22. Se un hosting ti dice “SFTP sulla porta 21”, verifica bene che non intenda in realtà FTPS.

Il mio Mac supporta tutti e tre?

macOS include il comando sftp nel Terminale, e nient’altro — il Finder non sa più scrivere sui server FTP. Per FTP e FTPS, o per lavorare in modo grafico, serve un client dedicato.

Upstream — il client FTP, FTPS e SFTP nativo per macOS

Una coda di trasferimento che puoi mettere in pausa, riprendere e riordinare, sincronizzazione delle cartelle con anteprima dry-run, modifica remota live e credenziali nel Keychain di macOS. Gratis, senza abbonamento.