SSH et compagnie : sftp, scp et ssh-agent

Gazette Linux n°64 — Mars 2001

Jérôme Fenal

Adaptation française  

Frédéric Marchal

Correction du DocBook 

Article paru dans le n°64 de la Gazette Linux de mars 2001.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

sftp et vue d'ensemble de scp
sftp
scp
Gestion des clés de SSH
ssh-agent
ssh-add
Conclusion, liens utiles

Résumé

Le but de cet article est de faire une introduction à quelques programmes utiles dans la suite SSH, à savoir sftp, scp, ssh-agent et ssh-add. Nous supposerons dans ce qui va suivre que le daemon sshd2 est bien configuré et lancé.

sftp et vue d'ensemble de scp

Concentrons-nous sur sftp et scp.

Le premier (sftp — en anglais, transfert de fichier sécurisé) est un client à la mode ftp utilisé pour transférer des fichiers à travers le réseau. Il n'utilise pas de daemon FTP (ftpd ou wu-ftpd) pour les connexions, ce qui permet une amélioration significative de la sécurité du système. En fait, en surveillant les fichiers journaux de nos systèmes, nous avons noté que 80% des attaques durant le mois dernier étaient lancées contre le daemon ftpd. L'utilisation de sftp empêche tous ces essais puisqu'elle permet d'arrêter le daemon wu-ftpd potentiellement dangereux.

La seconde (scp — en anglais, copie sécurisée) est employée pour copier des fichiers à travers le réseau de façon sécurisée. C'est un remplacement pour la peu sûre commande rcp.

sftp et scp n'exigent aucun daemon dédié puisque les deux programmes sont reliés au serveur sshd. Afin d'utiliser sftp et scp vous devez insérer la ligne suivante dans le fichier de configuration /etc/ssh2/sshd2_config :

subsystem-sftp                  sftp-server

Vous devez redémarrer sshd après cette modification. Vous pourrez ainsi utiliser sftp et scp sur les systèmes où sshd est en fonction.

sftp

sftp utilise ssh2 pour ses connexions, le transport du fichier bénéficiant ainsi de la meilleure sécurité possible. Il y a deux avantages à utiliser sftp au lieu de ftp :

  • Les mots de passe ne sont jamais transférés en clair, empêchant n'importe quelle attaque de type écoute passive.

  • Les données sont chiffrées pendant le transfert, rendant difficile l'espionnage ou la modificaton de la connexion.

L'utilisation de sftp2 est simple. Supposons que vous vous connectiez à votre compte mon_nom sur la machine serveur1. Pour ce faire, utilisez la commande :

sftp mom_nom@serveur1

Quelques options peuvent être spécifiées sur la ligne de commande (voir la page de manuel afférante à sftp pour les détails complets).

Quand sftp2 est prêt à accepter des commandes utilisateur, il envoie une invite sftp. Vous trouverez dans la page de manuel de sftp une liste complète des commandes que l'utilisateur peut utiliser, avec parmi elles :

quitQuitte l'application
cd répertoireChange le répertoire de travail courant distant
lcd répertoireChange le répertoire de travail courant local
ls [-R] [-l] [fichier ...]Renvoie la liste des fichiers disponibles sur le serveur. Si l'argument est un répertoire, son contenu est renvoyé. Quand l'option -R est spécifiée, l'arborescence est renvoyée récursivement (par défaut, les sous-répertoires des répertoires en argument ne sont pas visités.) Quand l'option -l est indiquée, les permissions, propriétaires, tailles et heures de modifications de fichier sont aussi montrées. Quand aucun argument n'est spécifié, le contenu du répertoire courant est renvoyé. Les options -R et -l sont mutuellement incompatibles.
lls [-R] [-l] [fichier ...]idem ls, mais sur les fichiers et répertoires locaux.
get [file ...]Transfère les fichiers indiqués spécifiés du serveur vers le client. Les répertoires sont récursivement copiés avec leur contenu.
put [file ...]Transfère les fichiers indiqués spécifiés du client vers le serveur. Les répertoires sont récursivement copiés avec leur contenu.
mkdir répertoire (rmdir répertoire)Essaye de créer (détruire) le répertoire dont le nom est indiqué en argument

sftp2 supporte l'utilisation de caractères jokers en paramètre des commndes ls, lls, get et put. Le format en est défini dans la page de manuel sshregex.

