Précédent | Sommaire | Index | Suivant


Chapitre 6 : utilisation de PSFTP pour transférer des fichiers de façon sûre

PSFTP, le client SFTP de PuTTY, est un outil qui sert à transférer des fichiers de façon sûre au travers d'une connexion SSH.

PSFTP diffère de PSCP sur deux points :


6.1. Démarrage de PSFTP

La manière habituelle de lancer PSFTP, c'est depuis une invite de commandes, comme pour PSCP. Pour cela, il faut soit que le répertoire de PSFTP figure dans votre variable d'environnement PATH, soit que PSFTP se trouve dans le répertoire courant. Pour ajouter le répertoire qui contient PSFTP à votre variable PATH, tapez ceci dans une invite de commandes Windows :

set PATH=C:\nom\du\répertoire\de\PuTTY\;%PATH%

Contrairement à PSCP, toutefois, PSFTP n'a pas d'options de ligne de commande avec une syntaxe compliquée. Il vous suffit d'indiquer le nom de la machine distante et éventuellement un nom d'utilisateur :

psftp serveur.exemple.com

ou éventuellement :

psftp fred@serveur.exemple.com

Vous pouvez également taper juste psftp tout seul, ou double-cliquer sur l'icône de PSFTP dans l'interface Windows. Vous obtiendrez alors l'invite de PSFTP, et un message vous signalant que PSFTP n'est connecté à aucun serveur :

C:\>psftp
psftp: no hostname specified; use "open host.name" to connect
psftp>

À partir de là, vous pouvez taper open serveur.exemple.com ou open fred@serveur.exemple.com pour lancer une session.

PSFTP reconnaît les mêmes options de ligne de commande que les autres outils PuTTY, hormis celles qui n'ont pas de sens dans le contexte d'un utilitaire de transfert de fichiers. Veuillez vous reporter à la section 3.8.3 pour avoir une description de ces options ( celles qui ne sont pas reconnues par PSFTP sont clairement indiquées ).

PSFTP gère également certaines options qui lui sont propres. Les sections suivantes décrivent les options en ligne de commande spécifiques de PSFTP.


6.1.1. -b : indiquer le nom d'un fichier de commandes par lots

En fonctionnement normal, PSFTP est un programme interactif qui affiche une invite de commande et qui traite les commandes entrées au clavier.

Si vous avez besoin d'automatiser des tâches avec PSFTP, vous préférerez probablement indiquer un ensemble de commandes préparées d'avance, et enchaîner leur exécution automatiquement. L'option -b vous permet de le faire. Elle vous sert à indiquer le nom d'un fichier de commandes par lots ( -b = batch ). Par exemple, vous pourriez créer un fichier mon_script.scr contenant des lignes comme celles-ci :

cd /home/ftp/users/jeff
del jam-old.tar.gz
ren jam.tar.gz jam-old.tar.gz
put jam.tar.gz
chmod a+r jam.tar.gz

puis le lancer en tapant :

psftp nom_utilisateur@nom_machine -b monscript.scr

Lorsque vous exécutez un script batch de cette manière, PSFTP interrompt le script si l'une des commandes échoue. Pour modifier ce comportement, vous pouvez ajouter l'option -be ( cf. section 6.1.3 ).

PSFTP se termine une fois qu'il a fini d'exécuter le script.


6.1.2. -bc : afficher les commandes par lots à mesure qu'elles sont exécutées

L'option -bc influe sur ce que PSFTP affiche lorsqu'il traite un fichier de commandes par lots dont on lui a indiqué le nom au moyen de l'option -b. Avec l'option -bc, PSFTP affiche les invites de commande et les commandes elles-mêmes, tout comme si ces commandes avaient éé entrées à la main. Donc au lieu de voir ceci :

