Aller au contenu
Administration Linux medium

Transférer des fichiers avec SFTP

8 min de lecture

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.

  • 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 put et télécharger avec get
  • 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
OutilModeSpécialitéQuand l’utiliser
sftpInteractifSession de navigation + transferts multiplesExplorer un serveur distant, plusieurs fichiers en une session
scpOne-shotCopie rapide d’un fichier ou dossierTransfert ponctuel, scripting simple
rsyncSynchronisationDelta, reprise, bande passante contrôléeBackups récurrents, gros volumes
tar + sshPipelineArborescences avec permissions complexesMigrations, 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
Fenêtre de terminal
sftp bob@serveur.example.com

Vous arrivez dans un prompt interactif :

Connected to serveur.example.com.
sftp>
Fenêtre de terminal
sftp -P 2222 bob@serveur.example.com
Fenêtre de terminal
sftp -i ~/.ssh/id_rsa_backup bob@serveur.example.com

Une fois connecté, vous avez accès à deux espaces :

  • Le serveur distant — commandé par les commandes SFTP standard
  • Votre machine locale — préfixées par un l (local)
sftp> pwd # Répertoire courant DISTANT
sftp> lpwd # Répertoire courant LOCAL
sftp> ls # Lister les fichiers distants
sftp> ls -la # Avec détails et fichiers cachés
sftp> lls # Lister les fichiers locaux
sftp> cd /var/log/ # Changer de répertoire distant
sftp> lcd ~/Downloads/ # Changer de répertoire local
sftp> mkdir saves # Créer un répertoire distant
sftp> rmdir old_saves # Supprimer un répertoire distant vide

sftp> get /var/log/nginx/access.log

Ce fichier est téléchargé dans le répertoire local courant (visible avec lpwd).

sftp> get /var/log/nginx/access.log ~/logs/nginx-access-2026-04-09.log
sftp> get /var/log/nginx/access.log.*
sftp> get -r /var/www/html/ ~/backup/html/
sftp> reget /var/backup/dump-complet.tar.gz

reget reprend là où le transfert s’est arrêté au lieu de recommencer depuis zéro.


sftp> put ~/projets/app.conf /etc/app/app.conf
sftp> put *.conf /etc/app/
sftp> put -r ~/dev/mon-projet/ /var/www/html/mon-projet/
sftp> reput ~/backup/dump-complet.tar.gz /backup/

sftp> rename ancien.conf nouveau.conf # Renommer côté distant
sftp> rm /tmp/fichier-inutile.log # Supprimer côté distant
sftp> chmod 640 /etc/app/app.conf # Changer les permissions
sftp> chown 1000 /home/bob/fichier # Changer le propriétaire
sftp> df -h # Espace disque du serveur distant
sftp> exit # Quitter la session (ou Ctrl+D)

Pour les scripts, sftp accepte un fichier de commandes via -b :

/home/bob/backup-sftp.txt
lcd /var/backup
cd /archives/linux-srv
put config-2026-04-09.tar.gz
put db-dump-2026-04-09.sql.gz
exit
Fenêtre de terminal
sftp -b /home/bob/backup-sftp.txt bob@serveur-backup.example.com

Si votre ~/.ssh/config définit des alias de connexion, sftp les reconnaît :

~/.ssh/config
Host backup-srv
HostName serveur-backup.example.com
User bob
Port 2222
IdentityFile ~/.ssh/id_rsa_backup
Fenêtre de terminal
sftp backup-srv

SymptômeCause probableSolution
Connection refusedPort SSH fermé ou service arrêtéVérifier ssh bob@serveur d’abord
Permission denied (publickey)Clé non autorisée côté serveurVérifier ~/.ssh/authorized_keys sur le serveur
Couldn't stat remote file: No such file or directoryChemin distant incorrectUtiliser ls et pwd pour vérifier l’arbo distante
Warning: Permanently added ... to known hostsPremier accès au serveurNormal — la clé est mémorisée dans ~/.ssh/known_hosts
sftp> put ne transfère pas en répertoireRépertoire cible absentCréer d’abord avec mkdir côté SFTP
Transfert très lentChiffrement par défautEssayer sftp -o Ciphers=aes128-ctr bob@host pour accélérer en LAN

  • sftp est le mode interactif du transfert via SSH — naviguer + transférer en session, contrairement à scp qui agit one-shot.
  • Le prompt sftp> offre les commandes ls/lls, cd/lcd, get/put, reget/reput, mkdir, rm, chmod.
  • -P majuscule pour le port SSH (même convention que scp).
  • reget et reput permettent de reprendre un transfert interrompu.
  • Pour les scripts, utilisez sftp -b fichier-batch.txt et une authentification par clé.
  • Pour les backups récurrents volumineux, rsync reste plus efficace (delta, bande passante contrôlée).

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn