Le FTP
C'est le moyen idéal pour échanger un
fichier de PC à PC. Typiquement vous avez un fichier et vous
voulez l'envoyer à un ami. Si la taille est petite, vous
employez le mail. Voir MSN s'il est un peu plus gros... Mais pour un gros fichier ?? Ne cherchez plus , le ftp est fait pour vous !
FTP signifie File Transfer Protocol. C'est le protocole standard pour transférer des fichiers, comme le protocole HTTP (Hyper Text Transfer Protocol)
permet de transférer des pages Web. Il a été
développé et conçu pour cela il y a longtemps
maintenant, et fait partie de la suite TCP/IP.
Mode Client / Serveur
Il fonctionne sur le mode client/server:
un client se connecte sur un serveur, et peut ensuite transférer
des fichiers, dans un sens comme dans l'autre. Mais il faut avant tout
établir une connexion, peu importe qui est qui, il faut un
client d'un côté et un serveur de l'autre !
On a vu précédemment que la notion client/serveur
est très vaste, et qu'il faut rester simple. Là, ce qu'il
faut comprendre, c'est que seul le client peut initier la connexion, et
exécuter des commandes. Côté serveur, il ne s'agit
que d'un programme qui tourne sur votre PC, sans interface graphique
(vous ne voyez donc rien), et qui se contente de répondre aux
demandes de connexions ainsi qu'aux commandes émises par le
client (copier les fichiers dans un sens ou dans l'autre).
Concrètement:
L'un des PC doit donc être "Serveur Ftp"
et l'autre PC se connectera et pourra au choix
télécharger des fichiers de ce PC, ou en déposer
sur ce serveur.
Serveur
On a vu qu'il n'y pas d'interface graphique, c'est un programme qui
tourne en "tâche de fond" . Sous Windows, cela s'appelle un service:
vous devrez d'abord l'installer (ce n'est pas le cas par
défaut), puis vous pourrez choisir de le démarrer
automatiquement ou manuellement (pensez à la
sécurité, si c'est pour transférer de fichiers de
manière ponctuelle, il est préférable de choisir
démarrage manuel). Une fois démarré, le PC client
(l'ami qui veut copier un fichier) pourra se connecter sur votre PC et
faire ce qu'il a à faire. J'explique plus bas comment installer
et configurer le serveur sous Windows.
Client
Pour être client, il suffit d'installer un logiciel (on en trouve des gratuits sur internet comme Filezilla),
de connaître l'adresse IP du PC faisant office de serveur. Le
client par contre existe par défaut sous Windows, mais de
manière très basique: pas d'interface graphique,
uniquement en mode commande (vous savez, la boite noire où il
faut taper plein de choses incompréhensibles ??). J'explique
plus loin comment installer un client graphique (gratuit).
Comment ça marche ?
On voit sur ce shéma que le client comme
le serveur possèdent deux processus permettant de gérer
ces deux types d'information : le DTP (Data Transfer Process)
est le processus chargé d'établir la connexion et de
gérer le canal de données (donc le tranfert du fichier
proprement dit) et le PI (Protocol Interpreter) est l'interpréteur de protocole permettant de commander le DTP à l'aide des commandes reçues sur le canal de contrôle.
On remarque aussi qu'il n'y a pas d'interface (GUI qui signifie Graphic User Interface)
côté serveur. C'est le client qui fait tout: il initie la
connexion et envoie des commandes. Le serveur l'autorise (ou non) puis
répond à ses commandes par le canal de données.
Pour plus d'infos, vous pouvez aller voir la page suivante :http://www.commentcamarche.net/internet/ftp.php3 (d'où j'ai d'aileurs copié le shéma).
L'authentification
Pour ce faire, il faudra s'authentifier, c'est
à dire donner un nom d'utilisateur et un mot de passe... C'est
le principe de base ! Le serveur (une fois installé, voir plus
loin) autorisera les demandes de connexions des clients en fonction
d'un nom et du mot de passe fourni. Mais le serveur peut être
configuré de 2 manières: en mode Anonyme,
ou en mode normal. Sans trop rentrer dans les détails, le
protocole FTP transmet les mots de passe en clair sur le réseau
(pas de cryptage). Il est donc préférable d'autoriser les
connexions anonymes lors de l'installation du serveur, ceci afin
d'éviter de devoir transmettre sur le réseau de vrais
noms d'utilisateurs/mots passe (c'est-à-dire ceux que vous
utilisez sur votre ordinateur et qui ont à priori plus de droits
que le droit du compte par défaut créé.
Voilà un peu plus d'explications:
Authentification FTP anonyme
Vous pouvez configurer votre serveur FTP pour
autoriser l'accès anonyme aux ressources FTP. Si
l'authentification anonyme est activée, IIS (Internet Information Services, qui est utilisé pour installer la partie "serveur ftp")
essaiera toujours d'utiliser cette méthode en premier,
même si l'authentification de base est également
activée.
Si vous sélectionnez l'authentification anonyme pour une
ressource, toutes les demandes concernant cette ressource sont
traitées sans demander de nom d'utilisateur ni de mot de passe.
Cela est possible parce que IIS crée automatiquement un compte d'utilisateur Windows appelé IUSR_nom_ordinateur (nom_ordinateur étant le nom donné au PC sur lequel IIS s'exécute). Cette méthode est très similaire à l'authentification Web anonyme.
Authentification FTP de base
Pour établir une connexion FTP avec votre
serveur Web à l'aide de l'authentification de base, les
utilisateurs doivent ouvrir une session en utilisant un nom
d'utilisateur et un mot de passe correspondant à un compte
valide. Si le serveur FTP ne parvient pas à vérifier
l'identité d'un utilisateur, il renvoie un message d'erreur.
L'authentification FTP est assez peu sécurisée, car
l'utilisateur transmet son mot de passe et son nom d'utilisateur sur le
réseau sans les crypter.
Nous verrons comment faire cela lors de l'installation du serveur.
Le Serveur - Installation
Il n'est pas installé par défaut
sous Windows. Il faut donc l'ajouter, comme on peut ajouter n'importe
quel composants Windows qui ne l'est pas par défaut. Je prendrai
ici l'exemple avec Windows 2000, c'est à peu près
identique sous XP Professionel.
A noter que sur Windows XP Edition familiale (Home), ce composant n'est pas disponible (merci Microsoft). Il vous faudra alors installer un FTP Serveur comme FileZilla Server, logiciel Open-source, donc gratuit, et qui finalement se révèle plus simple d'utilisation que celui de Microsoft.
Il vous faut d'abord installer le composant: allez dans le Panneau de Configuration, et cliquez sur "Ajout et Suppresion de Programmes". Puis cliquez sur Ajouter/Supprimer des composants Windows:
Une fenêtre s'ouvre. Sélectionnez "Services Internet IIS" (Attention: ne cliquez pas sur la case, vous modifieriez la sélection existante ! Si vous ne savez plus, faites Annuler et recommencez), puis cliquez sur"Détail":
On a vu que IIS signifie Internet Information Services. On n'installe que la partie FTP, mais on pourrait installer d'autres services WEB...
Sélectionner (cocher la case) sur "Serveur FTP (File Transfer
Protocol)", puis cliquez sur OK. D'autres composants seront sans doute
ajoutés automatiquement par Windows. C'est normal.
Faites alors "Suivant" et laissez la procédure se terminer. Votre serveur FTP est installé ! Il s'agit en fait d'un service Windows, qui par défaut est installé en démarrage automatique. Si vous préférez ne démarrer le Serveur FTP que lorsque vous en avez besoin (préférable), il vous faut alors modifier le type de démarrage. Pour cela, ouvrez l'explorateur windows, sous Panneau de Configuration, sélectionner Outils d'administration, puis Gestion de l'ordinateur dans la partie droite; puis sélectionner "Services" (sous Services et applications) dans la partie gauche. Cherchez ensuite "Service de publication FTP".
Sélectionnez le et faites ensuite "Action - Propriétés". Changez alors de mode de démarrage de Automatique à Manuel:
(ceci afin de contrôler l'accès à votre ordinateur:
il faudra le lancer manuellement lorsque vous voulez que quelqu'un se
connecte sur votre PC (contrainte), mais le service sera
arrêté le reste du temps (sécurité).
Reste à configurer le compte utilisateur. Avant cela, il vous
faut comprendre les modes d'authentification possible... Encore un
petit effort !!
Le Serveur - Configuration
Pour accéder à la console des Services Internet, faites Programmes - Outils d'administration - Gestionnaire de Services Internet. La fenêtre suivante s'ouvre. (Pour démarrer le service, il suffit de cliquer sur le bouton indiqué).
Sélectionnez le Site FTP par défaut, et cliquez sur Action - Propriétés:
Dans l'onglet Comptes de sécurité, Windows a créé pour vous un compte utilisateur appelé IUSR_nom_de_l'ordinateur, et coché la case "Autoriser les connections anonymes".
Vous pouvez bien sûr utiliser un compte utilisateur de votre
choix, si vous le souhaitez. Il faut bien comprendre que ce sont les
droits de ce compte qui seront utilisés par les clients FTP se
connectant sur votre PC.
Vous pouvez désactiver l'accès aux connexions anonymes,
mais rappelez vous qu'alors les mots de passe passeront en clair sur le
réseau ! Ce n'est pas l'idéal en matière de
sécurité !! Le mieux (et le plus simple) est donc sans
doute de laisser l'accès en mode anonyme, mais de limiter au
minimum les droits de l'utilisateur IUSR_MENHIR... (si vous suivez, vous aurez compris que MENHIR est le nom de mon PC ! vous aurez à priori un autre nom !).
Il faut maintenant donner des droits sur le répertoire qui sera
utilisé pour transférer les fichiers. Dans l'onglet
"Répertoire de base", on voit que Windows crée et partage
le répertoire C:\Inetpub\ftproot.
Vous pouvez soit laisser celui-ci, soit changer et sélectionner
un répertoire de votre choix, que vous aurez créé
auparavant... par exemple sur un autre disque que le disque C... A vous
de voir.
Il faut ensuite aller donner les droits (permissions) à
l'utilisateur IUSR_MENHIR d'accéder à ce
répertoire. Il y a alors 2 niveaux de permissions à
appliquer: le partage et le répertoire lui-même. Cela se fait dans les boites suivantes:
D'abord sélectionner le répertoire ftproot dans
l'explorateur Windows, puis affichez les propriétés. Sur
l'onglet Partage, cliquez sur Autorisations, et veillez à ce que
IUSR_MENHIR ait bien les droits souhaités: s'il ne fait que
copier des fichiers que vous lui proposez, le droit de lecture suffira. S'il doit aussi y déposer des fichiers, alors il lui faudra le droit d'écriture (Modifier).
Il faut appliquer la même logique au niveau des droits du répertoire lui-même: sélectionnez l'onglet Sécurité :
Enfin, il faudra que vous donniez votre adresse IP à la personne qui va se connecter (le client). Ouvrez une boite de commande (Démarrer - Exécuter - cmd), et tapez la commande ipconfig:
Relevez votre adresse (81.57.182.135 dans l'exemple) et communiquez la au "client" (votre ami qui veut copier un fichier).
Voilà votre serveur est prêt, il ne reste plus qu'au
client à se connecter et télécharger ou y
déposer des fichiers... Pensez au firewall (pare-feu) si vous en
utilisez un: il va détecter des tentatives de connexions !. Il
faudra donc les autoriser, puisque vous savez d'où vient cette
demande de connexion.
Le client
Tous les PCs tournant sous Windows ont le client FTP d'installé de base (en installant le protocole TCP/IP). Vous pouvez tout simplement ouvrir une boite de commande, et vous connecter sur un serveur: Les 2 seules choses à connaître sont le nom (ou l'adresse TCP/IP) du serveur, ainsi que le nom d'utilisateur et le mot de passe.
Pour me connecter sur le site de Free pour y copier les fichiers de mon site Web, par exemple, je tape:
Il existe aussi des clients sous Windows plus faciles d'emploi. Un bon freeware: FileZilla, ou en logiciel payant CuteFTP ou encore FTP Expert. L'interface graphique vous simplifiera grandement les choses !
Installation de FileZilla
L'installation est vraiment très simple, laissez-vous guider par l'assistant, il n'y a aucune question compliquée. Une fois installé et démarré, il faudra d'abord créer un site (c'est-à-dire identifier le serveur sur lequel vous allez vous connecter. Pour vous connecter au PC d'un ami, remplacez dans l'exemple ci-dessous le nom d'hôte (ftpperso.free.fr) par l'adresse IP du PC distant, et choisissez Type d'authentification "Anonyme" (voir installation du serveur plus haut).
Une fois le site créé, il suffit de sélectionner, et de cliquer sur "Connexion"...
Vous pourrez alors visualiser les fichiers de votre PC dans la
fenêtre de gauche (Site local) ainsi que les fichiers sur le PC
de votre ami (Site distant). Il suffit alors de sélectionner les
fichiers de votre choix avec la souris, et de les déposer dans
l'autre fenêtre (dans les deux sens).
Vous trouverez plein d'autres clients gratuits (ou pas) sur cette page : http://www.soft411.com/software/ftp.html
La commande proxy
Pour finir, une autre utilisation du protocole FTP: transférer des fichiers entre 2 machines à partir d'une 3e (qui fait le rôle du client). C'est une utilisation avancée, vous ne devriez pas en avoir besoin, mais sachez que c'est possible
Regardez le shéma
ci-desous:

Comment cela se passe ? on utilise une commande appelée
"proxy" qui permet d'exécuter des commandes sur une
deuxième connexion.
Le principe est le suivant:
>ftp
ftp> open serveurA <- on se connecte sur le serveurA
utilisateur:
mot de passe:
ftp> proxy open serveurB <- on se connecte sur le serveurB
utilisateur:
mot de passe:
ftp> dir <- liste des fichiers sur le serveurA
ftp> proxy dir <- liste des fichiers sur le serveurB
ftp> cd /tmp <- changement de répertoire sur le serveurA
ftp> proxy cd /tmp <- changement de répertoire sur le serveurB
ftp> quote pasv <- mode "Passive" sur le serveurA
ftp> proxy quote pasv <- mode "Passive" sur le serveurB
ftp> proxy get file1 <- Transfert de fichier du serveurA vers le serveurB
ftp> proxy put file2 <- Transfert de fichier du serveurB vers le serveurA
Dans Filezilla (ou tout autre client qui supporte cette
fonctionnalité), on configure le serveur B dans les
paramètres de connexion. Je ne l'ai jamais fait (pas eu besoin),
donc pas d'exemple !! Peut-être un jour...