<!doctype article public "-//OASIS//DTD DocBook V3.1//EN">
<article id="lg61g-fr" lang="fr">
 <artheader>
  <title>Utilisation de ssh</title>
<subtitle>Linux Gazette numéro 61</subtitle>
<copyright><year>2001</year><holder>Matteo Dell'Omodarme</holder></copyright>
<author>
  <firstname>Matteo</firstname><surname>Dell'Omodarme</surname>
  <affiliation>
    <address><email>matt@martine2.difi.unipi.it</email></address>
  </affiliation>
</author>
<author>
  <firstname>Jérôme</firstname><surname>Fenal</surname>
  <affiliation>
    <address><email>jerome@fenal.org</email></address>
  </affiliation>
  <contrib>Traduction française</contrib>
</author>
<author>
  <firstname>Nicolas</firstname><surname>Prigent</surname>
  <affiliation>
    <address><email>PrigentN@thmulti.com</email></address>
  </affiliation>
  <contrib>Traduction française</contrib>
</author>
</artheader>

<sect1 id="lg61g-fr-1"><title>Introduction</title>
<para>
Chaque fois que nous nous connectons par telnet à une machine
distante, les données de la connexion traversent le réseau local, ce
qui donne à un intrus éventuel la possibilité d'épier la connexion, et
éventuellement d'y insérer des commandes malicieuses. L'utilisation de
systèmes de chiffrement fort permettra une énorme amélioration de la
sécurité du réseau.
</para>
<para>
Nous apprenons de la page de manuel de ssh les points suivants&nbsp;:
&laquo;&nbsp;Ssh (Secure Shell) est un programme pour se connecter sur
une machine distante et exécuter des commandes sur une machine
distante. Il est destiné à remplacer les commandes rlogin et rsh, et à
fournir une communication sécurisée par chiffrement entre deux
machines non maîtrisées à travers un réseau peu sûr. Les connexions
X11 ainsi que celles entre des ports TCP arbitraires peuvent aussi être
realisées à travers le canal sécurisé&nbsp;&raquo;. Ssh est un programme
puissant et très facile à utiliser, qui utilise un chiffrement fort
pour protéger toutes les données confidentielles qui transitent, y
compris les mots de passe.
</para
<para>
Il existe à l'heure actuelle deux protocoles SSH, connus sous les noms
de SSH2 et SSH1, le premier étant une amélioration du protocole
SSH1. SSH2 supporte maintenant d'autres méthodes d'échange de clés que
l'échange par double chiffrement RSA. La distribution actuelle met en
oeuvre l'échange de clés Diffie-Hellman<footnote><para>NdT&nbsp;:
du nom des inventeurs</para></footnote> et autorise l'utilisation de
DSA ainsi que d'autres algorithmes de chiffrement à clé publique que
RSA.
</para>
<para>
SSH2 peut être rendu compatible avec SSH1, mais ne l'est pas par
défaut&nbsp;; le serveur SSH2 seul ne sait pas gérer une connexion SSH1
et vous devez mettre en place un serveur SSH1 pour ce
faire<footnote><para>NdT&nbsp;: avec OpenSSH, pas de problème de ce
point de vue là. Tout est faisable, ce n'est qu'une option de
configuration à modifier</para></footnote>.
</para>
</sect1>

<sect1 id="lg61g-fr-2"><title>Obtention et installation de SSH</title>
<para>
Vous pouvez obtenir les clients et serveurs SSH2 et SSH1 depuis le
<ulink url="http://www.ssh.com">serveur FTP principal</ulink> ou
depuis les sites miroirs. La dernière version en date de SSH1 est
ssh-1.2.30.tar.gz, tandis que pour SSH2, vous pouvez télécharger
ssh-2.3.0.tar.gz.
</para>
<para>
Le processus d'installation est très simple. La première étape est de
dépaqueter les sources de SSH1&nbsp;:
<programlisting>
tar -zxf ssh-1.2.30.tar.gz
</programlisting>
Cela créera un répertoire ssh-1.2.30. Allez dans ce répertoire et
lancez le processus de configuration&nbsp;:
<programlisting>
cd ssh-1.2.30
./configure
</programlisting>
Le script <emphasis>configure</emphasis> transmet toutes les
informations nécessaires à l'étape de la compilation, recherchant sur
le système les bibliothèques et programmes requis. Quand le script
a fini son travail, vous pouvez lancer la compilation&nbsp;
<programlisting>
make
</programlisting>
Après l'étape de compilation, passez administrateur et installez
binaires, fichiers de configuration et clés du système en tapant&nbsp;:
<programlisting>
make install
</programlisting>
Cela installera les clients (scp1, ssh-add1, ssh-agent1, ssh-askpass1,
ssh-keygen1, ssh1) dans le répertoire /usr/local/bin, et le serveur
(sshd1) dans /usr/local/sbin. Remarquez que, dans /usr/local/bin, il
existe des liens symboliques (sans le suffixe
&laquo;&nbsp;1&nbsp;&raquo;) vers les exécutables.
</para>
<para>
La prochaine étape est d'installer SSH2. Les opérations requises sont
les mêmes que pour SSH1&nbsp;:
<programlisting>
tar -zxf ssh-2.3.0.tar.gz
cd ssh-2.3.0
./configure
make
</programlisting>
et en tant qu'administrateur&nbsp;:
<programlisting>
make install
</programlisting>
</para>