C:\>psftp fred@nom_machine -b fichier_batch
Sent username "fred"
Remote working directory is /home/fred
Listing directory /home/fred/lib
drwxrwsr-x    4 fred     fred         1024 Sep  6 10:42 .
drwxr-sr-x   25 fred     fred         2048 Dec 14 09:36 ..
drwxrwsr-x    3 fred     fred         1024 Apr 17  2000 jed
lrwxrwxrwx    1 fred     fred           24 Apr 17  2000 timber
drwxrwsr-x    2 fred     fred         1024 Mar 13  2000 trn

vous verrez cela :

C:\>psftp fred@nom_machine -bc -b fichier_batch
Sent username "fred"
Remote working directory is /home/fred
psftp> dir lib
Listing directory /home/fred/lib
drwxrwsr-x    4 fred     fred         1024 Sep  6 10:42 .
drwxr-sr-x   25 fred     fred         2048 Dec 14 09:36 ..
drwxrwsr-x    3 fred     fred         1024 Apr 17  2000 jed
lrwxrwxrwx    1 fred     fred           24 Apr 17  2000 timber
drwxrwsr-x    2 fred     fred         1024 Mar 13  2000 trn
psftp> quit


6.1.3. -be : poursuivre le traitement par lots en cas d'erreur

Lorsque vous exécutez un fichier de commandes par lots, cette option supplémentaire fait en sorte que PSFTP n'interrompe pas le traitement, même si l'une des commandes échoue.

Cela peut être intéressant, par exemple, si vous avez besoin d'effacer un fichier, et que vous ne voulez pas que le script s'arrête si le fichier à supprimer n'existe pas.


6.1.4. -batch : éviter les invites de commandes interactives

Si vous utilisez l'option -batch, PSFTP n'affiche aucune invite de commandes interactive pendant l'établissement de la connexion. Si la clé d'hôte du serveur est invalide, par exemple ( voir à ce sujet la section 2.2 ), alors la connexion est simplement abandonnée, au lieu que PSFTP ne vous demande ce qu'il y a lieu de faire ensuite.

Ceci peut être commode lorsque PSFTP est utilisé dans des scripts batch : grâce à l'option -batch, si quelque chose ne se passe pas correctement au moment de la connexion, le job se finit sur une erreur, mais il ne plante pas.


6.2. Utilisation de PSFTP

Une fois que vous avez lancé votre session PSFTP, vous obtenez l'invite de commandes psftp>. Vous pouvez alors taper des commandes au clavier pour effectuer des transferts de fichiers. Cette partie recense toutes les commandes disponibles.


6.2.1. Règles générales d'utilisation des guillemets dans les commandes PSFTP

La plupart des commandes PSFTP sont considérées par l'interpréteur de commandes de PSFTP comme une suite de mots séparés par des espaces. Par exemple, la commande ren ancien_nom_de_fichier nouveau_nom se scinde en trois mots : ren ( le nom de la commande ), ancien_nom_de_fichier ( le nom du fichier à renommer ), et nouveau_nom ( le nouveau nom du fichier ).

Certaines fois, les noms de fichiers comportent des espaces. Dans ces cas-là, il vous faut entourer le nom avec des guillemets doubles. Cela fonctionne pour les noms de fichiers locaux comme pour les noms de fichiers distants :

psftp> get "nom de fichier avec des espaces.txt" "nouveau nom avec des espaces aussi.txt"

Les guillemets doubles en eux-mêmes ne font pas partie des noms de fichiers. Ils sont retirés par PSFTP et ils ne servent qu'à éviter que les espaces figurant dans les noms de fichiers n'agissent comme des séparateurs de fichiers.

Si vous avez besoin de taper un guillemet double ( certains systèmes d'exploitation, comme Unix, autorisent les guillemets dans les noms de fichiers ), vous pouvez le faire en doublant les guillemets . Cela fonctionne dans tous les cas, que le nom de fichier soit entouré de guillemets ou non. Exemple :

psftp> ren ""ceci"" "un nom de fichier avec des ""guillemets"" dedans"

La commande ci-dessus sert à renommer le fichier "ceci" ( remarquez les guillemets au début et à la fin du nom : ils font partie du nom du fichier ), et à lui donner comme nouveau nom un nom de fichier avec des "guillemets" dedans.

La seule exception à cette règle est la commande !, qui transmet sa ligne de commande à Windows directement, sans la scinder en mots séparés ( voir à ce sujet la section 6.2.19 ).


6.2.2. Les caractères génériques dans PSFTP

Plusieurs commandes de PSFTP autorisent l'utilisation de caractères génériques pour sélectionner plusieurs fichiers à la fois.

Pour indiquer un fichier local ( comme par exemple le premier argument de la commande put ), ce sont les règles en vigueur dans le système d'exploitation local qui s'appliquent. Par exemple, sous Windows, il faut mettre *.* pour désigner tous les fichiers, alors que sous Unix, il suffit de mettre *.

Pour indiquer un fichier distant ( comme le premier argument de la commande get ), PSFTP utilise une syntaxe similaire à celle des caractères génériques de la norme POSIX :

Un point ( . ) placé au début d'un nom de fichier n'a pas de signification spéciale, contrairement à certains contextes, sous Unix ( où il sert à indiquer un fichier caché [NdT] ). La commande get * récupère tous les fichiers, que leur nom commence par un point ou pas.


6.2.3. La commande open : pour démarrer une session

Si vous avez lancé PSFTP depuis le menu Démarrer, ou en double-cliquant sur son icône, ou encore en tapant psftp en ligne de commande, il faut vous connecter à une machine qui fait serveur SFTP avant de pouvoir taper d'autres commandes ( mis à part help et quit ).

Pour établir une connexion, tapez open nom.de.la.machine.distante, ou alors, si vous avez besoin de préciser un nom d'utilisateur pour vous y connecter, open nom_utilisateur@nom.de.la.machine.distante.

Une fois que vous avez tapé cette commande, vous ne pourrez plus la taper à nouveau, même si la commande échoue ( par exemple, si vous vous trompez en tapant le nom de la machine distante, ou si le délai maximal d'attente s'écoule avant que la connexion n'ait pu être établie ). Donc si la connexion ne s'ouvre pas correctement, PSFTP se termine sans autre forme de procès ( et vous êtes bon pour réessayer ).


6.2.4. La commande quit : pour terminer votre session

Lorsque vous avez fini ce que vous aviez à faire, tapez quit pour fermer la connexion, quitter PSFTP et revenir à la ligne de commande ( ou fermez juste la fenêtre de la console PSFTP si vous l'aviez lancée depuis le menu Démarrer, ou en double-cliquant sur son icône ).

Vous pouvez aussi utiliser les commandes bye et exit, qui ont exactement le même effet.


6.2.5. La commande close : pour fermer votre connexion

Si vous voulez juste fermer la connexion réseau, sans arrêter PSFTP, utilisez la commande close. Vous pouvez alors taper open pour ouvrir une nouvelle connexion.


6.2.6. La commande help : pour obtenir rapidement de l'aide en ligne

Si vous tapez help tout court, PSFTP affiche la liste des commandes disponibles.

Si vous tapez help suivi d'un nom de commande, comme par exemple help get, alors PSFTP affiche un petit texte d'aide sur cette commande en particulier.


6.2.7. Les commandes cd et pwd : pour changer de répertoire de travail sur la machine distante

PSFTP garde en mémoire quel est votre « répertoire de travail » sur la machine distante, et l'utilise comme répertoire par défaut pour les commandes que vous tapez sans préciser de répertoire. Par exemple, si vous tapez get mon_fichier.dat, PSFTP cherche un fichier nommé mon_fichier.dat dans votre répertoire de travail sur la machine distante ( s'il l'y trouve, tant mieux, et sinon, cela fait une erreur ).

Pour changer de répertoire de travail sur la machine distante, utilisez la commande cd. Utilisée sans argument, cd vous ramène dans votre répertoire personnel sur la machine distante ( ou plus exactement, dans le répertoire de la machine distante où vous vous trouviez lorsque la connexion a été établie ).

Pour connaître votre répertoire de travail, sur la machine distante, à un instant donné, tapez pwd.


6.2.8. Les commandes lcd et lpwd : pour changer de répertoire de travail sur la machine locale

En plus d'avoir un répertoire de travail sur la machine distante, PSFTP a aussi un répertoire de travail en local, sur votre PC ( comme n'importe quel autre processus Windows ). C'est le répertoire local par défaut sur lequel portent les commandes PSFTP. Par exemple, si vous tapez get mon_fichier.dat ( sans plus d'indications sur l'endroit où il faut le mettre ), PSFTP sauvegarde le fichier mon_fichier.dat dans votre répertoire de travail local.

Pour modifier votre répertoire de travail local, utilisez la commande lcdlocal change directory [NdT] ).

Pour savoir quel est votre répertoire de travail local à un instant donné, tapez lpwdlocal print working directory [NdT] ).


6.2.9. La commande get : pour transférer un fichier depuis la machine distante

Pour télécharger un fichier depuis la machine distante, et le placer en local sur votre PC, utilisez la commande get.

Dans sa forme la plus simple, il suffit de lui indiquer un nom de fichier :

get mon_fichier.dat

Si vous voulez stocker le fichier sous un nom local différent, précisez-le après le nom qu'a le fichier sur la machine distante :

get mon_fichier.dat nouveau_nom.dat

Cela prendra sur la machine distante un fichier nommé mon_fichier.dat, mais cela le sauvegardera sur la machine locale sous le nom nouveau_nom.dat.

Pour télécharger un répertoire entier, de façon récursive, il suffit de rajouter l'option -r :

get -r mon_dossier
get -r mon_dossier nouveau_nom

Si vous avez besoin de télécharger un fichier dont le nom commence par un tiret, utilisez l'option spéciale --, qui indique à get de ne pas considérer comme une option ce qu'il y a après. Exemple :

get -- -nom-de-fichier-bizarre-avec-des-tirets-de-partout-


6.2.10. La commande put : pour transférer un fichier vers la machine distante

Pour télécharger un fichier vers la machine distante depuis votre PC, utilisez la commande put.

Dans sa forme la plus simple, il suffit de lui indiquer un nom de fichier :

put mon_fichier.dat

Si vous voulez donner au fichier, sur la machine distante, un nom différent de celui qu'il avait en local, indiquez-le après le nom local :

put mon_fichier.dat nouveau_nom.dat

Cela enverra sur la machine distante un fichier local nommé mon_fichier.dat, mais en le sauvegardant sous le nom nouveau_nom.dat.

Pour envoyer un répertoire entier, de façon récursive, il suffit de rajouter l'option -r :

put -r mon_dossier
put -r mon_dossier nouveau_nom

Si vous avez besoin d'envoyer sur la machine distante un fichier dont le nom commence par un tiret, utilisez l'option spéciale --, qui indique à put de ne pas considérer comme une option ce qu'il y a après. Exemple :

put -- -nom-de-fichier-bizarre-avec-des-tirets-de-partout-


6.2.11. Les commandes mget et mput : pour transférer plusieurs fichiers à la fois, dans un sens ou dans l'autre

La commande mget fonctionne presque exactement comme get, à ceci près qu'elle vous permet de transférer plusieurs fichiers en une seule fois. Vous pouvez faire cela de deux manières :

Autre différence, par rapport à get : chacun des arguments de mget est considéré comme le nom d'un fichier à transférer, ou comme une expression comportant des caractères génériques pour désigner plusieurs fichiers en une seule fois ( contrairement à get, qui ne considère que son premier argument comme le nom d'un fichier à transférer, et qui considère un éventuel second argument comme le nom local qu'il faut donner au fichier, une fois celui-ci transféré ).

