WinSCP : l'outil de transfert à tout faire

WinSCP : l’outil de transfert à tout faire

Mais pas le café

Avatar de l'auteur
David Legrand

Publié dans

Logiciel

01/09/2021 6 minutes
41

WinSCP : l'outil de transfert à tout faire

Avec SSH, on peut se connecter à un serveur, mais aussi échanger des données. Des protocoles comme SCP ou SFTP le permettent, en ligne de commandes mais aussi via des applications disposant d'interface graphique comme WinSCP. Un outil open source aux multiples atouts.

En 2021, envoyer des données en ligne et les déplacer de serveurs en serveurs se fait au travers de pages web, de services SaaS et autres outils de synchronisation. Des stratégies plus flexibles qu'aux débuts d'Internet, où les sites se mettaient en ligne à coups de sessions FTP, un protocole pas toujours très sécurisé (qui revient en force).

Cela nécessite toutefois des configurations particulières. Que faire lorsque la seule chose dont on dispose est un serveur avec comme seul accès un Secure Shell (SSH) ? Certains ont eu la bonne idée d'utiliser ce protocole comme un tunnel pour d'autres à travers SFTP (SSH File Transfer Protocole) ou SCP (Secure Copy).

Ils sont exploitables en ligne de commandes mais sont aussi implémentés dans des applications proposant une interface graphique. L'une d'entre elles est WinSCP. Distribuée sous licence GPL, elle permet le transfert et la synchronisation de fichier, peut être installée ou utilisée de manière portable, servir de base à des scripts, gère le chiffrement à la volée ou la connexion à des services de stockage objet compatibles S3.

Voici ce qu'il faut en retenir.

Au commencement était Secure Copy (SCP)

Commençons par un petit rappel. Si vous disposez d'un serveur avec OpenSSH, vous pouvez vous y connecter à travers un terminal et y lancer des commandes. Mais lorsqu'il faut y envoyer des fichiers, on utilise SSH pour de la copie de fichiers à travers SCP disponible sous Linux, macOS et Windows 10/11.

Prenons l'exemple d'un serveur web nginx sous Alpine Linux comme celui que nous avons installé dans le cadre d'un précédent article. Des fichiers y sont distribués dans le dossier /srv/www/files. Si l'on voulait y ajouter l'image ISO d'Ubuntu 21.04 depuis une machine distante, il suffirait d'utiliser la commande suivante :

scp ubuntu-21.04-desktop-amd64.iso utilisateur@hostname:/srv/www/files/ 

À l'inverse, on peut récupérer un fichier dans le dossier courant (.) depuis ce serveur : 

scp utilisateur@hostname:/srv/www/files/nextinpact.jpg . 

La connexion passant par SSH le transfert est sécurisé. Les paramètres seront les mêmes, avec la possibilité d'utiliser un mot de passe ou une paire de clés publique/privée pour assurer l'authentification.

Besoin d'une interface graphique ? WinSCP à la rescousse

Cette solution est intéressante lorsque l'on veut récupérer un fichier de temps en temps, mais si vous avez de nombreux documents ou plusieurs dossiers à transférer, li peut être utile de disposer d'un outil avec une interface graphique, un suivi des copies, des options plus poussées, etc.

Nous avons déjà évoqué le cas de SSHFS-Win, qui permet de « monter » un serveur pour l'utiliser directement dans l'explorateur de fichiers. C'est une solution, mais qui ne convient pas à tous les besoins, notamment lorsque l'on se connecte régulièrement à différents serveurs pour de courtes durées. C'est là que WinSCP entre en scène.

L'application, gratuite, peut être installée ou utilisée de manière portable. Elle est présente via Chocolatey ou winget. Elle peut aussi être installée depuis le Microsoft Store pour 10 euros. C'est l'une des manières que vous pouvez utiliser pour soutenir les développeurs, qui se financent également via des dons.

choco install winscp
winget install winscp

La fenêtre de base vous invite (en français) à saisir les mêmes paramètres de connexion : l'IP ou le hostname du serveur, l'identifiant, le mot de passe ou une éventuelle clé privée (dans les paramètres avancés).

WinSCPWinSCPWinSCP

