sftp est le mode interactif du transfert de fichiers SSH. Là où scp copie un fichier en une commande, sftp vous ouvre une session dans laquelle vous naviguez, listez, créez des répertoires et transférez plusieurs fichiers sans vous déconnecter. C'est l'équivalent d'un client FTP classique, mais entièrement chiffré via SSH.
C'est un objectif direct LFCS dans le domaine "Networking", "Configure the OpenSSH server and client" inclut la maîtrise de sftp comme client de transfert.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Ouvrir une session SFTP et se repérer dans les répertoires local et distant
- Lister, naviguer et créer des répertoires côté distant et local
- Uploader des fichiers avec
putet télécharger avecget - Transférer un répertoire complet avec
put -r/get -r - Utiliser un port SSH personnalisé avec
-P - Reprendre un transfert interrompu avec
reget/reput - Choisir entre SFTP, SCP et rsync selon la situation
SFTP dans l'écosystème des transferts Linux
Section intitulée « SFTP dans l'écosystème des transferts Linux »Les quatre outils ci-dessous passent tous par SSH et utilisent donc le même port et les mêmes clés. Ce qui les sépare, c'est le mode d'interaction : sftp ouvre une session que vous pilotez commande par commande, alors que scp, rsync et le tandem tar/ssh s'exécutent en une seule invocation puis rendent la main. Choisissez la ligne qui correspond à ce que vous ignorez encore : si vous ne savez pas quels fichiers récupérer, il faut une session.
| Outil | Mode | Spécialité | Quand l'utiliser |
|---|---|---|---|
| sftp | Interactif | Session de navigation + transferts multiples | Explorer un serveur distant, plusieurs fichiers en une session |
| scp | One-shot | Copie rapide d'un fichier ou dossier | Transfert ponctuel, scripting simple |
| rsync | Synchronisation | Delta, reprise, bande passante contrôlée | Backups récurrents, gros volumes |
tar + ssh | Pipeline | Arborescences avec permissions complexes | Migrations, archives sur mesure |
SFTP est le bon choix quand :
- Vous devez explorer un serveur distant avant de décider quoi transférer
- Vous transférez plusieurs fichiers dans différents répertoires en une session
- Vous gérez des serveurs où seul le port 22 est ouvert (pas de NFS ni de partage Samba)
- Vous automatisez des transferts avec des outils qui supportent le protocole SFTP
Ouvrir une session SFTP
Section intitulée « Ouvrir une session SFTP »La syntaxe de connexion est identique à celle de ssh : utilisateur, arobase, hôte. L'authentification se joue exactement de la même façon (clé publique, puis mot de passe en repli), et la clé d'hôte est vérifiée dans ~/.ssh/known_hosts. Si ssh bob@serveur.example.com fonctionne, sftp fonctionnera aussi.
sftp bob@serveur.example.comVous arrivez dans un prompt interactif :
Connected to serveur.example.com.sftp>Avec un port SSH différent du port 22
Section intitulée « Avec un port SSH différent du port 22 »Sans cette option, le client tente le port 22 et échoue sur un Connection refused si le serveur écoute ailleurs.
sftp -P 2222 bob@serveur.example.comAvec une clé SSH spécifique
Section intitulée « Avec une clé SSH spécifique »Utile quand vous détenez plusieurs clés privées : -i désigne celle à présenter, au lieu de laisser l'agent SSH les essayer toutes et se faire couper par le serveur au bout de six tentatives.
sftp -i ~/.ssh/id_rsa_backup bob@serveur.example.comNavigation dans une session SFTP
Section intitulée « Navigation dans une session SFTP »Une fois connecté, vous manipulez deux répertoires courants simultanés, l'un distant, l'autre local, et chacun conserve sa position pendant toute la session. Les transferts se font toujours entre ces deux points, ce qui permet d'enchaîner plusieurs get sans jamais retaper un chemin complet. Vous avez donc accès à deux espaces :
- Le serveur distant, commandé par les commandes SFTP standard
- Votre machine locale, préfixées par un
l(local)
Commandes de navigation
Section intitulée « Commandes de navigation »Retenez la règle du préfixe l : la même commande sans préfixe agit sur le serveur, avec préfixe sur votre poste.
sftp> pwd # Répertoire courant DISTANTsftp> lpwd # Répertoire courant LOCALsftp> ls # Lister les fichiers distantssftp> ls -la # Avec détails et fichiers cachéssftp> lls # Lister les fichiers locauxsftp> cd /var/log/ # Changer de répertoire distantsftp> lcd ~/Downloads/ # Changer de répertoire localsftp> mkdir saves # Créer un répertoire distantsftp> rmdir old_saves # Supprimer un répertoire distant videTélécharger des fichiers : get
Section intitulée « Télécharger des fichiers : get »get rapatrie un fichier du serveur vers votre poste. Le chemin distant peut être absolu ou relatif au répertoire courant affiché par pwd, et un second argument optionnel fixe la destination locale. Sans ce second argument, le fichier atterrit dans le répertoire local courant, celui que renvoie lpwd : c'est la source d'erreur la plus fréquente quand on croit avoir perdu un téléchargement.
sftp> get /var/log/nginx/access.logCe fichier est téléchargé dans le répertoire local courant (visible avec lpwd).
Télécharger vers un nom ou chemin spécifique
Section intitulée « Télécharger vers un nom ou chemin spécifique »Le répertoire local de destination doit déjà exister : sftp ne le crée pas et renvoie une erreur d'ouverture de fichier.
sftp> get /var/log/nginx/access.log ~/logs/nginx-access-2026-04-09.logTélécharger plusieurs fichiers avec un glob
Section intitulée « Télécharger plusieurs fichiers avec un glob »C'est le serveur qui développe le motif, pas votre shell local : l'étoile récupère donc bien tous les journaux tournés du répertoire distant.
sftp> get /var/log/nginx/access.log.*Télécharger un répertoire complet
Section intitulée « Télécharger un répertoire complet »L'option -r parcourt l'arborescence distante, mais ne suit pas les liens symboliques rencontrés en chemin : un /var/www/html truffé de raccourcis arrivera incomplet.
sftp> get -r /var/www/html/ ~/backup/html/Reprendre un téléchargement interrompu
Section intitulée « Reprendre un téléchargement interrompu »Sur une archive de plusieurs gigaoctets coupée par une rupture de VPN, relancer get repartirait de zéro.
sftp> reget /var/backup/dump-complet.tar.gzreget reprend là où le transfert s'est arrêté au lieu de recommencer depuis zéro.
Uploader des fichiers : put
Section intitulée « Uploader des fichiers : put »put est le miroir de get : il envoie un fichier de votre poste vers le serveur. Les droits d'écriture s'appliquent au compte avec lequel vous vous êtes connecté ; envoyer dans /etc/app/ suppose donc que bob puisse y écrire, car une session SFTP n'offre aucun équivalent de sudo. En cas de refus, visez un répertoire accessible puis déplacez le fichier via une session ssh classique.
sftp> put ~/projets/app.conf /etc/app/app.confUploader plusieurs fichiers
Section intitulée « Uploader plusieurs fichiers »Ici le motif est développé par votre shell local, avant même que la commande n'atteigne le serveur.
sftp> put *.conf /etc/app/Uploader un répertoire complet
Section intitulée « Uploader un répertoire complet »Le répertoire distant de destination doit exister ; créez-le au besoin avec mkdir depuis la session.
sftp> put -r ~/dev/mon-projet/ /var/www/html/mon-projet/Reprendre un upload interrompu
Section intitulée « Reprendre un upload interrompu »reput fait pour l'envoi ce que reget fait pour la réception : il complète le fichier distant partiel au lieu de l'écraser.
sftp> reput ~/backup/dump-complet.tar.gz /backup/Commandes de gestion de fichiers dans SFTP
Section intitulée « Commandes de gestion de fichiers dans SFTP »Une session SFTP ne se limite pas au transfert : elle expose un sous-ensemble des opérations de fichiers du serveur, ce qui évite d'ouvrir une seconde connexion ssh pour un simple renommage. Deux détails à connaître : chown attend un identifiant numérique, pas un nom de compte, et df n'est disponible que si le serveur implémente l'extension statvfs@openssh.com (c'est le cas d'OpenSSH, pas de tous les serveurs SFTP).
sftp> rename ancien.conf nouveau.conf # Renommer côté distantsftp> rm /tmp/fichier-inutile.log # Supprimer côté distantsftp> chmod 640 /etc/app/app.conf # Changer les permissionssftp> chown 1000 /home/bob/fichier # Changer le propriétairesftp> df -h # Espace disque du serveur distantsftp> exit # Quitter la session (ou Ctrl+D)Automatiser des transferts SFTP avec un batch
Section intitulée « Automatiser des transferts SFTP avec un batch »Pour les scripts, sftp accepte un fichier de commandes via -b : chaque ligne est exécutée comme si vous l'aviez tapée au prompt. Ce mode interrompt la session dès qu'une commande échoue et renvoie un code de sortie non nul, ce qui est exactement le comportement attendu d'un script de sauvegarde. Pour tolérer un échec précis, préfixez la ligne concernée d'un tiret (-rm ancien.tar.gz). Le fichier de commandes n'accepte aucun mot de passe : l'authentification doit être non interactive.
lcd /var/backupcd /archives/linux-srvput config-2026-04-09.tar.gzput db-dump-2026-04-09.sql.gzexitsftp -b /home/bob/backup-sftp.txt bob@serveur-backup.example.comConnexion avec un fichier de configuration SSH
Section intitulée « Connexion avec un fichier de configuration SSH »sftp lit le même fichier ~/.ssh/config que ssh et scp. Un alias qui y regroupe l'hôte, le compte, le port et la clé vous dispense donc de répéter -P et -i à chaque connexion, et vous garantit que le script de sauvegarde et la session manuelle utilisent strictement les mêmes paramètres.
Host backup-srv HostName serveur-backup.example.com User bob Port 2222 IdentityFile ~/.ssh/id_rsa_backupsftp backup-srvDépannage courant
Section intitulée « Dépannage courant »La quasi-totalité des pannes SFTP sont en réalité des pannes SSH : le protocole de transfert n'entre en jeu qu'une fois la connexion établie. Le premier réflexe consiste donc à tester ssh vers le même hôte avec les mêmes options ; si ssh passe et sftp échoue, le problème est côté sous-système sftp du serveur ou côté chemin distant.
| Symptôme | Cause probable | Solution |
|---|---|---|
Connection refused | Port SSH fermé ou service arrêté | Vérifier ssh bob@serveur d'abord |
Permission denied (publickey) | Clé non autorisée côté serveur | Vérifier ~/.ssh/authorized_keys sur le serveur |
Couldn't stat remote file: No such file or directory | Chemin distant incorrect | Utiliser ls et pwd pour vérifier l'arbo distante |
Warning: Permanently added ... to known hosts | Premier accès au serveur | Normal, la clé est mémorisée dans ~/.ssh/known_hosts |
sftp> put ne transfère pas en répertoire | Répertoire cible absent | Créer d'abord avec mkdir côté SFTP |
| Transfert très lent | Chiffrement par défaut | Essayer sftp -o Ciphers=aes128-ctr bob@host pour accélérer en LAN |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »sftpest le mode interactif du transfert via SSH, naviguer + transférer en session, contrairement àscpqui agit one-shot.- Le prompt
sftp>offre les commandesls/lls,cd/lcd,get/put,reget/reput,mkdir,rm,chmod. -Pmajuscule pour le port SSH (même convention quescp).regetetreputpermettent de reprendre un transfert interrompu.- Pour les scripts, utilisez
sftp -b fichier-batch.txtet une authentification par clé. - Pour les backups récurrents volumineux, rsync reste plus efficace (delta, bande passante contrôlée).