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!