L'application s'organise de manière classique pour un outil de ce genre : la source (locale) à gauche, la destination (distante) à droite. Le transfert peut se faire sous la forme binaire ou non, vous pouvez également opter pour une synchronisation dans un sens, dans l'autre ou les deux, en précisant des critères de comparaison pour détecter un élément modifié : heure de modification, taille, nom sensible à la casse ou non.

Les transferts sont effectués sous la forme d'une queue à traiter, avec la possibilité de marquer une pause ou de reprendre un transfert abandonné. La fenêtre détaille les temps de transfert écoulé et restant ainsi que le débit. Vous pouvez à tout moment limiter la bande passante, passer un fichier, en ajouter un dans la queue, etc.

Les sessions ouvertes sont organisées comme des onglets. Vous pouvez d'ailleurs sauvegarder les paramètres de connexion afin d'accéder rapidement à un serveur ou même un ensemble de sessions (espace de travail). Ces informations et l'accès à l'application peuvent être protégés par un mot de passe principal dans les préférences.

Ceux qui sont habitués d'outils tels que FileZilla ne seront pas perdus, même si ce dernier est un peu moins complet, se focalisant essentiellement sur le protocole FTP et ses dérivés sécurisés via SSH (SFTP) et SSL/TLS (FTPS).

SFTP : l'alternative avec chiffrement AES

Dans WinSCP, outre la connexion via SCP, vous pouvez aussi opter pour Secure FTP (SFTP). Ce protocole ne nécessite pas plus de travail mais apporte une possibilité intéressante : on peut chiffrer (AES) les fichiers pendant le transfert. Il faut pour cela utiliser une « clé », sorte de mot de passe que l'application peut générer pour vous.

Si cette option est activée, les fichiers et leurs noms seront illisibles sans un déchiffrement particulier. WinSCP, lui, les verra comme si de rien n'était, une fois la clé renseignée pendant la phase de connexion bien sûr.

WinSCPWinSCP

Des tas de petites fonctions

L'application gère également la connexion à des serveurs WebDAV ainsi qu'à des services de stockage objet compatibles S3. Vous pouvez ainsi facilement y envoyer des données ou synchroniser des dossiers pour archivage.

D'un clic droit sur un dossier ou un fichier on a accès à des fonctionnalités complémentaires : (dé)compresser (Tar/Gzip), comparer, vérifier la somme de contrôle, envoyer vers un autre serveur distant, etc. WinSCP peut aussi être utilisée en ligne de commandes (CLI) ou dans le cadre de scripts, l'ensemble des commandes étant détaillé ici

La documentation complète de WinSCP se trouve ici.

Écrit par David Legrand

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Au commencement était Secure Copy (SCP)

Besoin d'une interface graphique ? WinSCP à la rescousse

SFTP : l'alternative avec chiffrement AES

Des tas de petites fonctions

Le brief de ce matin n'est pas encore là

Partez acheter vos croissants
Et faites chauffer votre bouilloire,
Le brief arrive dans un instant,
Tout frais du matin, gardez espoir.

Fermer

Commentaires (41)


que je regrette winscp depuis qu’on a passé les postes de travail sous ubuntu au boulot, maintenant on n’a plus que filezilla et y’a des petits trucs à droite à gauche qui me semblaient mieux avec winscp et qui me manquent du coup.



sous windows je le trouvait parfait.


Ça m’étonnait, du coup je viens de vérifier: le gestionnaire de fichiers d’Ubuntu supporte le sftp nativement… En tous cas, dans ma VM Ubuntu 18.04 (en anglais), j’ouvre un gestionnaire de fichiers, je sélectionne “Other locations” dans la barre à gauche, dans le champ “Connect to server” tout en bas, je rentre “sftp://”, je clique “Connect”, il me demande mon nom d’utilisateur et mon mot de passe, et c’est fini: je vois le disque distant comme un disque local, pas besoin d’autre chose…


Tu as aussi Remmina sous Linux qui fait un mix de putty et Winscp. Pas aussi pratique mais un outil intéressant quand quand même


J’utilisais WinSCP pour faire un tunnel SSH entre mon lycée et chez moi fin des années 2000 :D De bons souvenirs à contourner les proxys qui bloquaient les urls contenant des mots comme “forums”



SFTP : l’alternative avec chiffrement AES



Ce protocole ne nécessite pas plus de travail mais apporte une possibilité intéressante : on peut chiffrer (AES) les fichiers pendant le transfert.




Cela sous-entend qu’avec SCP passe en clair sur le réseau, alors que dans les deux cas (SCP ou SFTP) tout passe dans le tunnel (chiffré) SSH.



(reply:1893010:®om)




Non, juste qu’on chiffre le fichier, pas le tunnel (qui l’est déjà)


Oh, donc c’est une option spécifique à WinSCP qui chiffre les fichiers avant de les envoyer (et qui les déchiffre à la volée). My bad, j’avais pas compris.


À quoi ça sert de chiffrer le fichier en plus du tunnel ? Si tu n’as pas confiance dans le tunnel, toute la sécurité s’écroule de toute façon.


alex.d.

À quoi ça sert de chiffrer le fichier en plus du tunnel ? Si tu n’as pas confiance dans le tunnel, toute la sécurité s’écroule de toute façon.


C’est pour que ce soit chiffré quand ça arrive côté serveur avec un mot de passe que tu maitrises. Tu peux ne pas avoir confiance dans le serveur


alex.d.

À quoi ça sert de chiffrer le fichier en plus du tunnel ? Si tu n’as pas confiance dans le tunnel, toute la sécurité s’écroule de toute façon.


le fichier est stocké chiffré sur le ftp (du moins c’est ce que je comprend), ça peut permettre de stocker des trucs sur un ftp auquel t’as pas toute ta confiance par exemple je suppose, et quand tu dépose ou récupère un fichier toi tu l’as toujours déchiffré, c’est transparent, mais qqn qui arrive quand même à accéder à ton ftp peut rien faire des fichiers qu’il trouve (je suppose que du bruteforce pendant 150 ans marchera quand même, mais d’ici là t’en aura plus forcément grand chose à cirer qu’un tier ait consulté tes fichiers XD)



c’est pas tant la fonctionnalité qui me manque (y’a quand même filezilla qui fonctionne quand y’a besoin de bricoler en (s)ftp) que certains trucs de l’interface que je trouvait bien pratiques (mais je dois avouer que je sais plus quoi exactement)



edit : grillé par David du coup, qui confirme au passage ce que j’avais cru comprendre :)


Winscp a aussi une DLL utilisable en .Net, et donc powershell sous Windows.


Cet outil est toujours aussi pratique : présent sur mes machines depuis … 15 ans au moins ^^


Pour un usage simple de FTP, Filezilla est plus visuel je trouve.



Je m’en sers surtout pour la partie ligne de commande pour ma part. Sachant qu’on peut tester/configurer une connexion et exporter le code et les commandes directement depuis l’interface : simple et pratique !
Il y a aussi des outils intégrés pratiques comme PuttyGen.



fry a dit:


que je regrette winscp depuis qu’on a passé les postes de travail sous ubuntu au boulot, maintenant on n’a plus que filezilla et y’a des petits trucs à droite à gauche qui me semblaient mieux avec winscp et qui me manquent du coup.



sous windows je le trouvait parfait.




Nautilus permet de faire du sftp aussi. C’est très pratique, pas besoin d’utiliser un autre logiciel pour gérer ses fichiers locaux et distants.




eb303 a dit:


Ça m’étonnait, du coup je viens de vérifier: le gestionnaire de fichiers d’Ubuntu supporte le sftp nativement… En tous cas, dans ma VM Ubuntu 18.04 (en anglais), j’ouvre un gestionnaire de fichiers, je sélectionne “Other locations” dans la barre à gauche, dans le champ “Connect to server” tout en bas, je rentre “sftp://”, je clique “Connect”, il me demande mon nom d’utilisateur et mon mot de passe, et c’est fini: je vois le disque distant comme un disque local, pas besoin d’autre chose…




Arg, grillé.
Et sinon, tu peux rentrer directement : sftp://user@serveur.


c’était juste un petit truc de l’interface que je trouvais mieux que dans filezilla hein, comme je disais j’ai pas de souci pour faire du sftp, j’ai pas de besoin particulier, mais quelques bricoles que j’ai oublié me faisait préférer winscp et ça m’a fait bizarre de plus pouvoir utiliser ces petits trucs



