FTP è il metodo standard per trasferire file o altri dati tra computer, ma sta diventando sempre più obsoleto nell’ambiente odierno attento alla sicurezza. Fortunatamente, è qui che entra in gioco SFTP (Secure File Transfer Protocol) , che è particolarmente utile per gli utenti di hosting VPS .

In questa guida, mostreremo come utilizzare SFTP per il trasferimento sicuro di file, parleremo di altri comandi utili e spiegheremo di più su come funziona.

Iniziamo.

Cos’è SFTP?

SFTP, o SSH File Transfer Protocol in breve, è un modo molto più sicuro per trasferire i file. Utilizzando il protocollo SSH , supporta la crittografia e altri metodi di sicurezza utilizzati per proteggere meglio i trasferimenti di file. È l’unico protocollo di trasferimento file sicuro che protegge dagli attacchi in qualsiasi momento del processo di trasferimento dei dati, rendendolo il protocollo migliore.

Durante il trasferimento dei file, tutti i dati vengono suddivisi in pacchetti e inviati tramite un’unica connessione sicura.

Le informazioni sensibili vengono crittografate e rese illeggibili durante il trasferimento tra client e server. In altre parole, il contenuto originale (testo in chiaro) verrà sostituito da una stringa di caratteri incoerente (testo cifrato).

Solo il destinatario con la chiave di decrittazione richiesta potrà vedere il contenuto originale. Ciò impedisce qualsiasi accesso non autorizzato durante il trasferimento dei file.

Il normale protocollo di trasferimento file (FTP) ha due diversi canali per lo scambio di dati: il canale di comando e il canale dati. Al contrario, SFTP ha un solo canale crittografato in cui i dati vengono scambiati in pacchetti crittografati e formattati.

Come connettersi utilizzando SFTP?

SFTP è un sottosistema di SSH. Quindi, supporta tutti i metodi di autenticazione SSH. Sebbene sia più semplice configurare e utilizzare l’autenticazione con password, è molto più comodo e sicuro creare chiavi SSH per un accesso SFTP senza password.

Quando sei pronto, segui i seguenti passaggi per connetterti con SFTP:

Controlla il tuo accesso SSH usando uno di questi comandi:

ssh user@server_ipaddress
ssh user@remotehost_domainname

Fatto ciò, abbandona la sessione se non si sono verificati errori.

Avvia una connessione SFTP con i seguenti comandi:

sftp user@server_ipaddress
sftp user@remotehost_domainname

Se stai utilizzando una porta SSH personalizzata, usa uno di questi comandi per modificare la porta SFTP:

sftp -oPort=customport user@server_ipaddress
sftp -oPort=customport user@remotehost_domainname

Ecco come dovrebbe apparire:

sftp -oPort=49166 user@31.220.57.32

Una volta connesso, vedrai un prompt SFTP.

Come trasferire file utilizzando Secure File Transfer Protocol?

In questa sezione ti mostreremo come trasferire file remoti al sistema locale usando SFTP e viceversa.

Trasferimento di file remoti da un server al sistema locale

Per iniziare, controlliamo quale directory di lavoro locale e quale remota stiamo utilizzando. Per fare ciò, utilizzeremo questi comandi SFTP:

sftp> lpwd
Local directory: /LocalDirectory
sftp> pwd
Remote directory: /RemoteDirectory

Ora, vediamo come trasferire un file da un server remoto al tuo computer locale usando il comando get . Ecco la sintassi di base del comando get :

get /RemoteDirectory/filename.txt

Ad esempio, per copiare il file /etc/xinetd.conf dal server remoto al tuo computer locale, dovresti usare:

get /etc/xinetd.conf

Una volta completato il download, ora puoi scoprire che il file xinetd.conf si trova nella directory /user/home del tuo computer locale.

Per scaricare più file con SFTP, usa il comando mget . Per scaricare tutti i file in una directory chiamata /etc con estensione .conf nella directory di lavoro corrente, utilizzerai il seguente comando:

