FTP
Il File Transfer Protocol è un protocollo di comunicazione standard utilizzato per il trasferimento di file di computer da un server a un client su una rete di computer (incluso Internet). FTP è basato su un'architettura modello client-server che utilizza controlli separati e connessioni dati tra il client e il server.
FTP è sempre stato popolare per fissare o spostare file di grandi dimensioni tra i sistemi. I file possono essere aggiunti a un server centrale, quindi gli utenti che desiderano accedervi possono accedervi da lì.
SSH
SFTP mira a fornire una maggiore sicurezza con il tunneling utilizzando Secure Shell 2 (SSH2), un protocollo di tunneling sicuro. Emula una connessione FTP e fornisce un canale crittografato e compatibile con il firewall per i trasferimenti di file utilizzando la porta TCP 22.
SSH offre una maggiore sicurezza poiché l'intera sessione di trasferimento file, inclusi tutti i comandi di controllo della sessione, è completamente crittografata in ogni momento, mentre solo che richiedono l'apertura di una singola porta sul firewall rispetto alle due porte che devono essere aperte per le connessioni FTP e SSL.
Come funzionalità aggiuntiva, Secure FTP comprime anche tutti i dati durante la trasmissione, il che può comportare trasferimenti di file più rapidi.
Contenuti correlati
- Come lavorare con il client SFTP in Linux – 10 comandi sftp
- Come configurare un server SFTP su Debian 11 Server
- Scarica file dal server SFTP utilizzando uno script python
- Elenca, carica e scarica file da un server SFTP utilizzando golang
- Come configurare un server SFTP su OpenSUSE Leap 15.3 Server
- Come configurare un server SFTP su CentOS 8 /RHEL 8 Server
Rendere operativo con il server SFTP in Ubuntu 20.04
Questa guida ti guiderà attraverso il processo di installazione e configurazione del server SFTP in Ubuntu 20.04. Seguiremo questi passaggi:
- Installazione di
sftp
essh
Software in Ubuntu - Creazione di utenti e gruppi SFTP
- Configurazione del servizio SSH
- Connessione al server tramite terminale – riga di comando Linux
1. Installazione del software ssh in Ubuntu
Abbiamo bisogno del software che fornisce ssh
e sftp
software server nel nostro Ubuntu
Assicurati che la tua macchina sia aggiornata:
sudo apt update
sudo apt upgrade -y
Da sftp
dipende da ssh
, dovremo installare SSH o OpenSSH se nessuno di questi è già installato nel tuo computer.
Installa ssh
demone:
sudo apt install ssh
Uscita
$ sudo apt install ssh
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libllvm11 libxdamage1
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
ssh
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,084 B of archives.
After this operation, 120 kB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports focal-security/main arm64 ssh all 1:8.2p1-4ubuntu0.2 [5,084 B]
Fetched 5,084 B in 0s (26.8 kB/s)
Selecting previously unselected package ssh.
(Reading database ... 104454 files and directories currently installed.)
Preparing to unpack .../ssh_1%3a8.2p1-4ubuntu0.2_all.deb ...
Unpacking ssh (1:8.2p1-4ubuntu0.2) ...
Setting up ssh (1:8.2p1-4ubuntu0.2) ...
2. Creazione di utenti e gruppi SFTP
Dobbiamo creare un utente e un gruppo che accederà al server SFTP.
- Crea un gruppo con il nome che desideri. Userò
sftpgroup1
sudo addgroup sftpgroup1
Uscita:
# sudo addgroup sftpgroup1
Adding group 'sftpgroup1' (GID 1002) ...
Done.
- Crea un utente con il nome che desideri aggiungendolo al gruppo che abbiamo creato. Userò
sftpuser1
per l'utente.sudo useradd -m sftpuser1 -g sftpgroup1
- Aggiungi una password al nuovo utente SFTP
sudo passwd sftpuser1
Uscita:
# sudo passwd sftpuser1
New password:
Retype new password:
passwd: password updated successfully
- Concedi al nuovo utente SFTP l'accesso completo alla loro nuova directory home usando questo comando:
sudo chmod 700 /home/sftpuser1/
Configurazione del servizio SSH
È necessario configurare il servizio ssh per accettare il traffico sftp. Aggiungi le seguenti configurazioni al file di configurazione ssh che si trova qui /etc/ssh/sshd_config
:
Nel tuo terminale, usa questo comando per aprire il file di configurazione con vim:
sudo vim /etc/ssh/sshd_config
Ora aggiungi questo contenuto in fondo al file:
Match group sftpgroup1
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Le configurazioni di cui sopra hanno lo scopo di consentire agli utenti nel gruppo sftpgroup1 (Match group sftpgroup1
) per accedere e utilizzare le loro home directory tramite SFTP impedendo qualsiasi altro normale accesso SSH a quei file.
Salva e chiudi il file di configurazione SSHD.
riavvia il servizio SSH per applicare le modifiche precedenti.
sudo systemctl restart ssh
4. Connessione al server utilizzando il terminale – riga di comando Linux
Puoi utilizzare il terminale della riga di comando per testare il tuo accesso all'SFTP. Questo può essere fatto anche localmente nel server sftp.
Questo è il formato del comando di accesso:
sftp [user]@[host]
Connettiamoci al nostro server. saranno necessari il tuo nome utente e password SFTP.
sftp [email protected]
Uscita:
$ sftp [email protected]
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:99KvuL95zO2CQbC8X0Re/Q+cYrJgqQgzpf1leemnjmY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
[email protected]'s password:
Connected to 127.0.0.1.
sftp>
Questo ti registrerà nel server. La directory predefinita è /home
dir specificata in ChrootDirectory /home
direttiva nelle configurazioni del server ssh.
Comandi sftp di base
Verifica versione:
sftp> version
SFTP protocol version 3
sftp>
Mostra directory di lavoro remota
Se hai bisogno di controllare la directory di lavoro corrente sul server remoto, il pwd
il comando è utile:
sftp> pwd
Remote working directory: /sftpuser1
sftp>
Mostra la directory di lavoro della macchina locale
Per mostrare l'attuale directory di lavoro del sistema locale, usa lpwd
comando.
sftp> lpwd
Local working directory: /home/ubuntu
sftp>
L'utente creato avrà accesso solo alla sua directory. Passiamo a quella directory con il seguente comando:
sftp> cd sftpuser1
sftp>
Passa alla directory home dell'utente SFTP e prova a creare una nuova directory come segue:
sftp> ls
sftpuser1 ubuntu
sftp> cd sftpuser1
sftp> ls
sftp> mkdir datadir
sftp> ls
datadir
Carica file
Fallo da locale
Carica i file su un server remoto usando questa sintassi dei comandi:
$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'
Esempio:
$ sftp [email protected]:/sftpuser1/ <<< $'put ./citizix.txt'
[email protected]'s password:
Connected to 127.0.0.1.
Changing to: /sftpuser1/
sftp> put ./citizix.txt
Uploading ./citizix.txt to /sftpuser1/citizix.txt
./citizix.txt
Fallo dal server sftp
Usa questi comandi:ls
per elencare i file, lls
per l'elenco locale, put
per caricare i file:
sftp>
sftp> pwd
Remote working directory: /sftpuser1/datadir
sftp> ls
sftp> lls
citizix.txt snap tmp
sftp> put citizix.txt
Uploading citizix.txt to /sftpuser1/datadir/citizix.txt
citizix.txt 100% 32 25.8KB/s 00:00
sftp> ls
citizix.txt
sftp>
Per caricare più file in una volta sola, possiamo utilizzare mput
comando come nell'esempio seguente. Puoi usare mput
con espressioni regolari come data[23]
per caricare data2
, data3
e ignora data1
. Puoi usare qualsiasi carattere jolly o espressione regolare con mput
.
sftp>
sftp> pwd
Remote working directory: /sftpuser1/data
sftp> ls
sftp> lls
data1 data2 data3
sftp> mput data[23]
Uploading data2 to /sftpuser1/data/data2
data2 100% 0 0.0KB/s 00:00
Uploading data3 to /sftpuser1/data/data3
data3 100% 0 0.0KB/s 00:00
sftp> ls
data2 data3
Download dei file
Fallo dalla macchina locale
Per scaricare un file da un server remoto, usa la seguente sintassi dei comandi:
$ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}
Ecco una demo del download di un file in una riga utilizzando sftp:
# sftp [email protected]:/sftpuser1/citizix.txt .
[email protected]'s password:
Connected to 127.0.0.1.
Fetching /sftpuser1/citizix.txt to ./citizix.txt
/sftpuser1/citizix.txt 100% 32 26.7KB/s 00:00
Fallo dal server sftp remoto
Scarica un singolo file dal server usando get
. Esempio di download di data2
sftp>
sftp> ls
data2 data3
sftp> lls
sftp> get data2
Fetching /sftpuser1/data/data2 to data2
sftp> lls
data2
sftp>
Usa mget
per scaricare più file come in questo esempio
sftp>
sftp> ls
data2 data3
sftp> lls
sftp> mget data*
Fetching /sftpuser1/data/data2 to data2
Fetching /sftpuser1/data/data3 to data3
sftp> lls
data2 data3
sftp>
Creazione ed eliminazione di directory
Usa i comandi mkdir
e rmdir
per creare ed eliminare directory
sftp>
sftp> ls
sftp> mkdir data
sftp> ls
data
sftp> rmdir data
sftp>
Rimozione dei file
Usa il comando rm
per eliminare i file
sftp> rm data*
Removing /sftpuser1/data/data2
Removing /sftpuser1/data/data3
sftp>
Rinominare i file
sftp>
sftp> ls
data3
sftp> rename data3 data_original
sftp> ls
data_original
sftp>
Verifica dell'utilizzo del filesystem
Visualizza le statistiche per la directory o il filesystem corrente contenente 'percorso', usa il comando df. Possiamo usare -h flag per mostrare le statistiche in un formato leggibile dall'uomo. Tieni presente che le statistiche mostrate si riferiscono al rispettivo filesystem del server SFTP remoto e non al filesystem della macchina locale.
sftp> df
Size Used Avail (root) %Capacity
29540600 5917856 22103188 23622744 20%
sftp> df -h
Size Used Avail (root) %Capacity
28.2GB 5.6GB 21.1GB 22.5GB 20%
Ricevere aiuto
Per ottenere aiuto sui comandi disponibili e sulla sintassi per SFTP, usa '?' o 'help'.
sftp> ?
Uscita:
sftp> ?
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afpR] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afpR] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
reget [-fpR] remote [local] Resume download file
rename oldpath newpath Rename remote file
reput [-fpR] local [remote] Resume upload file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Fare riferimento alla pagina man di sftp per ulteriori letture.
$ man sftp
Esci dalla sessione SFTP
Infine, puoi uscire da sftp usando il bye
, exit
o quit
:
sftp> exit
$
Conclusione
In questa guida siamo riusciti a configurare un server sftp e ad esplorare le operazioni di base che possono essere eseguite sul server