(quote:1893025:brice.wernet)
Winscp a aussi une DLL utilisable en .Net, et donc powershell sous Windows.




Ohh j’avais pas vu ça


winscp bénéficie d’un nuget qui permet de développer en .net et possède des fonctionnalités intéressantes comme la synchronisation de dossier distant avec un dossier local


OuiiiiiSCP




Je sors




eb303 a dit:


Ça m’étonnait, du coup je viens de vérifier: le gestionnaire de fichiers d’Ubuntu supporte le sftp nativement… En tous cas, dans ma VM Ubuntu 18.04 (en anglais), j’ouvre un gestionnaire de fichiers, je sélectionne “Other locations” dans la barre à gauche, dans le champ “Connect to server” tout en bas, je rentre “sftp://”, je clique “Connect”, il me demande mon nom d’utilisateur et mon mot de passe, et c’est fini: je vois le disque distant comme un disque local, pas besoin d’autre chose…




Tout comme Mihashi, sur les 2 PC (sous Arch, avec XFCE) chez moi, j’ai qu’à cliquer sur la barre de chemin de Thunar (gestionnaire de fichiers de XFCE), puis entrer l’adresse « sftp://[ip-du-PC-cible]/home/[user]/ » et, après avoir renseigné les identifiants du compte d’utilisateur voulu, je me retrouve avec le contenu du dossier utilisateur du PC distant. À partir de là, je peux faire des copies de fichiers de PC à PC sur le réseau local, sans avoir besoin d’un logiciel supplémentaire, juste pour ça.
Jamais vraiment essayé entre un PC Linux et un autre sous Windows, cela dit. Mais je crois que l’Explorateur gère le SFTP, non ?


J’utilise toujours Token2Shell qui fonctionne très bien.



fry a dit:


c’était juste un petit truc de l’interface que je trouvais mieux que dans filezilla hein, comme je disais j’ai pas de souci pour faire du sftp, j’ai pas de besoin particulier, mais quelques bricoles que j’ai oublié me faisait préférer winscp et ça m’a fait bizarre de plus pouvoir utiliser ces petits trucs




Apparemment, il fonctionne très bien sous Wine (en même temps c’est peu étonnant vu que Wine fonctionne tellement bien que Valve a littéralement basé sa console dessus). Et si t’as jamais utilisé wine, c’est pas plus compliqué que de faire “apt install wine” puis double cliquer sur ton .exe



fry a dit:


que je regrette winscp depuis qu’on a passé les postes de travail sous ubuntu au boulot, maintenant on n’a plus que filezilla et y’a des petits trucs à droite à gauche qui me semblaient mieux avec winscp et qui me manquent du coup.



sous windows je le trouvait parfait.




En plus des tips donnés plus haut tu peux également faire des points de montages avec SSHFS. Très pratique.
ex : “sshfs user@domaine:/ /home/server”
et hop te voilà avec la partition distante en ‘local’ sur ton poste de travail :)
Si tu as une authentification par clés, tu peux monter cela au boot via la fstab.


J’utilise MobaXterm sous Windows qui comprend un client sftp et un outil pour monter graphiquement des tunnels SSH :D



(reply:1893090:Trit’)




Pour faire apparaître la barre d’adresse sur la plupart des gestionnaires de fichiers sur Linux, tu as aussi le raccourci ctrl+l (L minuscule). Très pratique.


!!!
merci !!!
bon maintenant faut pas que je l’oublie, ça, c’est pas gagné XD


fry

!!!
merci !!!
bon maintenant faut pas que je l’oublie, ça, c’est pas gagné XD


Pense “location” en mot clé :D



SebGF a dit:


Pour faire apparaître la barre d’adresse sur la plupart des gestionnaires de fichiers sur Linux, tu as aussi le raccourci ctrl+l (L minuscule). Très pratique.




J’ai hésité à le rajouter à mon message, mais je connais ce raccourci, oui.


un must have pour moi


J’ai découvert SSHFS-WinManager il y a quelques temps, et je le trouve encore plus pratique que WinSCP :
https://github.com/evsar3/sshfs-win-manager



Sous windows, vous montez un lecteur vers un serveur SSH distant. Côté utilisation, ça devient alors transparent dans tous les logiciels :)


Voir ici (qui ne nécessite pas de GUI particulière)


