SFTP (SSH File Transfer Protocol) è un protocollo di file sicuro utilizzato per accedere, gestire e trasferire file su un trasporto SSH crittografato.
Rispetto al tradizionale protocollo FTP, SFTP offre tutte le funzionalità di FTP, ma è più sicuro e più facile da configurare.
A differenza di SCP, che supporta solo i trasferimenti di file, 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 sftp
di Linux comando.
Prima di iniziare #
Per poter trasferire file tramite SFTP devi avere il permesso di scrittura sul sistema remoto.
Quando si trasferiscono file di grandi dimensioni, si consiglia di eseguire sftp
comando all'interno di uno screeno tmuxsession.
La directory da cui esegui sftp
comando è 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.
Per aprire una connessione SFTP a un sistema remoto, usa il sftp
comando seguito dal nome utente del server remoto e dall'indirizzo IP o nome di dominio:
sftp remote_username@server_ip_or_hostname
Se ti stai connettendo all'host utilizzando l'autenticazione tramite password, ti verrà chiesto di inserire la password utente.
Una volta connesso, ti verrà presentato il sftp
prompt e puoi iniziare a interagire con il server remoto:
Connected to remote_username@server_ip_or_hostname.
sftp>
Se il server SSH remoto non è in ascolto sulla porta predefinita 22, utilizzare il -P
opzione per specificare la porta SFTP:
sftp -P custom_port remote_username@server_ip_or_hostname
Comandi SFTP #
La maggior parte dei comandi SFTP sono simili o identici ai comandi della shell di Linux.
Per ottenere un elenco di tutti i comandi SFTP disponibili, digita help
o ?
.
help
Questo produrrà un lungo elenco di tutti i comandi disponibili, inclusa una breve descrizione di ogni comando:
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 accede al server remoto, la directory di lavoro corrente è la directory home dell'utente remoto. Puoi verificarlo digitando:
pwd
Remote working directory: /home/remote_username
Per elencare i file e le directory, usa ls
comando:
ls
Per navigare in un'altra directory, usa il cd
comando. Ad esempio, per passare a /tmp
directory da 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, le informazioni e la 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 #
SFTP ti consente di trasferire file tra due macchine in modo sicuro.
Se stai lavorando su una macchina desktop, puoi utilizzare un client SFTP GUI come WinSC o FileZilla per connetterti al server remoto e scaricare o caricare file.
Il sftp
Il comando è 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 #
Per scaricare un singolo file dal server remoto, usa get
comando:
get filename.zip
L'output dovrebbe essere simile a questo:
Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip 100% 24MB 1.8MB/s 00:13
Durante il download di file con sftp
, i file vengono scaricati nella directory da cui hai digitato sftp
comando.
Se vuoi salvare il file scaricato con un nome diverso, specifica il nuovo nome come secondo argomento:
get filename.zip local_filename.zip
Per scaricare una directory dal sistema remoto, usa il ricorsivo -r
opzione:
get -r remote_directory
Se un trasferimento di file non riesce o viene interrotto, puoi riprenderlo utilizzando il reget
comando.
La sintassi di reget
è la stessa della sintassi di get
:
reget filename.zip
Caricamento di file con il comando SFTP #
Per caricare un file dalla macchina locale al server SFTP remoto, usa il put
comando:
put filename.zip
L'output dovrebbe essere simile a questo:
Uploading filename.zip to /home/remote_username/filename.zip
filename.zip 100% 12MB 1.7MB/s 00:06
Se il file che desideri caricare non si trova nella directory di lavoro corrente, utilizza il percorso assoluto del file.
Quando si lavora con put
puoi utilizzare le stesse opzioni disponibili con get
comando.
Per caricare una directory locale, devi 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, ti connetti ad esso tramite SSH e fai il tuo lavoro utilizzando il terminale della shell. Tuttavia, in alcune situazioni, l'utente potrebbe avere solo accesso SFTP al server remoto.
SFTP consente di eseguire alcuni comandi di base per la manipolazione dei file. Di seguito sono riportati alcuni esempi di 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
-
Rinominare 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 i permessi di un file sul sistema remoto:
chmod 644 file_name
-
Cambia il proprietario di un file sul sistema remoto:
chown user_id file_name
Devi fornire l'ID utente al
chown
echgrp
comandi. -
Modifica il proprietario del gruppo di un file remoto con:
chgrp group_id file_name
Una volta terminato il lavoro, chiudi la connessione digitando bye
o quit
.
Conclusione #
In questo tutorial, ti abbiamo mostrato come usare sftp
comando per scaricare e caricare file sul tuo server SFTP remoto.
Potresti anche voler impostare un'autenticazione basata su chiave SSH e connetterti ai tuoi server Linux senza inserire una password. Se ti connetti regolarmente agli stessi sistemi, puoi semplificare il flusso di lavoro definendo tutte le connessioni nel file di configurazione SSH.
Sentiti libero di lasciare un commento se hai domande o feedback.