Les options -r et -- de la commande get valent également pour la commande mget.

La commande mput est similaire à la commande put, avec les mêmes différences qu'entre get et mget.


6.2.12. Les commandes reget et reput : pour reprendre des transferts de fichiers après interruption

Si un transfert de fichier échoue ( dans un sens ou dans l'autre ), et que vous vous retrouvez avec une moitié de fichier dans le répertoire de destination, vous pouvez relancer le transfert grâce aux commandes reget et reput. Elles fonctionnent exactement de la même manière que les commandes get et put, à ceci près qu'elles tiennent compte de ce qui a déjà été téléchargé, et qu'elles reprennent le transfert là où il en était resté.

La syntaxe de reget et de reput est exactement la même que celle de get et de put :

reget mon_fichier.dat
reget mon_fichier.dat nouveau_nom.dat
reget -r mon_dossier

Ces commandes sont là pour permettre de reprendre des transferts de fichiers interrompus. Elles considèrent que le fichier ou l'arborescence à transférer n'a pas changé depuis la précédente tentative de transfert. S'il y a eu des modifications, vous allez vous retrouver avec des fichiers corrompus, qui ne correspondent pas à ce que vous attendez. En particulier, l'option -r ne tiendra pas compte des modifications survenues sur des fichiers ou des répertoires qui ont déjà été transférés correctement ( il ne faut donc pas utiliser les commandes reget et reput comme des outils de synchronisation - elles ne sont pas faites pour cela - mais uniquement pour reprendre un transfert interrompu, assez rapidement après l'échec de la tentative précédente [NdT] ).


6.2.13. La commande dir : pour lister les fichiers de la machine distante

Pour lister les fichiers présents dans votre répertoire de travail sur la machine distante, il vous suffit de taper dir.

Vous pouvez également consulter le contenu d'un autre répertoire en indiquant son nom après la commande dir :

dir /home/fred
dir sources

Enfin, vous pouvez restreindre l'affichage à une partie du contenu du répertoire grâce aux caractères génériques habituels :

dir /home/fred/*.txt
dir sources/*.c

La commande ls fonctionne exactement de la même manière que dir.


6.2.14. La commande chmod : pour modifier les permissions de fichiers sur la machine distante

PSFTP vous permet de modifier les permissions des fichiers et des répertoires situés sur la machine distante. Pour cela, utilisez la commande chmod, qui fonctionne de façon très similaire à la commande Unix du même nom.

La syntaxe est la suivante : chmod modes fichier, avec modes qui correspond à la modification à apporter aux permissions du fichier, et fichier qui est le nom du fichier dont il faut modifier les permissions. Vous pouvez indiquer plusieurs noms de fichiers à la fois, et l'usage des caractères génériques est autorisé. Exemple :

chmod go-rwx,u+w fichier_perso
chmod a+r public*
chmod 640 fichier1 fichier2

Le paramètre modes peut être un ensemble de chiffres en octal dans le style Unix ( si vous ne savez pas ce que cela signifie, mieux vaut éviter de s'en servir ! ).

Ce peut être aussi une liste de modifications sur les permissions, séparées par des virgules. Chacune de ces modifications se compose de trois choses :

Les exemples donnés ci-dessus correspondraient donc à cela :

En plus de tout cela, il y a quelques petites particulariés propres aux systèmes Unix ( qui ont bien peu de chances de servir à quoi que ce soit sur les systèmes non-Unix ) :


6.2.15. La commande del : effacer des fichiers sur la machine distante

Pour supprimer un fichier sur la machine distante, tapez del avec le nom du ou des fichiers à effacer :

del vieux_fichier.dat
del fichier1.txt fichier2.txt
del *.o

Les fichiers sont supprimés sans demande de confirmation, même si la demande de suppression porte sur plusieurs fichiers.

del ne supprime que les fichiers. Si vous voulez supprimer des répertoires, c'est rmdir qu'il faut utiliser.

La commande rm fonctionne exactement de la même manière que del.


6.2.16. La commande mkdir : pour créer des répertoires sur la machine distante

Pour créer un répertoire sur la machine distante, tapez mkdir suivi du nom du répertoire :

mkdir nouveau_dossier

Il est possible de créer plusieurs répertoires en une seule fois 

mkdir dossier1 dossier2 dossier3


6.2.17. La commande rmdir : pour effacer des répertoires sur la machine distante

Pour supprimer un répertoire sur la machine distante, tapez rmdir suivi du nom du (ou des) répertoire(s) à supprimer :

rmdir vieux_machins
rmdir *.old vieilleries

Les répertoires seront effacés sans demande de confirmation, même s'il y en a plusieurs à supprimer d'un coup.

La plupart des serveurs SFTP refusent de supprimer un répertoire non vide, donc il vous appartient d'en effacer le contenu auparavant.


6.2.18. La commande mv : pour déplacer et renommer des fichiers sur la machine distante

Pour renommer un seul fichier sur la machine distante, tapez mv, suivi du nom actuel du fichier, puis de son nouveau nom :

mv ancien_nom nouveau_nom

Vous pouvez aussi déplacer le fichier vers un autre répertoire, et le renommer par la même occasion :

mv ancien_nom ailleurs/nouveau_nom

Pour déplacer un ou plusieurs fichiers dans un sous-répertoire déjà existant, indiquez le nom du ou des fichiers à déplacer ( avec des caractères génériques, si besoin est ), puis le nom du répertoire cible :

mv fichier dossier
mv fichier1 dossier1/fichier2 dossier2
mv *.c *.h ..

Les commandes rename et ren fonctionnent exactement de la même manière que mv.


6.2.19. La commande ! : lancer une commande Windows sur la machine locale

Vous pouvez lancer des commandes Windows sur la machine locale grâce à la commande !. C'est la seule commande de PSFTP qui ne soit pas soumise aux règles d'utilisation des guillemets expliquées dans la section 6.2.1. Quand une ligne de commande commence par le caractère !, le reste de la ligne est transmis à Windows tel quel.

Par exemple, si vous voulez déplacer une copie existante d'un fichier avant d'en télécharger une nouvelle version, vous pouvez taper par exemple :

psftp> !ren mon_fichier.dat mon_fichier.bak
psftp> get mon_fichier.dat

en utilisant la commande Windows ren pour renommer l'ancien fichier en local sur votre PC.


6.3 Utilisation de l'authentification par clé publique / clé privée avec PSFTP

Comme PuTTY, PSFTP sait gérer l'authentification par clé publique / clé privée plutôt que par mot de passe. Vous pouvez faire cela de trois façons différentes :

Premièrement, PSFTP sait utiliser les sessions sauvegardées de PuTTY en lieu et place de noms de machines. Vous pourriez donc faire ceci :

Deuxièmement, vous pouvez indiquer le nom d'un fichier de clé privée en ligne de commande, avec l'option -i ( pour plus de détails à ce sujet, veuillez vous reporter à la section 3.8.3.18 ).

Troisièmement, PSFTP essaie de s'authentifier en passant par Pageant si Pageant est lancé ( pour plus de renseignements à ce sujet, voir le chapitre 9 ). Pour cela, procédez comme suit :

Pour plus d'informations au sujet de l'authentification par clé publique / clé privée, veuillez vous reporter au chapitre 8.


Si vous souhaitez faire part aux auteurs de PuTTY de votre avis sur ce manuel, ou sur les outils PuTTY eux-mêmes, veuillez vous reporter à la page "Feedback" ( merci de leur écrire exclusivement en anglais ). Si vos remarques portent sur la traduction, merci de vous adresser directement au  traducteur, et non à l'équipe de développement.

[PuTTY release 0.60]

Valid HTML 4.01 Strict