J’utilise aussi beaucoup sshfs sous Linux. C’est plus pratique que du NFS, plus simple à utiliser et (de mon expérience) plus stable.



David_L a dit:


Non, juste qu’on chiffre le fichier, pas le tunnel (qui l’est déjà)




Je ne vois pas trop à quoi ça se rattache dans les RFC, ni dans l’implémentation openssh. C’est purement côté client en fait?



Je vois bien un flag SSH_FILEXFER_ATTR_FLAGS_ENCRYPTED parlant de chiffrement transparent du fichier au niveau du système de fichier, mais je ne vois rien de plus. Par de spécifications sur comment le traiter, pas de négociation, … Bref, je spécule un peu mais il semble qu’un fichier déposé de la sorte par winscp ne serait du coup pas récupérable via la commande sftp d’openssh, il faudrait un outil supplémentaire dans la chaine pour le restituer en clair.


Pourquoi chercher midi à 14h ? C’est un chiffrement côté client, comme déjà expliqué. Donc oui il faut pouvoir le déchiffrer spécifiquement.



Aymeric_F a dit:


Sous windows, vous montez un lecteur vers un serveur SSH distant. Côté utilisation, ça devient alors transparent dans tous les logiciels :)




Cool. Un peu plus compliqué à mettre en place pour un utilisateur autre que soit-même, surtout si on n’a pas accès à sa session (genre utilisateur qui n’a pas le droit de se loguer en interactif, utilisé pour un logiciel ou des tâches planifiées) - pour ces cas WinSCP a toujours son utilité.



SebGF a dit:


J’utilise aussi beaucoup sshfs sous Linux. C’est plus pratique que du NFS, plus simple à utiliser et (de mon expérience) plus stable.




Ça n’a rien à voir, ce n’est pas le même usage. sshfs est beaucoup plus restreint que NFS : single user, pas possible d’y mettre les homes ni les répertoires systèmes, et demande d’ouvrir l’accès ssh aux utilisateurs sur le NAS.
En pratique, NFS est beaucoup (beaucoup, mais alors vraiment beaucoup) plus performant que sshfs, et les deux sont très stables.


D’où le “de mon expérience” 😉



David_L a dit:


Pourquoi chercher midi à 14h ? C’est un chiffrement côté client, comme déjà expliqué. Donc oui il faut pouvoir le déchiffrer spécifiquement.




Ce n’est pas chercher midi à 14h dans la mesure où le texte de l’article dit explicitement:



Ce protocole ne nécessite pas plus de travail mais apporte une possibilité intéressante : on peut chiffrer (AES) les fichiers pendant le transfert.



Ce qui semble erroné d’après les spécifications officielles du protocole (hormis éventuellement un petit flag sans description d’action )… (lire les RFC, c’est bien quand on veut tirer au clair un problème d’interopérabilité), donc un ajustement de l’article serait de rigueur pour rester en ligne avec la qualité générale du site.



C’est le genre d’information qui peut mener à des croyances infondées au niveau de la sécurité d’un protocole, et donc il me semble important de le pointer dans l’article et pas seulement dans les commentaires.


Très utile avec Winscp, la possibilité de choisir l’emplacement du fichier de configuration, dans mon cas, un “.ini” dans le répertoire de Winscp, facile à sauvegarder.
J’utilise aussi la synchronisation de répertoire. On a des serveurs non graphique, donc pour le développement Java, c’est Eclipse sur mon PC, et Winscp pour synchroniser automatiquement avec le serveur distant.
La possibilité d’ajouter ses propres commandes est aussi un gros plus, changer la couleur du fond aussi pour éviter de faire des bêtises sur un environnement qualif/pre-prod.


juste en passant, j’avais abandonné winSCP pour bitvise Tunnelier, parce que les taux de transferts étaient bien supérieurs avec ce dernier. Cela dit je l’ai réinstallé comme il est géré nativement par l’excellent terminal mutiplateforme Tabby (ex Terminus), pour ne plus avoir qu’une seule interface pour faire du ssh et dl/ul des fichiers.


WinSCP permet d’éditer des fichiers de conf d’un serveur Linux depuis un PC Windows. Ça dépanne bien, je dois dire …


Petite question: wijcsp fonctionne t-il avec le 2FA actif sur ssh?