Utiliser Filezilla

Les connexions SFTP

À quoi ça sert ?

Commençons par le commencement : le FTP. Il s'agit, comme son nom l'indique, d'un protocole de transfert de fichiers (File Transfer Protocol). Il permet de transférer des fichiers, dans les deux sens, entre un serveur (distant) et un client (vous). Le serveur peut être configuré de façon à ne vous laisser voir/modifier que ce que l'administrateur décide.

Le problème du FTP, c'est qu'il n'est pas sécurisé. Le données que vous échangez passent « en clair », n'importe qui (avec un peu de connaissances en informatique) peut écouter tout ce qui se dit. Cela n'est pas bon pour votre liberté indivuelle. Mais pire que cela, les mots de passe passent en clair, et là c'est très mauvais pour la tranquillité. Mais la solution existe : le SFTP.

Le SFTP, Secure File Transfert Protocol, est beaucoup plus sûr que le FTP. Toute la connexion est chiffrée, y compris les mots de passe et bien sûr le contenu des transferts. Techniquement, ça peut aussi résoudre des problèmes de connexion à un serveur FTP[1].

Comment ça fonctionne ?

Il vous faut, pour vous connecter sur un serveur SFTP, un logiciel qui va bien. Il s'agit en général d'un logiciel de FTP qui supporte les protocoles sécurisés. Je vous conseille très fortement Filezilla, un très bon logiciel libre et gratuit. Ce logiciel est disponible à la fois pour Windows, pour MacOS et pour Linux. Vous trouverez un mini-tutoriel pour savoir comment l'utiliser.

Remarque : si vous êtes sous Linux et avec un environnement classique, il y a encore plus simple. Votre navigateur de fichier, certainement Nautilus ou Konqueror (si cela ne vous dit rien, c'est en général que vous utilisez l'un des deux), permet de voir un serveur sftp comme des dossiers normaux. Tapez simplement sftp://la_machine (et le logiciel vous demandera identifiant et mot de passe) ou sftp://identifiant@la_machine (et il vous demandera mot de passe uniquement) dans la barre d'adresse (que l'on obtient en tapant Control+L dans Nautilus), puis entrée. Simple, non ?

Détails techniques : faire un serveur SFTP

J'ai abandonné Windows vers 2003, un peu avant de chercher à monter mon propre serveur SFTP. Je ne me suis donc jamais renseigné pour fabriquer un serveur SFTP sous Windows. Après des recherches rapides, il semble que l'utilisation de Cygwin (un environnement Linux qui tourne sous Windows) soit plus ou moins nécessaire, et que le « chroot » (impossibilité d'aller dans un répertoire ailleurs que celui où on atterit à la connexion) soit plus ou moins impossible. Si par contre la sécurité n'est pas votre priorité (sur un réseau local par exemple), vous pouvez en 5 minutes installer un serveur FTP avec FilezillaServer. Mais ce n'est pas mon sujet.

J'héberge chez moi un serveur, sous Linux (il s'agit d'Ubuntu), depuis quelques années. J'utilise un très bon logiciel appelé MySecureShell. C'est un shell (le logiciel lancé à la connexion d'un utilisateur et par lequel passe toutes les commandes) qui permet de restreindre fortement les accès des utilisateurs. En particulier, seules les connexions SFTP sont acceptées (pas de vraie connexion SSH pouvant lancer des commandes), le chroot est possible (mais pas obligatoire), l'UTF-8 est supporté[2]. Le principal avantage de MySecureShell est je pense dans sa configuration, très très modulable et fonctionnant à l'identique d'Apache, avec des directives à plusieurs niveaux (global, par hôte virtuel, par utilisateur, par groupe, par (classe d')adresse(s) IP...). Cela simplifie énormément les choses, surtout quand les directives sont aussi bien documentées. Si on rajoute à cela le fait que le logiciel est libre, gratuit et français...

Enfin, pour l'installation, MySecureShell est disponible dans un dépôt Debian/Ubuntu, mais aussi en paquet rpm à télécharger ou en sources compilables. Pour les novices sous Ubuntu, la première solution est la plus simple et permet de recevoir automatiquement les mises à jour. Pour les autres, les sources sont hébergées sur le site de Sourceforge.

[1] Le FTP utilise un port principal pour la communication, le port 21, sur lequel les ordinateurs se disent « boujour, ça va, qu'est-ce que tu veux ». Mais tous les transferts passent par d'autres ports, déterminés « en direct » par le serveur (qui le dit de suite au client par le port 21), en général situés entre 60000 et 66000. Les utilisateurs d'un firewall (si ce n'est pas votre cas, sachez que votre ordinateur n'est vraiment pas en sécurité) et a fortiori d'un routeur doivent avoir un firewall qui écoute en permanence la connexion pour ouvrir les bon ports, ou ouvrir directement la plage entière de ports pour que les transferts puissent être effectués, ce qui peut être dangeureux. Le SFTP résout ce problème en faisant passer l'ensemble des transferts sur le port 22, port qui par ailleurs est souvent ouvert car servant aux connexions SSH.

[2] J'utilisais jusqu'à janvier 2007 un autre shell qui s'appelle RSSH (pour Restricted SSH). Il s'agit d'un shell extrèmement minimaliste, très orienté sécurité mais peu évident à mettre en œuvre. En particulier, le chroot qu'il utilise oblige à copier un certain nombre de librairies dans le répertoire de chaque utilisateur, ce qui a pour conséquence de compliquer sérieusement la création d'un nouveau compte. De plus, RSSH laisse à OpenSSH toutes les fonctionnalités, et en 2007 l'encodage des caractères n'était pas détecté, ni côté client ni côté serveur : avec un Filezilla sous Windows, les accents dans les noms de fichiers ne s'affichaient pas correctement s'ils étaient en UTF-8 sur le serveur.