Utiliser sftp en ligne de commande, avec ou sans proxy
Connectez-vous à des serveurs SFTP depuis la ligne de commande Linux. Astuces pour automatiser avec sshpass, définir un port personnalisé et configurer l'accès via un serveur proxy.
Traduction automatique
Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.
Cet article fait partie de la série SSH — de votre première clé au développement distant :
- GitHub - Connectez votre compte en SSH et travaillez avec le protocole git@
- Docker secrets : utiliser votre clé SSH pendant le build
- Utiliser sftp en ligne de commande, avec ou sans proxy
- SSH - Autosuggestions avec ZSH
- SSH - Lancer un terminal sur votre session sans avoir à vous authentifier
- Comment se connecter à votre serveur d'hébergement en SSH
- Développement distant en SSH avec VSCode
- Ouvrir un DevContainer sur un serveur distant avec VSCode Remote SSH et ProxyJump
- Générateur de config SSH : stanzas wildcard, alias et connexions automatisées

Cet article couvre la ligne de commande sftp : se connecter avec sftp user@host, automatiser l'authentification avec sshpass, faire passer la connexion par un proxy HTTP via -o ProxyCommand='/usr/bin/nc --proxy-type http --proxy ...', utiliser un port personnalisé avec -P, et scripter des commandes distantes (comme télécharger tous les fichiers .zip) avec un here-document passé à sftp.
Après mon article SSH - Lancer un terminal sur votre session sans avoir à vous authentifier, c'était évident : à côté des commandes ssh et scp, j'avais oublié sftp.
Dans cet article, nous allons voir comment ouvrir une connexion SFTP vers un serveur distant, depuis la ligne de commande.
Dans la deuxième partie, nous verrons aussi comment configurer la connexion sftp pour passer par un serveur proxy.
Pour les mêmes opérations depuis un client graphique sous Windows, voyez WinSCP - Synchroniser l'host et le serveur distant et WinSCP - Télécharger récursivement les fichiers d'une extension donnée.
Comment ouvrir une connexion sftp
Le plus simple est sftp <username>@<hostname_or_ip> donc, si vous devez vous connecter au serveur ayant l'IP 1.2.3.4 avec l'utilisateur christophe, la commande à lancer est simplement sftp christophe@1.2.3.4.
On vous demandera votre mot de passe avant de vous connecter au serveur.
Si vous avez besoin d'automatiser, vous pouvez installer sshpass avec sudo apt-get update && sudo apt-get install sshpass.
Remarque
L'utilitaire Linux sshpass est utilisé par le script pour permettre une connexion SFTP sans devoir manipuler le mot de passe en clair. Plus d'infos
Imaginons que votre utilisateur soit christophe, votre mot de passe p@ssword et l'IP du serveur 1.2.3.4, vous pouvez alors vous connecter ainsi : SSHPASS="p@ssword" sshpass -e sftp christophe@1.2.3.4.
Ci-dessus, nous créons une variable système temporaire appelée SSHPASS contenant notre mot de passe en clair, puis nous lançons sshpass -e suivi de notre commande sftp, donc sftp <username>@<hostname_or_ip>.
Utiliser un serveur proxy
Passer par un proxy n'est pas si intuitif. Le flag à utiliser est -o ProxyCommand='' avec une commande spécifique. La commande est /usr/bin/nc --proxy-type http --proxy PROXY:PORT %h %p où :
proxy-typedoit être initialisé àhttpouhttpsselon votre proxy.--proxydoit être défini avec le nom de domaine du proxy (p.ex.my.proxy.be) et éventuellement suivi de:8080, c'est-à-dire le port à utiliser- ensuite
%h %pdoit faire partie de la commande%hest un placeholder qui sera remplacé par le nom d'hôte du serveur SFTP auquel vous tentez de vous connecter.%pest un autre placeholder qui sera remplacé par le numéro de port du serveur SFTP.
La commande finale ressemblera à ceci :
Et, si vous voulez utiliser sshpass :
Définir le numéro de port du serveur SFTP
Si votre serveur SFTP n'écoute pas sur le port 22, vous devrez préciser le numéro de port avec le flag -P : sftp <username>@<hostname_or_ip> -P <port_number>.
Lancer des commandes sur le serveur SFTP puis quitter
Imaginez que vous souhaitiez récupérer des fichiers ZIP depuis votre serveur SFTP.
Comme déjà vu, avec sshpass nous pouvons contourner l'authentification. Il suffit de s'assurer qu'une variable SSHPASS existe juste avant d'appeler la commande sshpass.
Ensuite, pour pouvoir automatiser des commandes sur le serveur SFTP, nous pouvons utiliser la syntaxe here-document.
L'allure générale sera celle-ci :
(
SSHPASS="<your_password_in_plain_text>"
sshpass -e sftp <username>@<hostname_or_ip> << !
<a_list_of_commands>
!
)
Donc, si votre utilisateur est christophe, votre mot de passe p@ssword et l'IP du serveur 1.2.3.4, nous pouvons nous connecter au serveur et, par exemple, aller dans un dossier appelé input_folder, afficher la liste des fichiers / dossiers et, enfin, télécharger tous les fichiers zip présents dans le dossier :
(
SSHPASS="p@ssword"
sshpass -e sftp christophe@1.2.3.4 << !
cd input_folder
ls -alh
get *.zip
!
)
Cet article fait partie de la série SSH — de votre première clé au développement distant :
- GitHub - Connectez votre compte en SSH et travaillez avec le protocole git@
- Docker secrets : utiliser votre clé SSH pendant le build
- Utiliser sftp en ligne de commande, avec ou sans proxy
- SSH - Autosuggestions avec ZSH
- SSH - Lancer un terminal sur votre session sans avoir à vous authentifier
- Comment se connecter à votre serveur d'hébergement en SSH
- Développement distant en SSH avec VSCode
- Ouvrir un DevContainer sur un serveur distant avec VSCode Remote SSH et ProxyJump
- Générateur de config SSH : stanzas wildcard, alias et connexions automatisées