Puisque sftp utilise des techniques de chiffrement, il existe un inconvénent : la connexion est plus lente (d'un facteur de 2 ou 3 au vu de mon expérience), mais ce point est d'un intérêt marginal considérant les grands avantages de sécurité apportés.

Dans un essai conduit sur notre réseau local, un renifleur de réseau pouvait récupérer une moyenne de 4 mots de passe à l'heure sur les connexions FTP. La mise en œuvre de sftp en tant que protocole standard pour le transfert de fichier à travers le réseau a pu éliminer ce problème de sécurité.

scp

scp2 (copie sécurisée) est utilisé pour copier des fichiers à travers le réseau de manière sécurisée. Il utilise ssh2 pour le transfert des données : il utilise la même authentification et fournit la même sécurité que ssh2.

C'est probablement la manière la plus simple de copier un fichier sur une machine à distance. Supposons que vous voulez copier le fichier nom_fichier contenu dans le répertoire rep_local au répertoire rep_distant de votre compte mon_nom du serveur serveur1. En utilisant scp, vous pourriez entrer de la ligne de commande :

scp rep_local/nom_fichier mon_nom@serveur1:rep_distant

Le fichier est ainsi copié en gardant son nom. Des caractères jokers peuvent être utilisés (à ce sujet, consulter la page de manuel de sshregex).

La commande :

scp rep_local/* mon_nom@serveur1:rep_distant

copie tous les fichiers du répertoire rep_local dans le répertoire rep_distant de la machine serveur1.

La commande :

scp mon_nom@serveur1:rep_distant/nom_fichier .

copie le fichier nom_fichier du répertoire distant sur serveur1 rep_distant sur le répertoire local.

scp supporte bon nombre d'options et permet des copies entre deux systèmes distants comme dans l'exemple suivant :

scp mon_nom@serveur1:rep_distant/nom_fichier mon_nom@serveur2:autre_rep

Voir la page de manuel pour une présentation complète.

Evidemment, en utilisant scp, vous devez connaître l'arborescence exacte des répertoires de la machine distante, si bien que dans la pratique sftp est souvent préféré[1].

Gestion des clés de SSH

La suite SSH contient deux programmes permettant de gérer les clés d'authentification, permettant à l'utilisateur de se connecter sans saisir de mot de passe ou de phrase de passe. Ces programmes sont ssh-agent et ssh-add.

ssh-agent

Dans la page de manuel de ssh-agent, nous pouvons lire : « ssh-agent2 est un programme pour conserver des clés privées d'authentification. L'idée est que ssh-agent2 est démarré au début d'une session X-window ou d'une session de connexion terminal, et que tous les autre programmes ou fenêtres sont lancés en tant que processus fils de ssh-agent2 (la commande lance X ou l'interpreteur de commande interactif de l'utilisateur) Les programmes lancés par l'agent héritent de la connexion à l'agent, et l'agent est automatiquement utilisé pour l'authentification à clé publique lors de connexions à d'autres machines utilisant ssh. »

Il y a deux manières d'utiliser ssh-agent selon que vous utilisiez xdm ou non. Dans le premier cas, il vous faudra modifier votre fichier .xsession de votre répertoire utilisateur ($HOME). Deux procédures pour y arriver : copiez .xsession en .xsession.toto et mettez uniquement la ligne qui suit dans .xsession :

exec ssh-agent ./.xsession-toto

Vous pouvez aussi modifier .xsession et chercher chaque ligne contenant l'expression « exec programme ». Modifiez ces lignes pour qu'elles apparaissent sous la forme « exec ssh-agent programme ».

Quittez votre session X et redémarrez-la. ssh-agent démarrera la session X en tant que processus fils unique et attendra les clés ssh à ajouter à sa base de données.

Si xdm ne tourne pas sur votre machine, la procédure est plus simple car vous n'aurez qu'à lancer votre session X en utilisant la commande :

ssh-agent startx

Ainsi, ssh-agent s'exécutera correctement.

ssh-add

Dès que ssh-agent est en place, vous pouvez ajoutez des identités à sa base de données en utilisant la commande ssh-add. Vous ne pouvez ajouter ces identités que depuis des processus fils d'un ancètre ssh-agent, ou sinon le message d'erreur suivant vous sera affiché :

Failed to connect to authentication agent - agent not running ?

L'utilisation de ssh-add est simple : lancez la commande suivante :

ssh-add

ssh-add balaiera le fichier $HOME/.ssh2/identification qui contient les noms des clés privées utilisées pour l'authentification. Si ce fichier n'existe pas, le nom standard de la clé privée est utilisé (à savoir : $HOME/.ssh2/id_dsa_1024_a.) Si une clé publique recquiert une phrase de passe, ssh-add la demande à l'utilisateur :

Adding identity: /home/matt/.ssh2/id_dsa_1024_a.pub
Need passphrase for /home/matt/.ssh2/id_dsa_1024_a (..)
Enter passphrase:

Vous pouvez obtenir la liste de toutes les identités endossées par l'agent en utilisant la commande ssh-add -l :

Listing identities.
The authorization agent has one key:
id_dsa_1024_a: 1024-bit dsa, (...)

Conclusion, liens utiles

Beaucoup d'utilisateurs de telnet, de rlogin, de ftp ne se rendent pas compte que leur mot de passe est transmis en clair à travers le réseau, mais il l'est. L'utilisation de protocoles sécurisés a pu permettre une transmission sécurisée à travers des réseaux non-sûrs.

SSH, en chiffrant le trafic, élimine pertinemment l'écoute clandestine, le détournement de connexion, et d'autres attaques réseau.

Ces articles sont seulement une introduction à SSH ; vous trouverez plus d'informations à ce sujet dans les page de manuel de ssh, de sshd et de sftp.

Vous pourriez obtenir la suite de SSH de www.ssh.com/products/ssh/, site principal de SSH ou d'un site miroir. Vous y trouverez également quelques informations très intéressantes sur la technologie de SSH et la cryptographi en général dans le Tech corner.

Vous pouvez aussi visiter www.openssh.com où vous pouvez télécharger openssh, mise en œuvre libre du protocole SSH. La version portable est disponible à www.openssh.com/portable.html. Vous pouvez également lire la FAQ d'openssh : www.openssh.com/faq.html.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.