FTP
Le File Transfer Protocol est un protocole de communication standard utilisé pour le transfert de fichiers informatiques d'un serveur à un client sur un réseau informatique (y compris Internet). FTP est construit sur une architecture de modèle client-serveur utilisant des connexions de contrôle et de données séparées entre le client et le serveur.
FTP a toujours été populaire pour regarder ou déplacer des fichiers volumineux entre les systèmes. Les fichiers peuvent être ajoutés à un serveur central, puis les utilisateurs qui souhaitent y accéder peuvent y accéder à partir de là.
SSH
SFTP vise à fournir une sécurité renforcée avec un tunneling utilisant Secure Shell 2 (SSH2), un protocole de tunneling sécurisé. Il émule une connexion FTP et fournit un canal compatible avec le pare-feu et crypté pour les transferts de fichiers à l'aide du port TCP 22. nécessitant l'ouverture d'un seul port sur votre pare-feu par rapport aux deux ports qui doivent être ouverts pour les connexions FTP et SSL.
En tant que fonctionnalité supplémentaire, Secure FTP compresse également toutes les données pendant la transmission, ce qui peut accélérer les transferts de fichiers.
Contenu associé
- Comment travailler avec le client SFTP sous Linux – 10 commandes sftp
- Comment configurer un serveur SFTP sur le serveur Debian 11
- Télécharger des fichiers à partir du serveur SFTP à l'aide d'un script python
- Répertorier, charger et télécharger des fichiers depuis un serveur SFTP à l'aide de golang
- Comment configurer un serveur SFTP sur le serveur OpenSUSE Leap 15.3
- Comment configurer un serveur SFTP sur le serveur CentOS 8/RHEL 8
Mise en route avec le serveur SFTP dans Ubuntu 20.04
Ce guide vous guidera tout au long du processus d'installation et de configuration du serveur SFTP dans Ubuntu 20.04. Nous allons suivre ces étapes :
- Installer le
sftp
etssh
Logiciel sous Ubuntu - Création d'un utilisateur et d'un groupe SFTP
- Configuration du service SSH
- Connexion au serveur à l'aide du terminal - ligne de commande Linux
1. Installation du logiciel ssh dans Ubuntu
Nous avons besoin du logiciel fournissant le ssh
et sftp
logiciel serveur dans notre Ubuntu
Assurez-vous que votre ordinateur est mis à jour :
sudo apt update
sudo apt upgrade -y
Depuis sftp
dépend de ssh
, nous devrons installer SSH ou OpenSSH si aucun d'entre eux n'est déjà installé sur votre machine.
Installez le ssh
démon :
sudo apt install ssh
Sortie
$ 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. Création d'un utilisateur et d'un groupe SFTP
Nous devons créer un utilisateur et un groupe qui se connecteront au serveur SFTP.
- Créez un groupe avec le nom que vous voulez. Je vais utiliser
sftpgroup1
sudo addgroup sftpgroup1
Sortie :
# sudo addgroup sftpgroup1
Adding group 'sftpgroup1' (GID 1002) ...
Done.
- Créez un utilisateur avec le nom que vous voulez en l'ajoutant au groupe que nous avons créé. Je vais utiliser
sftpuser1
pour l'utilisateur.sudo useradd -m sftpuser1 -g sftpgroup1
- Ajouter un mot de passe au nouvel utilisateur SFTP
sudo passwd sftpuser1
Sortie :
# sudo passwd sftpuser1
New password:
Retype new password:
passwd: password updated successfully
- Accordez au nouvel utilisateur SFTP un accès complet à son nouveau répertoire personnel à l'aide de cette commande :
sudo chmod 700 /home/sftpuser1/
Configuration du service SSH
Vous devez configurer le service ssh pour accepter le trafic sftp. Ajoutez les configurations suivantes au fichier de configuration ssh situé ici /etc/ssh/sshd_config
:
Dans votre terminal, utilisez cette commande pour ouvrir le fichier de configuration avec vim :
sudo vim /etc/ssh/sshd_config
Ajoutez maintenant ce contenu au bas du fichier :
Match group sftpgroup1
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Les configurations ci-dessus sont destinées à autoriser les utilisateurs du groupe sftpgroup1 (Match group sftpgroup1
) pour accéder et utiliser leurs répertoires personnels via le SFTP tout en empêchant tout autre accès SSH normal à ces fichiers.
Enregistrez et fermez le fichier de configuration SSHD.
redémarrez le service SSH pour appliquer les modifications précédentes.
sudo systemctl restart ssh
4. Connexion au serveur à l'aide du terminal – ligne de commande Linux
Vous pouvez utiliser le terminal de ligne de commande pour tester votre connexion au SFTP. Cela peut même être fait localement sur le serveur sftp.
Voici le format de la commande de connexion :
sftp [user]@[host]
Connectons-nous à notre serveur. votre nom d'utilisateur et votre mot de passe SFTP seront nécessaires.
sftp [email protected]
Sortie :
$ 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>
Cela vous connectera au serveur. Le répertoire par défaut est le /home
dir spécifié dans le ChrootDirectory /home
directive dans les configurations de serveur ssh.
Commandes sftp de base
Vérifier la version :
sftp> version
SFTP protocol version 3
sftp>
Afficher le répertoire de travail distant
Si vous devez vérifier le répertoire de travail actuel sur le serveur distant, le pwd
la commande est pratique :
sftp> pwd
Remote working directory: /sftpuser1
sftp>
Afficher le répertoire de travail de la machine locale
Pour afficher le répertoire de travail actuel du système local, utilisez lpwd
commande.
sftp> lpwd
Local working directory: /home/ubuntu
sftp>
L'utilisateur créé n'aura accès qu'à son répertoire. Passons à ce répertoire avec la commande suivante :
sftp> cd sftpuser1
sftp>
Accédez au répertoire d'accueil de l'utilisateur SFTP et essayez de créer un nouveau répertoire comme suit :
sftp> ls
sftpuser1 ubuntu
sftp> cd sftpuser1
sftp> ls
sftp> mkdir datadir
sftp> ls
datadir
Télécharger des fichiers
Le faire en local
Téléchargez des fichiers sur un serveur distant à l'aide de cette syntaxe de commande :
$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'
Exemple :
$ 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
Le faire depuis le serveur sftp
Utilisez ces commandes :ls
pour lister les fichiers, lls
pour la liste locale, put
pour télécharger des fichiers :
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>
Pour télécharger plusieurs fichiers en une seule fois, nous pouvons utiliser mput
commande comme dans l'exemple ci-dessous. Vous pouvez utiliser mput
avec une expression régulière comme data[23]
pour télécharger data2
, data3
et ignorer data1
. Vous pouvez utiliser n'importe quel caractère générique ou expression régulière avec 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
Télécharger des fichiers
Le faire depuis la machine locale
Pour télécharger un fichier depuis un serveur distant, utilisez la syntaxe de commande ci-dessous :
$ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}
Voici une démonstration du téléchargement d'un fichier en une seule ligne à l'aide de 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
Le faire depuis le serveur SFTP distant
Télécharger un seul fichier depuis le serveur en utilisant get
. Exemple de téléchargement de data2
sftp>
sftp> ls
data2 data3
sftp> lls
sftp> get data2
Fetching /sftpuser1/data/data2 to data2
sftp> lls
data2
sftp>
Utilisez mget
pour télécharger plusieurs fichiers comme dans cet exemple
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>
Créer et supprimer un répertoire
Utilisez les commandes mkdir
et rmdir
pour créer et supprimer des répertoires
sftp>
sftp> ls
sftp> mkdir data
sftp> ls
data
sftp> rmdir data
sftp>
Supprimer des fichiers
Utilisez la commande rm
pour supprimer des fichiers
sftp> rm data*
Removing /sftpuser1/data/data2
Removing /sftpuser1/data/data3
sftp>
Renommer des fichiers
sftp>
sftp> ls
data3
sftp> rename data3 data_original
sftp> ls
data_original
sftp>
Vérification de l'utilisation du système de fichiers
Affichez les statistiques du répertoire ou du système de fichiers actuel contenant le "chemin", utilisez la commande df. Nous pouvons utiliser l'indicateur -h pour afficher les statistiques dans un format lisible par l'homme. Notez que les statistiques affichées concernent le système de fichiers respectif du serveur SFTP distant et non le système de fichiers de la machine 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%
Obtenir de l'aide
Pour obtenir de l'aide sur les commandes disponibles et la syntaxe pour SFTP, utilisez '?' ou 'help'.
sftp> ?
Sortie :
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
Reportez-vous à la page de manuel sftp pour en savoir plus.
$ man sftp
Quitter la session SFTP
Enfin, vous pouvez quitter le sftp en utilisant le bye
, exit
, ou exit
:
sftp> exit
$
Conclusion
Dans ce guide, nous avons réussi à configurer un serveur sftp et exploré les opérations de base pouvant être effectuées sur le serveur