Il protocollo SFTP ci permette di trasferire i dati da e verso un server in maniera sicura. In questo articolo vedremo che differenze ci sono tra SFTP ed FTP, com’è nato questo protocollo e cosa ci permette di fare.
Dopodiché ti mostrerò come si fa a collegarsi via SFTP al server usando due client SFTP differenti: FileZilla e Cyberduck.
Table of Contents
Cos’è SFTP?
Il significato di SFTP è SSH File Transfer Protocol e si tratta di un protocollo per il trasferimento dei dati basato sul protocollo SSH.
Con il protocollo SFTP si può stabilire una connessione tra client e server in maniera simile a quella che si ha con il protocollo FTP.
C’è però una differenza sostanziale, in questo caso, infatti c’è un sistema di autenticazione basato non solamente sulle credenziali ma tramite un sistema di chiave pubblica e privata. Grazie a questo sistema si assicura non solo l’autenticazione ma anche la crittografia dei dati che vengono trasmessi.
Infatti, a differenza di quello che il nome del protocollo può far pensare, è importante sapere che SFTP non equivale al protocollo FTP che utilizza una connessione SSH, ma si tratta di un protocollo del tutto differente sviluppato per il trasferimento e la gestione dei file.
Questo protocollo nacque quando la SCS (SSH Communications Security) definì la versione del protocollo SSH-2 e si accorse dell’esigenza di implementare un sistema migliore per il trasferimento dei file, i loro sforzi si concretizzarono con la definizione del protocollo SFTP.
Bisogna anche sapere che in origine il primo sistema di trasferimento dei file che utilizzava SSH era SCP. SCP a differenza di SFTP permette solo di trasferire i file, ma non include anche altre operazioni sui file che sono possibili tramite protocollo SFTP.
A che serve il protocollo SFTP?
Il protocollo SFTP può essere usato come alternativa a FTP per stabilire una connessione sicura con il server.
I suoi usi sono simili a quelli di FTP, con questo protocollo possiamo infatti:
- modificare i file sul server;
- eliminare i file sul server;
- trasferire i file da locale al server;
- scaricare i file dal server al computer locale;
- modificare i permessi dei file.
Il maggiore vantaggio di SFTP rispetto a FTP è la sicurezza.
Come funziona SFTP?
Come dicevamo SFTP è un protocollo alternativo a FTP per la gestione dei file. Questo protocollo si basa su SSH (Secure Shell), quindi per utilizzare il protocollo SFTP per il trasferimento dei file, il server a cui ti stai collegando deve supportare anche le connessioni SSH.
Tutti i piani di SupportHost anche l’hosting condiviso e l’hosting WordPress includono la connessione SSH gratuitamente.
Il protocollo SFTP prevede un’autenticazione del client da parte del server, come FTP quindi, anche SFTP richiede la presenza di un client SFTP e di un server. Il client non è altro che il programma che permette all’utente di collegarsi al server. SFTP non ha una porta a sé, ma utilizza la porta 22 della connessione SSH.
L’autenticazione si basa su un sistema di chiavi SSH (pubblica e privata) che consente di verificare l’identità di chi si sta collegando e garantisce una maggiore sicurezza.
Il protocollo SFTP si appoggia alla connessione SSH che utilizza un sistema di crittografia per proteggere i dati durante la trasmissione e renderli illeggibili all’esterno. La connessione è protetta sia durante l’autenticazione che la trasmissione dei dati, in modo che nessun malintenzionato possa modificare o carpire i dati.
Un trasferimento di file usando il protocollo SFTP prevede una serie di passaggi che possiamo riassumere in questo modo:
- per prima cosa viene usata l’autenticazione SSH per avviare la connessione;
- dopo che il client ha accesso SSH al server può stabilire una connessione SFTP;
- la sessione SFTP si stabilisce tramite la porta (in genere la 22, su SupportHost usiamo la 2299);
- a questo punto può iniziare il trasferimento sicuro dei file.
SFTP vs FTP differenze
Come dicevamo FTP ed SFTP sono due protocolli differenti.
Da una parte troviamo il protocollo FTP che utilizza due porte e deve stabilire due connessioni per collegarsi al server: una connessione serve a impartire i comandi e ricevere i messaggi di conferma, l’altra viene utilizzata per lo scambio di dati.
SFTP, invece, utilizza una sola porta per connettersi e inviare i dati. L’utilizzo di una sola connessione contribuisce a ridurre i rischi di sicurezza.
La differenza principale tra SFTP e FTP riguarda proprio la sicurezza.
Il protocollo FTP prevede uno scambio di dati in chiaro, le informazioni non vengono crittografate e quindi se intercettate da terzi possono essere lette o manipolate.
Con il protocollo SFTP utilizzando una connessione SSH si ha una maggiore sicurezza perché tutte le informazioni in transito vengono crittografate. Le stesse credenziali di accesso che con FTP vengono trasmesse in chiaro, vengono invece crittografate utilizzando il protocollo SFTP.
Come usare SFTP
Ci sono due metodi principali per usare il protocollo SFTP per collegarsi a un server:
- stabilire una connessione da terminale;
- usare un client SFTP.
Visto che il protocollo SFTP è stato integrato in molti client FTP, il secondo metodo è più semplice perché ci permette di collegarci utilizzando un programma dotato di interfaccia grafica.
Per stabilire una connessione da linea di comando dobbiamo fare due passaggi.
Per prima cosa bisogna verificare la propria connessione SSH (si può effettuare l’accesso con password o creare le chiavi SSH, nella guida trovi entrambi i metodi).
Dopodiché si può avviare una sessione SFTP in questo modo:
sftp utente@hostname
Ad esempio:
sftp [email protected]
Per specificare la porta da utilizzare (se diversa da quella di default, vale a dire la 22) bisogna fare così:
sftp -oPort=porta utente@hostname
Per esempio sui servizi di SupportHost usiamo la porta 2299, quindi il nostro comando diventa il seguente:
sftp -oPort=2299 [email protected]
Dopo che la connessione è stata stabilita possiamo usare i comandi per gestire i file, i comandi sono uguali a quelli FTP.
Nella guida a FTP che trovi tra gli articoli correlati in fondo a questa pagina puoi vedere un elenco dei principali comandi FTP.
Ad esempio per trasferire un file dal server al computer in locale usiamo get come in questo esempio:
get file.txt
Per caricare un file dal computer sul server usiamo put, ecco un esempio:
put nuovo.txt
Collegarsi via SFTP con FileZilla e Cyberduck
Per collegarsi via SFTP con un client come FileZilla o Cyberduck bisogna aver generato le chiavi SSH per poter importare la chiave privata sul client.
I primi due passaggi: la generazione delle chiavi e l’aggiunta della chiave pubblica sul server sono identici indipendentemente dal client che vogliamo usare.
Dopodiché vedremo quali informazioni inserire per effettuare la connessione da FileZilla e da Cyberduck.
Generare le chiavi SSH
Ci sono diversi metodi per generare le chiavi, su Windows possiamo usare PuTTY.
Installiamo PuTTY e poi apriamo il generatore di chiavi, PuTTYgen.
Assicuriamoci che nei parametri sia impostato: tipo RSA, bit 2048 e clicchiamo su “Generate”.
A questo punto dobbiamo muovere il mouse nell’area della finestra finché la barra non viene riempita. Dopodiché possiamo inserire una password per proteggere la chiave nei campi “Key passphrase” e “Confirm passphrase”, e poi salvare le due chiavi usando i pulsanti che ho evidenziato in questa schermata:
Non chiudiamo la schermata di PuTTY perché ci servirà per il prossimo passaggio: aggiungere la chiave sul server.
Inserire la chiave sul server
Possiamo copiare la chiave pubblica generata con PuTTY direttamente nel file authorized_keys che troviamo nella cartella .ssh del server. In questo esempio ho utilizzato il file manager di cPanel per modificare il file.
È sufficiente copiare la chiave contenuta in questo campo da PuTTY:
E poi incollarla nel file authorized_keys del server, così:
Collegarsi via SFTP con FileZilla
Apriamo FileZilla e clicchiamo su Apri gestione siti.
Clicchiamo su “Nuovo sito” e compiliamo le informazioni della scheda Generale in questo modo.
- Protocollo: SFTP
- Host: inseriamo il nome dell’host, in genere ftp.dominio.com
- Porta: se si usa la porta SFTP di default (la 22) possiamo lasciare in bianco, altrimenti va specificata. Nel caso dei servizi di SupportHost bisogna usare la porta 2299.
- Tipo di accesso: file chiave.
- Utente: digitiamo il nome dell’utente che ha accesso FTP / SFTP (da cPanel puoi creare nuovi account FTP).
- File chiave: clicchiamo su Sfoglia per selezionare il file .ppk con la chiave privata che abbiamo salvato prima con PuTTY.
Dopo aver inserito tutti i dati clicchiamo su “Connetti”.
Quando effettuiamo la prima connessione via SFTP al server, FileZilla ci mostra un messaggio con cui ci comunica che la chiave è sconosciuta, per non mostrare lo stesso avviso possiamo spuntare l’opzione “Considera sempre sicuro questo host e aggiungi questa chiave alla cache” e poi premere “Ok”.
Se abbiamo specificato la passphrase ci verrà richiesta da FileZilla per poter procedere, inseriamola nel campo “Password” e clicchiamo su “Ok”. A questo punto se la password inserita è corretta FileZilla sarà in grado di collegarsi al server via SFTP.
Una volta stabilita la connessione potremo usare FileZilla per gestire i file sul server, se hai dubbi su come usare questo client puoi seguire la nostra guida a FileZilla.
Problemi di connessione con FileZilla
Se non abbiamo inserito correttamente la chiave sul server e cerchiamo di collegarci con FileZilla vedremo un errore come questo:
L’avviso ci comunica che il server ha rifiutato la chiave. In questo caso dobbiamo controllare di aver inserito l’intera chiave pubblica nel file authorized_keys del server e aver salvato le modifiche al file.
Se, invece, sbagliamo a inserire la passphrase vedremo un errore come questo:
In questo caso ci basta digitare nuovamente la passphrase corretta e provare a riconnetterci.
Collegarsi via SFTP con Cyberduck
Cyberduck è un client FTP che possiamo usare per collegarci al server usando i diversi protocolli (FTP, SFTP, ecc).
Il suo funzionamento è abbastanza simile a quello di FileZilla. Per questa guida ci interessa vedere solo come stabilire una connessione usando il protocollo SFTP, se vuoi approfondire il funzionamento di questo client puoi leggere la guida a Cyberduck.
Tieni presente che per procedere devi aver generato le chiavi SSH e aver aggiunto la chiave pubblica al server come abbiamo visto nei paragrafi precedenti.
Apriamo Cyberduck e clicchiamo sul pulsante “Nuova Connessione”, quindi inseriamo le informazioni per connetterci.
- In alto scegliamo il tipo di protocollo: SFTP (SSH File Transfer Protocol).
- Server: inseriamo l’indirizzo del server FTP in genere ftp.dominio.com.
- Porta: viene automaticamente compilata con “22”, la porta SFTP di default. Se stai usando un servizio di SupportHost devi usare la porta 2299.
- Utente: inseriamo il nome utente FTP (se hai un servizio con SupportHost puoi trovare i dati nell’email di registrazione del piano).
- Password.
- Chiave privata SSH: usiamo il pulsante “Choose” per selezionare il file .ppk con la chiave privata. È il file che abbiamo salvato nei capitoli precedenti dopo aver generato la chiave con PuTTY.
Dopo aver compilato tutti i dati clicchiamo su “Connessione”.
Quando compare l’avviso che ci indica che la firma digitale è sconosciuta, possiamo proseguire cliccando su Consenti.
Se abbiamo inserito una passphrase, ci verrà richiesto di inserirla nella prossima finestra modale che compare, come ti mostro qui:
A questo punto, dopo aver cliccato su “Continua” se la password è corretta Cyberduck stabilirà una connessione con il server.
Conclusioni
In questa guida ti abbiamo fornito una panoramica completa sul protocollo SFTP: cos’è, a che cosa serve e cosa lo distingue dal protocollo FTP.
Oltre a parlare degli usi e della sicurezza, abbiamo visto come fare a collegarci via SFTP utilizzando due dei client più conosciuti: FileZilla e Cyberduck.
La nostra guida ti è stata utile? Hai avuto difficoltà a collegarti via SFTP al server? Lascia un commento per farcelo sapere.
Lascia un commento