Introduzione
SFTP (SSH File Transfer Protocol) è un protocollo di file sicuro utilizzato per accedere, gestire e trasferire file su un trasporto SSH crittografato.
Rispetto al protocollo FTP tradizionale, SFTP offre tutte le funzionalità di FTP ed è più facile da configurare.
A differenza di scp command
, che consente solo i trasferimenti di file, il comando sftp
consente di eseguire una serie di operazioni su file remoti e riprendere i trasferimenti di file.
In questo tutorial, ti mostreremo come usare il comando sftp
Linux.
Prerequisiti
Per poter trasferire e gestire i file tramite SFTP è necessario disporre dell'autorizzazione di scrittura sul sistema remoto.
Quando si trasferiscono file di grandi dimensioni, si consiglia di eseguire il comando sftp all'interno di una sessione di screen o di tmux.
La directory da cui si esegue il comando sftp
è la directory di lavoro locale.
Stabilire una connessione SFTP
SFTP funziona su un modello client-server. È un sottosistema di SSH e supporta tutti i meccanismi di autenticazione SSH.
Sebbene l'autenticazione con password tradizionale sia impostata per impostazione predefinita e più facile da usare, se ti connetti regolarmente al tuo server tramite SSH/SFTP, si consiglia di creare chiavi SSH e impostare un accesso SFTP senza password.
Per aprire una connessione SFTP a un sistema remoto, utilizzare il comando sftp
seguito dal nome utente del server remoto e dall'indirizzo IP o dal nome dominio:
sftp remote_username@server_ip_or_hostname
Se ti stai connettendo a un host utilizzando l'autenticazione con password ti verrà chiesto di inserire la password dell'utente.
Una volta connesso, ti verrà presentato il prompt sftp
e potrai iniziare a interagire con il computer remoto:
Connected to remote_username@server_ip_or_hostname.
sftp>
Se il server SSH remoto non è in ascolto sulla porta predefinita 22, utilizzare l'opzione -oPort
per specificare la porta alternativa:
sftp -oPort=custom_port remote_username@server_ip_or_hostname
Comandi SFTP
La maggior parte dei comandi SFTP sono simili o identici ai comandi che useresti nel prompt della shell Linux.
È possibile ottenere un elenco di tutti i comandi SFTP disponibili digitando help
o ?
.
help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
...
...
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Navigazione con SFTP
Quando si è effettuato l'accesso al server remoto, la directory di lavoro corrente è la home directory dell'utente remoto. Puoi verificarlo digitando:
pwd
Remote working directory: /home/remote_username
Per elencare i file e le directory utilizzare il comando ls
:
ls
Per passare a un'altra directory, utilizzare il comando cd
Ad esempio, per passare alla directory /tmp
digitare:
cd /tmp
I comandi precedenti vengono utilizzati per navigare e lavorare sulla posizione remota.
La shell sftp
fornisce anche comandi per la navigazione locale, informazioni e gestione dei file. I comandi locali sono preceduti dalla lettera l
.
Ad esempio, per stampare la directory di lavoro locale, digitare:
cd lpwd
Local working directory: /home/local_username
Trasferimento di file con SFTP
Con SFTP è possibile trasferire file in modo sicuro tra due macchine.
Se stai lavorando su un computer desktop, puoi utilizzare un client SFTP della GUI come WinSCP o FileZilla per connetterti al server remoto e scaricare o caricare file.
Il comando sftp
è utile quando si lavora su un server senza GUI e si desidera trasferire file o eseguire altre operazioni sui file remoti.
Download di file con il comando SFTP
Una volta effettuato l'accesso al server remoto, la directory di lavoro corrente è la home directory dell'utente remoto.
Quando si scaricano file con il comando sftp
, i file vengono scaricati nella directory da cui è stato digitato il comando sftp
.
Per scaricare un singolo file dal server remoto, utilizzare il comando get
:
get filename.zip
L'output dovrebbe assomigliare a questo:
Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip 100% 24MB 1.8MB/s 00:13
Se si desidera salvare il file scaricato con un nome diverso, specificare il nuovo nome come secondo argomento:
get filename.zip local_filename.zip
Per scaricare una directory dal sistema remoto, utilizzare l'opzione -r
ricorsiva :
get -r remote_directory
Se un trasferimento di file non riesce o viene interrotto, è possibile riprenderlo utilizzando il comando reget
.
La sintassi di reget
è uguale alla sintassi di get
:
reget filename.zip
Caricamento dei file con il comando SFTP
Per caricare un file dal computer locale sul server SFTP remoto, utilizzare il comando put
:
put filename.zip
L'output dovrebbe assomigliare a questo:
Uploading filename.zip to /home/remote_username/filename.zip
filename.zip 100% 12MB 1.7MB/s 00:06
Se il file che si desidera caricare non si trova nella directory di lavoro corrente, utilizzare il percorso assoluto del file.
Quando si lavora con put
è possibile utilizzare le stesse opzioni disponibili con il comando get
.
Per caricare una directory locale, digitare:
put -r locale_directory
Per riprendere un caricamento interrotto:
reput filename.zip
Manipolazioni di file con SFTP
In genere, per eseguire attività su un server remoto, ci si connette ad esso tramite SSH e si esegue il proprio lavoro utilizzando il terminale shell. Tuttavia, in alcune situazioni, l'utente può avere solo l'accesso SFTP al server remoto.
SFTP consente di eseguire alcuni comandi di base per la manipolazione dei file. Di seguito sono riportati alcuni esempi su come utilizzare la shell SFTP:
Ottieni informazioni sull'utilizzo del disco del sistema remoto :
df
Size Used Avail (root) %Capacity
20616252 1548776 18002580 19067476 7%
Crea una nuova directory sul server remoto:
mkdir directory_name
Rinomina un file sul server remoto:
rename file_name new_file_name
Elimina un file sul server remoto:
rm file_name
Elimina una directory sul server remoto:
rmdir directory_name
Modifica le autorizzazioni di un file sul sistema remoto:
chmod 644 file_name
Cambia il proprietario di un file sul sistema remoto:
chown user_id file_name
È necessario fornire l'ID utente ai comandi chown
e chgrp
.
Cambia il proprietario del gruppo di un file remoto con:
chgrp group_id file_name
Al termine del lavoro, chiudere la connessione digitando bye
o quit
.
Conclusione
In questo tutorial, ti abbiamo mostrato come utilizzare il comando sftp
per scaricare e caricare file sul tuo server SFTP remoto.