mget /etc/*.conf

Dopo il download, puoi trovare tutti i file *.conf nella directory /user/home del tuo computer locale.

Trasferimento di file dalla macchina locale a un server remoto

Per copiare un file dalla macchina locale al server remoto, utilizzeremo nuovamente il comando get . In questo caso, la sintassi del comando get sarà:

get file.txt /RemoteDirectory

Per spostare il file example.txt da una macchina locale alla macchina remota, inserisci il seguente comando:

put /home/user-name/example.txt /root

Ora troveremo il file nella directory principale del server remoto. Puoi anche provare a trasferire più file usando il  comando mput . Funziona quasi come mget :

mput /home/user-name/*.txt /root

Questo comando sposta tutti i file con l’ estensione .txt in /home/nome-utente dalla macchina locale alla directory /root remota .

Comandi per la navigazione con SFTP

Alcuni comandi possono essere utilizzati per navigare tra i server remoti e locali in modo più efficiente con SFTP. Sono simili a quelli che useresti nel prompt della shell di Linux.

Il comando pwd, ad esempio, è sempre utile per farti sapere in quale directory di lavoro ti trovi attualmente.

sftp> pwd
Remote directory: /RemoteDirectory

o

sftp> lpwd
Local directory: /LocalDirectory

Puoi anche visualizzare l’elenco di file e directory che stai utilizzando per la directory remota:

ls

Allo stesso modo, per la directory di lavoro locale:

lls

Ad esempio, l’output sarà simile a questo:

Pictures     Templates     Media     Text.txt     Documents

Per passare da una directory di lavoro remota a un’altra directory di lavoro locale, immettere i seguenti comandi:

cd name_of_directory
lcd name_of_directory

Infine, usa il ed esci dai comandi per tornare alla shell locale e uscire da SFTP.

Nozioni di base sulla manutenzione dei file tramite SFTP

Con SFTP, puoi anche gestire directory e file utilizzando comandi specifici.

Per controllare lo spazio su disco del server remoto in gigabyte, usa la funzione df in questo modo:

df -h

Ecco un esempio di output:

Filesystem         Size  Used Avail Use% Mounted on /dev/ploop29212p1   59G  2.5G   56G   5% /
none               1.5G     0  1.5G   0% /sys/fs/cgroup
none               1.5G     0  1.5G   0% /dev
tmpfs              1.5G     0  1.5G   0% /dev/shm
tmpfs              1.5G  568K  1.5G   1% /run
tmpfs              308M     0  308M   0% /run/user/0

Usa il comando mkdir per creare una nuova directory sia sul server remoto che su quello locale:

mkdir name_of_directory
lmkdir name_of_directory

Puoi eliminarne uno dal server remoto usando il comando rmdir :

rmdir name_of_directory

Anche rinominare un file remoto è piuttosto semplice:

rename filename new_filename

Ecco un esempio:

rename Old_FileExample New_FileExample

Se vuoi rimuovere un file remoto, usa il comando rm :

rm filename

Mentre il comando chown viene utilizzato per sostituire il proprietario di un file:

chown userid filename

userid può essere un nome utente o un ID utente numerico . Ad esempio:

chown UserOne FileExample
chown 1234 FileExample

chgrp viene utilizzato per modificare il proprietario del gruppo di un file:

chgrp groupid filename

Ad esempio:

chgrp NewGroup FileExample

Infine, dovrai utilizzare il comando sftp interattivo chmod per modificare l’autorizzazione di un file:

chmod 764 FileExample

In questo esempio, il valore a tre cifre indica l’ utente , il gruppo e gli altri utenti del file.

Per quanto riguarda i permessi di lettura (r) , scrittura (w) ed esecuzione (x) , i loro valori sono 4 , 2 , 1 , rispettivamente. 0 può essere utilizzato anche per non fornire autorizzazioni.

Per assegnare i permessi è sufficiente calcolare i valori totali per ogni classe utente. Ecco una ripartizione dell’esempio:

chmod ugo FileExample
# u represents the User who'll be able to read, write and execute the file.
# g is for Groups, here we've given the permission to write and execute the file.
# o or Others will only be able to read the file.

Elenco di comandi SFTP utili

Se hai bisogno di un cheat sheet veloce, ecco un elenco di tutti i comandi SFTP disponibili. Puoi trovare questo elenco da solo inserendo semplicemente l’ aiuto o comando: entrambi richiederanno lo stesso risultato.

bye                                               Esci da sftp
cd path                                        Cambia la directory remota in 'path'
chgrp [-h] grp path                    Cambia il gruppo di file 'path' in 'grp'
chmod [-h] mode path              Cambia i permessi del file 'path' in 'mode'
chown [-h] own path                 Cambia il proprietario del file 'path' to 'own'
df [-hi] [path]                                Visualizza le statistiche per la directory corrente o il 
                                                       filesystem contenente 'path'
exit                                                Esci da sftp
get [-afpR] remote [local]         Download file
help                                              Visualizza questo testo di aiuto
lcd path                                       Cambia la directory locale in 'path'
lls [ls-options [path]]                  Visualizza l'elenco della directory locale
lmkdir path                                  Crea una directory locale
ln [-s] oldpath newpath            Collega il file remoto (-s for symlink)
lpwd                                             Stampa la directory di lavoro locale
ls [-1afhlnrSt] [path]                   Visualizza la lista della directory remota 
lumask umask                           Imposta umask locale su 'umask'
mkdir path                                  Crea directory remota
progress                                      Attiva/disattiva la visualizzazione dell'indicatore di 
                                                      avanzamento 
put [-afpR] local [remote]         Carica file
pwd                                              Visualizza directory di lavoro remota
quit                                               Esci da sftp
reget [-fpR] remote [local]       Riprendi il download del file
rename oldpath newpath        Rinomina il file remoto
reput [-fpR] local [remote]       Riprendi l'upload del file
rm path                                       Cancella file remoto
rmdir path                                   Cancella la directory remota
symlink oldpath newpath        Symlink file remoto
version                                         Visualizza la versione sftp
!command                                  Esegui 'command' nella local shell
!                                                     Esci dalla local shell

Conclusione

Questo copre praticamente le basi su come utilizzare SFTP per il trasferimento sicuro di file. Speriamo che questo tutorial si sia rivelato utile. 

Buon lavoro!