Comment utiliser la commande SFTP pour transférer des fichiers

SFTP (SSH File Transfer Protocol) est un protocole de fichier sécurisé utilisé pour accéder, gérer et transférer des fichiers via une connexion SSH chiffrée.

Par rapport au protocole FTP traditionnel, SFTP offre toutes les fonctionnalités du FTP, mais il est plus sécurisé et plus facile à configurer : SFTP VS FTPS : Différences dans les protocoles de transferts de fichiers
De plus, contrairement à SCP, qui ne prend en charge que les transferts de fichiers, SFTP vous permet d'effectuer une gamme d'opérations sur des fichiers distants et de reprendre les transferts de fichiers.

C'est une méthode de transferts de fichiers que l'on peut utiliser avec des VPS ou serveurs dédiés en Linux (OVH, 1&1, Scaleway, ...) ou tout simplement de transfert de fichiers par internet.

Dans ce tutoriel, je vous montre comment utiliser la commande Linux sftp.

Comment utiliser la commande SFTP pour transférer des fichiers

Comment utiliser la commande SFTP pour transférer des fichiers

Se connecter à un PC distant avec SFTP

Voici la syntaxe pour établir une connexion SFTP, c'est d'ailleurs la même que SSH ou SCP :

sftp [email protected]_adresseip
sftp -P numeroPort [email protected]_adresseip

Par exemple pour se connecter au serveur 37.22.21.20 avec l'utilisateur malekalmorte :

sftp [email protected]

Lors de la première connexion à un hôte, vous devez accepter l'empreinte de clé publique.

Se connecter à un PC distant avec SFTP

Vous êtes alors connecté sur à l'interface SFTP sur le serveur distant.
Il ne reste plus qu'à passer des commandes.

Transfert de fichiers distants d'un serveur vers l'hôte local

Dans un premier temps on récupère le répertoire de travail local et l'emplacement distant.
Pour obtenir le chemin local, on utilise la commande lpwd :

sftp> lpwd
Local working directory: /home/malekalmorte

Et pour le chemin distant, on utilise pwd :

sftp> pwd
Remote working directory: /home/malekalmorte

Pour télécharger un fichier depuis la machine distante, on utilise la commande get.
Ce dernier se place alors dans l'emplacement local.
Par exemple pour télécharger le fichier monsuperfichier.txt :

sftp> get monsuperfichier.txt
Transfert de fichiers distants d'un serveur vers le système local

Pour télécharger plusieurs fichiers avec SFTP, utilisez la commande mget.
Pour télécharger tous les fichiers dans un répertoire appelé /etc qui ont l'extension .conf dans votre répertoire de travail actuel, vous utiliserez la commande suivante:

mget /etc/*.conf

On peut aussi utiliser l'option -r pour télécharger tout un dossier en récursif :

get -r dossier_distant

Enfin si un transfert s'interrompt, vous pouvez reprendre le transfert (resume) grâce à la commande reget :

reget nomfichier.zip

Transfert de fichiers de l'hôte local vers un serveur distant

Pour uploader un fichier, c'est à dire transférer un fichier de la machine locale vers la machine distante, on utilise la commande put :

put nomfichier.zip

Notez que l'on peut aussi utiliser la commande get pour transférer un fichier distant de cette manière :

get nomfichier.zip /dossierdistant

On retrouve ensuite le même principe que la commande get.
Pour uploader un répertoire entier de manière récursive, on ajoute l'option -r :

put -r dossier_local

Pour reprendre un transfert interrompu, on utilise la commande reput :

reput filename.zip

Commandes de navigation avec SFTP

SFTP possède des commandes pour naviguer dans les serveurs distants et locaux avec SFTP.
Elles sont similaires à celles que vous utilisez dans un terminal et shell Linux.
En général, on ajoute un l pour les commandes locales. Par exemple ls et lls.
Ce tutoriel vous donne la liste plus bas dans l'article.

Par exemple, la commande pwd est toujours utile pour vous indiquer dans quel répertoire de travail vous vous trouvez actuellement.

pwd

Pour obtenir le répertoire de travail local, ce sera lpwd :

lpwd

Pour lister les fichiers du serveur distant :

ls

De manière similaire pour lister les fichiers du répertoire de travail local :

lls

Pour passer d'un répertoire de travail distant à un autre répertoire de travail local, entrez les commandes suivantes :

cd nom_repertoire
lcd nom_repertoire

Maintenance des fichiers avec SFTP

Enfin il existe toutes sortes de commandes pour supprimer, renommer modifier les répertoires, fichiers avec SFTP.

Pour créer un répertoire sur le serveur distant avec mkdir :

mkdir nom_repertoire

Renommer un fichier distant :

rename nom_fichier nouveau_fichier

Supprimer un fichier distant :

rm nom_fichier

Supprimer un répertoire distant avec rmdir :

rmdir nom_repertoire

Changer le propriétaire d'un fichier avec la commande chown :

chown id_utilisateur nom_fichier

Changer les permissions d'un fichier avec chmod :

chmod id nom_fichier

Par exemple pour mettre le fichier avec les permissions 644 :

chmod 644 nom_fichier

chgrp est utilisé pour changer le propriétaire du groupe d'un fichier:

chgrp id_groupe nom_fichier

Liste des commandes SFTP utiles

La liste des commandes s'obtient en saisissant help
Sinon voici un tableau avec la liste complète des commandes SFTP.

CommandesDescription
exitQuitter sftp
byeQuit sftp
cd pathRemplacez le répertoire distant par 'chemin'
chgrp [-h] grp pathChanger le groupe du fichier 'path' en 'grp'
chmod [-h] mode pathChanger les permissions du fichier 'chemin' en 'mode'
chown [-h] own pathChanger le propriétaire du fichier 'chemin' en 'propre'
df [-hi] [path]Afficher les statistiques du répertoire courant ou
système de fichiers contenant 'path'
get [-afpR] remote [local]Télécharger le fichier
helpAfficher ce texte d'aide
lcd pathChangez le répertoire local en 'chemin'
lls [ls-options [chemin]]Afficher la liste des répertoires locaux
lmkdirCréer un répertoire local
ln [-s] oldpath newpathLien fichier distant (-s pour lien symbolique)
lpwdImprimer le répertoire de travail local
ls [-1afhlnrSt] [chemin]Afficher la liste des répertoires distants
lumask umaskDéfinit umask local sur 'umask'
mkdir pathCréer un répertoire distant
progressBascule l'affichage de la barre de progression
put [-afpR] local [remote]Envoyer un fichier
pwdAfficher le répertoire de travail distant
reget [-fpR] remote [local]Reprendre le téléchargement du fichier
renommer oldpath newpathRenommer le fichier distant
reput [-fpR] local [distant]Reprendre le fichier de téléchargement
rm pathSupprimer le fichier distant
rmdir pathSupprimer le répertoire distant
symlink oldpath newpathFichier distant Symlink
versionAfficher la version SFTP
! commandExécute 'command' dans le shell local
!Échapper au shell local
Liste des commandes SFTP utiles

Liens