<sect2><title>Compatibilité SSH1 - SSH2</title>
<para>
Dans ce qui va suivre, nous allons supposer que SSH1 et SSH2 sont
installés. Pour faire en sorte de rendre capable le serveur SSH2 de
gérer une connexion SSH1, vous devez éditer les fichiers de
configuration de SSH2, qui se trouvent normalement dans le répertoire
/etc/ssh2. Modifiez le fichier <emphasis>sshd2_config</emphasis>,
fichier de configuration de sshd2 (Secure SHell Daemon) qui est le
serveur pour ssh2. Ajoutez les lignes suivantes&nbsp;:
<programlisting>
Ssh1Compatibility yes 
Sshd1Path /usr/local/sbin/sshd1
</programlisting>
Bien entendu, vous devez modifier l'information /usr/local/sbin/sshd1
en rapport avec le chemin de votre installation de sshd1. Ainsi, le
serveur sshd2 transmettra les requêtes d'un client SSH1 à sshd1.
</para>
</sect2>
</sect1>

<sect1 id="lg61g-fr-3"><title>Démarrer SSH</title>
<para>
Il y a essentiellement deux moyens de démarrer sshd à l'initialisation
du système.
<itemizedlist>
<listitem><para>Allez dans le répertoire /etc/rc.d, et modifiez le
fichier <emphasis>rc.local</emphasis> en ajoutant à la fin les
lignes&nbsp;:
<programlisting>
echo "Démarrage de sshd ...."
/usr/local/sbin/sshd
</programlisting>
Ainsi, à la fin de la prochaine ré-initialisation de votre système,
sshd sera lancé et le message &laquo;&nbsp;Démarrage de sshd
...&nbsp;&raquo; sera affiché à l'écran. Pour démarrer sshd sans
redémarrer la machine, tapez à la ligne de
commande<footnote><para>NdT&nbsp;: en tant
qu'administrateur...</para></footnote>&nbsp;:
<programlisting>
/usr/local/sbin/sshd
</programlisting>
</para></listitem>
<listitem><para>Vous pouvez aussi, sur les systèmes utilisant les
scripts d'initialisation System V, ajouter le script
<emphasis>sshd2.startup</emphasis>, disponible dans la distribution,
dans le répertoire /etc/rc.d/init.d, en le renommant sshd2. Allez
ensuite dans le répertoire rc$nombre, où $nombre est votre niveau
d'exécution par défaut. Si vous ne le connaissez pas, recherchez dans
le fichier /etc/inittab la ligne le spécifiant&nbsp;:
<programlisting>
id:5:initdefault
</programlisting> 
ou
<programlisting>
id:3:initdefault
</programlisting>
Dans le premier cas, votre niveau d'exécution est 5, dans le second,
3. Dans le répertoire /etc/rc.d/rc$nombre.d, lancez la commande&nbsp;:
<programlisting>
ln -s ../init.d/sshd2 S90sshd2
</programlisting>
Allez ensuite dans /etc/rc.d/rc0.d et lancez&nbsp;:
<programlisting>
ln -s ../init.d/sshd2 K90sshd2
</programlisting>
Faites de même dans le répertoire /etc/rc.d/rc6.d. Ceci fait
vous pouvez démarrer sshd2 sans redémarrer la machine en lançant
simplement le script<footnote><para>NdT&nbsp;: idem</para></footnote>&nbsp;:
<programlisting>
/etc/rc.d/init.d/sshd2 start
</programlisting>
</para></listitem>
</itemizedlist>
</para>
</sect1>

<sect1 id="lg61g-fr-4"><title>Établir une connexion SSH</title>
<para>
Dès que sshd tourne sur votre machine, vous pouvez tester votre
configuration en essayant de vous connecter avec le client
ssh. Supposons que votre machine ait pour nom
<emphasis>serveur1</emphasis> et que votre compte soit
<emphasis>mon_nom</emphasis>. Pour démarrer une connexion ssh,
utilisez la commande&nbsp;:
<programlisting>
ssh -l mon_nom serveur1
</programlisting>
Le client ssh2 essaie ainsi de se connecter au port 22 (port par
défaut) de <emphasis>serveur1</emphasis>. Le démon sshd2, qui tourne
sur <emphasis>serveur1</emphasis> accepte la requête et demande le mot
de passe pour le compte <emphasis>mon_nom</emphasis>. Si le mot de
passe est correct, il autorise la connexion et lance un interpréteur
de commande.
</para>

