Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Linux et Mise en réseau Dernière mise à jour : 24 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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 vsftpdqui 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&gt

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&gt

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&gt

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&gt
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&gt

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&gt
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&gt

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&gt
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&gt

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&gt
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[23] qui télécharge les fichiers 2 et 3 et ignore le fichier 1 car il a déjà été téléchargé à l'étape précédente. Vous pouvez utiliser n'importe quel joker ou expression régulière avec mput

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&gt

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&gt
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&gt

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&gt
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&gt

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&gt

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&gt

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&gt

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&gt

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.

  • Abhishek Nair
    Auteur
Merci à nos sponsors
D'autres bonnes lectures sur Linux
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus