Installer Filezilla 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 (moi) et un client (vous). Le serveur est configuré de telle façon que vous ne pouvez voir que ce que je décide, et vous ne pouvez modifier (envoyer, renommer, supprimer des fichiers...) que ce que je décide aussi.

Le problème du FTP, c'est qu'il n'est pas sécurisé. Le données que nous échangeons 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 notre liberté indivuelle. Mais pire que cela, les mots de passe passent en clair, et là c'est très mauvais pour mon sommeil. 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].

Petite précision, car on me pose souvent la question : Si je mets un serveur à votre disposition, c'est pour qu'il soit utilisé. Cela ne ralentit aucunement ma connexion. Au niveau du débit, j'ai une connexion Freebox qui doit vous permettre de télécharger à une vitesse de 100 ko/s (ou 100 kBps). Ça ne peut pas aller plus vite en théorie, mais si ça va beaucoup plus lentement (par exemple 50 ou 30 ko/s), c'est que d'autres personnes sont connectées. Ce n'est pas gênant pour moi, ça peut juste l'être pour vous. Deux possibilités : rester connecté et patienter, ou revenir plus tard...

Comment ça fonctionne ?

Il vous faut, pour vous connecter sur mon 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.

Au final, il vous suffit de connaître le nom de machine qui est dans notre cas cyril-ravat.homeip.net ainsi que le nom d'utilisateur et le mot de passe, que je vous ai normalement donné par mail (sinon, n'hésitez pas à me le demander). Le port est 22, mais si vous laissez la case vide cela fonctionne en général.

Détails techniques : faire un serveur SFTP

Mon serveur hébergé chez moi est sous Linux depuis quelques années, je ne me suis donc jamais renseigné pour fabriquer un client 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.

Sous Linux (il s'agit chez moi d'Ubuntu), j'utilise depuis peu 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, seuls 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 oeuvre. 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 à l'heure actuelle l'encodage des caractères n'est pas détecté, ni côté client ni côté serveur : avec un Filezilla sous Windows ou un gftp sous un Linux en « latin1 », les accents dans les noms de fichiers ne s'affichent pas correctement s'ils sont en UTF-8 sur le serveur.