<sect2><title>Création et gestion des clés ssh</title>
<para>
Ssh autorise un autre mécanisme d'authentification, basé sur des
<emphasis>clés d'authentification</emphasis>, une méthode
cryptographique à clé publique. Chaque utilisateur désireux d'utiliser
ssh avec une authentification à clé publique doit lancer la commande
<command>ssh-keygen</command> (sans option) pour créer les clés
d'authentification. La commande commence la création de la paire de
clés (publique et privée) et demande à l'utilisateur de saisir une
phrase de passe pour les protéger.
</para>
<para>
Deux fichiers sont créés dans le répertoire $HOME/.ssh2/&nbsp;:
<emphasis>id_dsa_1024_a</emphasis> et
<emphasis>id_dsa_1024_a.pub</emphasis>, respectivement clés privée et
publique de l'utilisateur.
</para>
<para>
Supposons que nous ayons deux comptes utilisateurs,
<emphasis>mon_nom1</emphasis> sur la machine
<emphasis>serveur1</emphasis> et <emphasis>mon_nom2</emphasis> sur
<emphasis>serveur2</emphasis>. Nous voulons nous connecter de
<emphasis>serveur1</emphasis> à <emphasis>serveur2</emphasis> en
utilisant l'authentification à clé publique. Pour ce faire, quatre
étapes sont nécessaires&nbsp;:
<orderedlist>
<listitem><para>Sur <emphasis>serveur1</emphasis>, créez la paire de
clés en utilisant <command>ssh-keygen</command>, et choisissez une
phrase de passe pour la protéger.</para></listitem>
<listitem><para>Connectez vous à <emphasis>serveur2</emphasis>, en
utilisant l'authentification par mot de passe de ssh, et répétez
l'opération précédente. Allez ensuite dans le répertoire $HOME/.ssh2
et créez le fichier nommé <emphasis>identification</emphasis>,
contenant les lignes suivantes&nbsp;:
<programlisting>
# identification
IdKey  id_dsa_1024_a
</programlisting>
Ce fichier est utilisé par sshd pour identifier la paire de clés à
employer lors des connexions.
</para></listitem>
<listitem><para>
Depuis <emphasis>serveur2</emphasis>, récupérez la clé publique de
votre compte sur <emphasis>serveur1</emphasis> et renommez là de façon
à la reconnaître (par exemple&nbsp;:
<emphasis>serveur1.pub</emphasis>)&nbsp;:
<programlisting>
ftp serveur1
[...]
cd .ssh2
get id_dsa_1024_a.pub serveur1.pub
</programlisting>
À la fin de la copie FTP, une copie de la clé publique de
<emphasis>serveur1</emphasis>, nommée
<emphasis>serveur1.pub</emphasis>, réside dans le répertoire
$HOME/.ssh2 sur <emphasis>serveur2</emphasis>.
</para></listitem>
<listitem><para>Créez le fichier des autorisations
<emphasis>authorization</emphasis> contenant les lignes
suivantes&nbsp;:
<programlisting>
# authorization
Key     serveur1.pub
</programlisting>
Ce fichier énumère toutes les clés publiques ssh à qui l'utilisateur
fait confiance placées dans le répertoire $HOME/.ssh2.
Quand une connexion ssh est commencée par un utilisateur dont la clé
publique figure dans le fichier d'autorisation, le processus
d'authentification à clé publique commence.
</para></listitem>
</orderedlist>
Afin de tester la configuration précédente, vous pouvez essayer de
vous connecter de <emphasis>serveur1</emphasis> à
<emphasis>serveur2</emphasis> en utilisant ssh. Sshd doit répondre en
demandant une phrase de passe, ou si le mot de passe du compte
est demandé, quelque erreur a dû se produire dans le processus de
configuration et vous devez contrôler soigneusement les étapes 1 à 4.
La phrase de passe exigée est celle qui est
<emphasis>locale</emphasis> (c.-à-d. celle protégeant la clé publique
sur la machine <emphasis>serveur1</emphasis>).
</para>
</sect2>
</sect1>

<sect1 id="lg61g-fr-5"><title>Bientôt sur vos écrans...</title>
<para>
Le prochain article présentera d'autres programmes et utilitaires de
la suite ssh: ssh-agent et ssh-add (deux programmes utiles de gestion
de phrase de passe), ainsi que sftp et scp (une manière sécurisée de
transférer des fichiers à travers le réseau).
</para>
<para>Copyright &copy; 2000, Matteo Dell'Omodarme</para>

<para>Copying license <ulink url="http://www.linuxgazette.com/copying.html">http://www.linuxgazette.com/copying.html</ulink></para>
<para>Paru dans le numéro 61 de la Linux Gazette, janvier 2001.</para>
<para>Traduction française par Jérôme Fenal <email>jerome@fenal.org</email>.</para>
</sect1>
</article>
 
