SFTP ou Secure File Transfer Protocol est un utilitaire de transfert de fichiers à distance sécurisé basé sur le protocole de transfert de fichiers (FTP)
Le trafic FTP n'est pas crypté et n'est pas sûr, c'est pourquoi il a été largement remplacé par le SFTP
SFTP fonctionne par défaut via le protocole SSH sur le port TCP 22 et offre les mêmes capacités de sécurité et de cryptage que SSH. Le démon SSH par défaut, qui s'exécute dans le cadre du serveur OpenSSH sur les systèmes Linux, prend en charge les fonctionnalités de base du protocole SFTP par défaut, bien qu'il existe des logiciels dédiés distincts, tels que vsftpd
qui peuvent être configurés pour obtenir des fonctionnalités supplémentaires et des personnalisations
Dans cet article, nous allons couvrir l'utilisation de SFTP à partir de la ligne de commande. J'utiliserai un système Ubuntu, mais les commandes listées ici fonctionneront sur n'importe quel système Linux doté d'un client SFTP
Avant d'entrer dans les commandes, vous devez savoir que SCP devient obsolète et qu'il est bon de se familiariser avec la commande SFTP. Vous pouvez faire avec SFTP à peu près tout ce que vous pouvez faire avec SCP
Copier des fichiers
SFTP peut remplacer la commande SCP (Secure Copy) dans certains cas d'utilisation. L'un de ces cas est l'utilisation de SCP pour envoyer ou retirer des fichiers d'un serveur distant en une seule fois
La syntaxe de téléchargement à l'aide de la commande SCP est la suivante
$ scp {chemin local} {utilisateur}@{hôte distant}:{chemin distant}
Et pour le téléchargement, voici la syntaxe : $ scp {utilisateur}@{hôte distant}:{chemin distant}
$ scp {utilisateur}@{hôte distant}:{chemin-fichier-distant} {chemin-local}
De même, nous pouvons utiliser la syntaxe de la commande sftp
suivante pour télécharger des fichiers vers un serveur distant
$ sftp {utilisateur}@{hôte}:{chemin-distant} <<< $'put {chemin-local}'
Vous trouverez ci-dessous une démo montrant le téléchargement de fichiers à l'aide de sftp
$ sftp ftpuser@192.168.1.231:/home/ftpuser/remote_test_dir << $'put /home/abhisheknair/new_file'
ftpuser@192.168.1.231's password :
Connected to 192.168.1.231.
Changing to : /home/ftpuser/remote_test_dir
sftp>
put /home/abhisheknair/new_file
Téléchargement de /home/abhisheknair/new_file vers /home/ftpuser/remote_test_dir/new_file
/home/abhisheknair/new_file
100% 9 7.2KB/s 00:00
$
Verser télécharger un fichier à partir d'un serveur distant, utilisez la syntaxe de commande suivante
$ sftp {utilisateur}@{hôte distant}:{nom-de-fichier-distant} {nom-de-fichier-local}
Voici une démonstration du téléchargement d'un fichier en une ligne à l'aide de sftp
$ sftp ftpuser@192.168.1.231:/home/ftpuser/new_file1 /home/abhisheknair/new_local_dir
ftpuser@192.168.1.231's password :
Connected to 192.168.1.231.
Recherche
/home/ftpuser/new_file1 to /home/abhisheknair/new_local_dir/new_file1
/home/ftpuser/new_file1
100% 12 3.6KB/s 00:00
$
Vous pouvez également échanger la clé SSH pour une authentification sans mot de passe
Connexion à un serveur SFTP
Pour établir une connexion SFTP, utilisez la commande sftp
avec un nom d'utilisateur et le nom ou l'adresse IP de l'hôte distant. Le port TCP 22 par défaut doit être ouvert pour que cela fonctionne ou spécifiez explicitement le port à l'aide de l'option -oPort
Je me connecte à un serveur SFTP dont l'adresse IP est 192.168.1.231
. La première fois que vous connectez à un serveur SFTP, il vous sera demandé de confirmer l'empreinte du serveur comme pour SSH. Une fois que vous avez confirmé en tapant"oui", la connexion se poursuit et demande le mot de passe de l'utilisateur
Si la connexion est réussie, l'invite sftp> s
Affiche
$ sftp ftpuser@192.168.1.231
L'authenticité de l'hôte '192.168.1.231 (192.168.1.231)' ne peut être établie.
L'empreinte de la clé ECDSA est SHA256:k90E28Pfnjoiq1svFw18dA2mazweoCmR5Hqi8SH0mj0.
Êtes-vous sûr de vouloir continuer à vous connecter (oui/non/[empreinte]) ? oui
Avertissement : Ajout permanent de '192.168.1.231' (ECDSA) à la liste des hôtes connus.
Mot de passe de ftpuser@192.168.1.231 :
Connexion à 192.168.1.231.
sftp>
Vérifiez la version
Vous pouvez vérifier la version de SFTP en utilisant la commande version
à l'invite de sftp
sftp> version
Protocole SFTP version 3
sftp>
Obtenir de l'aide
Pour obtenir de l'aide sur les commandes disponibles et la syntaxe de SFTP, utilisez '?ouAide‘
sftp> ?
Commandes disponibles :
bye Quitter sftp
cd chemin Changer le répertoire distant en "chemin"
chgrp [-h] grp chemin Changer le groupe du fichier "chemin" en "grp"
chmod [-h] mode chemin Changer les permissions du fichier "chemin" en "mode"
chown [-h] own chemin Changer le propriétaire du fichier "chemin" en "own"
df [-hi] <x><x>[path]</x></x> Afficher les statistiques du répertoire actuel ou
du système de fichiers contenant 'path'
exit Quitter sftp
get [-afpR] remote <x>[local]</x> Télécharger le fichier
help Afficher ce texte d'aide
lcd path Changer le répertoire local <x><x> en 'pa</x></x>th'
lls [ls-options [path]] Afficher la liste des répertoires locaux lmd] Afficher la liste des répertoires locaux
lmkdir path Créer un répertoire local
ln [-s] oldpath newpath Lier un fichier distant (-s pour un lien symbolique)
lpwd Imprimer le répertoire de travail local
ls [-1afhlnrSt] <x><x>[path]</x></x> Afficher la liste des répertoires distants
lumask umask Définir le umask local à 'umask'
mkdir path Créer un répertoire distant
progress Basculer l'affichage de la jauge de progression
put [-afpR] local <x>[distant]</x> Télécharger le fichier
pwd Afficher le répertoire de travail distant
quit Quitter sftp
reget [-fpR] distant <x>[local]</x> Reprendre le fichier de téléchargement
rename oldpath newpath Renommer le fichier distant
reput [-fpR] local <x>[distant</x> ] Reprendre le fichier de téléchargement
rm path Supprimer le fichier distant
rmdir path Supprimer le répertoire distant
symlink oldpath newpath Symlink fichier distant
version Montrer la version SFTP
!command Exécuter 'command' dans le shell local
! Echapper à l'interpréteur de commandes local
? Synonyme d'aide
sftp>
Afficher le répertoire de travail
Lorsque vous êtes connecté à un serveur distant, vous pouvez afficher le répertoire de travail actuel du système distant à l'aide de la commande pwd
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp>
Pour afficher le répertoire de travail actuel du système local, utilisez la commande lpwd
sftp> lpwd
Répertoire de travail local : /home/abhisheknair
sftp>
Liste des fichiers
Vous pouvez dresser la liste des fichiers présents dans le répertoire de travail distant à l'aide de la commande ls
sftp> ls
remote_file1 remote_file2 remote_file3 remote_test_dir
sftp>
Pour dresser la liste des fichiers du répertoire de travail local, utilisez la commande lls
sftp> lls
bin file1 file2 file3 lib oci-scripts sys_info.sh test.tgz testdir
sftp>
Changement de répertoire
Vous pouvez changer de répertoire de travail à distance à l'aide de la commande cd
. Reportez-vous à l'exemple ci-dessous
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp> ls
remote_file1 remote_file2 remote_file3 remote_test_dir
sftp> cd remote_test_dir
sftp> pwd
Répertoire de travail distant : /home/ftpuser/remote_test_dir
sftp>
Pour changer de répertoire de travail local, utilisez la commande lcd
. Vous trouverez ci-dessous un exemple simple de l'utilisation de la commande lcd
sftp> lpwd
Répertoire de travail local : /home/abhisheknair
sftp> lls
bin file1 file2 file3 lib oci-scripts sys_info.sh test.tgz testdir
sftp> lcd testdir
sftp> lpwd
Répertoire de travail local : /home/abhisheknair/testdir
sftp>
Chargement des fichiers
Pour télécharger un seul fichier, utilisez la commande put
. Voyez comment je télécharge le fichier local 1 dans le répertoire de travail distant à l'aide de la commande put. Je peux le vérifier à l'aide de la commande ls qui affiche le contenu du répertoire de travail distant
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp> lpwd
Répertoire de travail local : /home/abhisheknair
sftp> ls
remote_file1 remote_file2 remote_file3 remote_test_dir
sftp> lls
bin file1 file2 file3 lib oci-scripts sys_info.sh test.tgz testdir
sftp>
put file1
Uploading file1 to /home/ftpuser/file1
file1 100% 6 6.0KB/s 00:00
sftp>
ls
file1 remote_file1 remote_file2 remote_file3 remote_test_dir
sftp>
Pour télécharger plusieurs fichiers en une seule fois, vous pouvez utiliser la commande mput
comme indiqué ci-dessous. J'utilise mput
avec une expression régulière fichier
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp> lpwd
Répertoire de travail local : /home/abhisheknair
sftp> ls
file1 remote_file1 remote_file2 remote_file3 remote_test_dir
sftp> lls
bin file1 file2 file3 lib oci-scripts sys_info.sh test.tgz testdir
sftp> mput file<x>[23]</x>
Uploading file2 to /home/ftpuser/file2
file2 100% 6 6.5KB/s 00:00
Téléchargement du fichier3 vers /home/ftpuser/file3
file3 100% 6 5.3KB/s 00:00
sftp>
ls
file1 file2 file3 remote_file1 remote_file2 remote_file3 remote_test_dir
sftp>
Téléchargez les fichiers
Un fichier utilisant SFTP peut être téléchargé à l'aide de la commande get
. Voici un exemple où j'ai téléchargé le fichier remote_file4 en utilisant sftp
sftp> pwd
Répertoire de travail distant : /home/ftpuser/remote_test_dir
sftp> lpwd
Répertoire de travail local : /home/abhisheknair/testdir
sftp> ls
remote_file4
sftp> lls
file4
sftp> get remote_file4
Récupération de /home/ftpuser/remote_test_dir/remote_file4 vers remote_file4
/home/ftpuser/remote_test_dir/remote_file4 100% 13 5.2KB/s 00:00
sftp>
lls
file4 remote_file4
sftp>
Pour télécharger plusieurs fichiers, utilisez la commande <strong>mget</strong>
. Je télécharge ici tous les fichiers qui correspondent au motif fichier_distant* dans le répertoire de travail distant vers mon répertoire de travail local. J'utilise enfin la commande <strong>lls</strong>
pour voir les fichiers téléchargés
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp> lpwd
Répertoire de travail local : /home/abhisheknair/testdir
sftp> ls
remote_file1 remote_file2 remote_file3 remote_test_dir
sftp> lls
file4 remote_file4
sftp> mget remote_file*
Fetching /home/ftpuser/remote_file1 to remote_file1
/home/ftpuser/remote_file1 100% 12 5.9KB/s 00:00
Récupération de /home/ftpuser/remote_file2 vers remote_file2
/home/ftpuser/remote_file2 100% 13 5.8KB/s 00:00
Récupération de
/home/ftpuser/remote_file3 vers remote_file3
/home/ftpuser/remote_file3
100% 13 7.3KB/s 00:00
sftp>
lls
file4 remote_file1 remote_file2 remote_file3 remote_file4
sftp>
Créez un répertoire
Un nouveau répertoire peut être créé sur un serveur distant à l'aide de la commande mkdir
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp>
ls
file1 file2 file3 remote_file1 remote_file2 remote_file3 remote_test_dir
sftp> mkdir new_dir
sftp>
ls
file1 file2 file3 new_dir remote_file1 remote_file2 remote_file3 remote_test_dir
sftp>
De même, si vous souhaitez créer un nouveau répertoire dans le répertoire de travail actuel du système local à partir de l'invite sftp, utilisez la commande lmkdir
sftp> lpwd
Répertoire de travail local : /home/abhisheknair
sftp>
lls
bin file1 file2 file3 lib oci-scripts sys_info.sh test.tgz testdir
sftp>
lmkdir new_local_dir
sftp>
lls
bin file1 file2 file3 lib new_local_dir oci-scripts sys_info.sh test.tgz testdir
sftp>
Suppression d'un répertoire
Un répertoire distant vide peut être supprimé à l'aide de la commande rmdir
. Notez que si le répertoire n'est pas vide, vous obtiendrez une erreur
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp>
ls
file1 file2 file3 new_dir remote_file1 remote_file2 remote_file3 remote_test_dir
sftp>
rmdir new_dir
sftp>
ls
file1 file2 file3 remote_file1 remote_file2 remote_file3 remote_test_dir
sftp>
Supprimez le fichier
Un fichier distant peut être supprimé à l'aide de la commande rm
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp>
ls
file1 file2 file3 remote_file1 remote_file2 remote_file3 remote_test_dir
sftp>
rm remote_file3
Suppression de /home/ftpuser/remote_file3
sftp>
ls
file1 file2 file3 remote_file1 remote_file2 remote_test_dir
sftp>
Renommer le fichier
Un fichier distant peut également être facilement renommé à l'aide de la commande rename
sftp> pwd
Répertoire de travail distant : /home/ftpuser
sftp> ls
file1 file2 file3 remote_file1 remote_file2 remote_test_dir
sftp>
rename remote_file1 new_file1
sftp>
ls
file1 file2 file3 new_file1 remote_file2 remote_test_dir
sftp>
Utilisation du système de fichiers
Pour afficher les statistiques du répertoire ou du système de fichiers contenant "path", utilisez la commande df
. Vous pouvez utiliser le drapeau -h
pour afficher les statistiques dans un format lisible par l'homme. Notez que les statistiques affichées concernent le système de fichiers du serveur SFTP distant et non celui de la machine locale
sftp> df
Taille utilisée Disponibilité (root) Êpacity
17811456 1845472 15965984
15965984 10%
sftp>
df -h
Taille utilisée Disponibilité (root) Êpacity
17.0GB 1.8GB 15.2GB 15.2GB 10%
sftp>
Quitter la session SFTP
Pour quitter la session SFTP, utilisez les commandes bye
, exit
ou quit
. Vous reviendrez à l'invite de votre système d'exploitation après avoir quitté SFTP
sftp> exit
$
Conclusion
SFTP est l'une des meilleures options disponibles, à la fois sûre et facile à utiliser. Il offre des fonctionnalités CLI et GUI et est supporté par différentes plateformes. Reportez-vous à la page de manuel sftp
pour plus d'informations
$ man sftp
Si vous souhaitez en savoir plus, consultez le cours Udemy Linux Mastery.