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).
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.
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.