Modification de la page sur SSH pour la rendre plus claire (suggestions

de Baptiste adns le mail de tuteurs) et plus complète (ajout d'un blabla
sur les types de clef, à noter qu'il faudra modifier la page quand (si)
on passe à SSH2). Le passage sur ssh-agent reste un peu incertain pour
moi.
This commit is contained in:
mlnguyen 2003-12-19 10:46:11 +00:00
parent 54723aa879
commit 203aadaa78

View file

@ -44,42 +44,56 @@ ensuite en danger les autres utilisateurs de l'ENS. Alors soyez
responsables. responsables.
</p> </p>
<p> <div class="encadre">
Par ailleurs, <code>ssh</code> n'est vraiment <em>pas</em> une <strong>À savoir</strong> : le protocole SSH n'est <em>pas</em> une
particularité UNIX. Vous pouvez vous connecter par <code>ssh</code> particularité UNIX. Vous pouvez vous tout aussi bien vous connecter
également avec Windows ou MacOS. Reportez-vous à notre documentation par <code>ssh</code> avec Windows ou Mac OS. Reportez-vous à notre
sur les <a href="&url.tuteurs;internet/dangers_telnet.html">dangers de documentation sur les <a
telnet</a>, nous vous y indiquons quels programmes vous pouvez href="&url.tuteurs;internet/dangers_telnet.html">dangers de
Telnet</a>, nous vous y indiquons quels programmes vous pouvez
utiliser pour faire du <code>ssh</code>. Vous pouvez également utiliser pour faire du <code>ssh</code>. Vous pouvez également
consulter, sur le site des <a consulter, sur le site des <a
href="http://www.eleves.ens.fr/wintuteurs/">WinTuteurs</a>, le <a href="http://www.eleves.ens.fr/wintuteurs/">WinTuteurs</a>, le <a
href="http://www.eleves.ens.fr/wintuteurs/tutorials/putty/">tutorial href="http://www.eleves.ens.fr/wintuteurs/tutorials/putty/">tutorial
sur PuTTY</a>. sur PuTTY (Windows)</a>.
</p> </div>
<h2>Se connecter</h2> <h2>Se connecter</h2>
<p> <p>
L'utilisation de <code>ssh</code> pour se connecter à une machine est extrêmement L'utilisation de <code>ssh</code> pour se connecter à une machine est
simple sous Unix et Linux. extrêmement simple.
</p> </p>
<div class="encadre">
<strong>Définitions</strong> : par <dfn>machine locale</dfn>, on
entend la machine devant laquelle vous vous trouvez. Dans ce tutorial,
on l'appelle <code>machineloc</code>. La <dfn>machine distante</dfn>,
c'est celle à laquelle vous voulez vous connecter. Dans ce tutorial,
on l'appelle <code>machinedist</code>. Par exemple, si vous êtes dans
votre thurne et que vous voulez vous connecter à <code>clipper</code>,
la machine locale est votre propre ordinateur, la machine distante est
clipper.
</div>
<pre> <pre>
<span class="prompt">drakkar ~ $</span> <code>ssh</code> &lt;login&gt;@&lt;nom de la machine&gt; <span class="prompt">machineloc ~ $</span> <code>ssh</code> login@machinedist
</pre> </pre>
<p class="continue"> <p class="continue">
Ou bien&nbsp;: On peut aussi utiliser la syntaxe équivalente :
</p> </p>
<pre> <pre>
<span class="prompt">drakkar ~ $</span> ssh &lt;nom de la machine&gt; -l &lt;login&gt; <span class="prompt">machineloc ~ $</span> ssh machinedist -l login
</pre> </pre>
<p class="continue"> <p class="continue">
Vous pouvez utiliser aussi bien le nom de la machine Pour indiquer la machine à distance, vous pouvez utiliser aussi bien
(<code>clipper.ens.fr</code>, <code>horus.ens.fr</code>, etc.) que son le nom de la machine (<code>clipper.ens.fr</code>,
adresse IP (pour clipper, <code>129.199.121.1</code>). <code>horus.ens.fr</code>, etc.) que son adresse IP (pour clipper,
<code>129.199.121.1</code>).
</p> </p>
<p>Si vous avez le même login sur les deux machines en question, ce <p>Si vous avez le même login sur les deux machines en question, ce
@ -87,7 +101,7 @@ n'est pas la peine de le mentionner, tapez simplement&nbsp;:
</p> </p>
<pre> <pre>
<span class="prompt">drakkar ~ $</span> ssh &lt;nom de la machine&gt; <span class="prompt">machineloc ~ $</span> ssh machinedist
</pre> </pre>
<p> <p>
@ -96,8 +110,8 @@ sur cette machine, vous verrez un message tel que celui-ci&nbsp;:
</p> </p>
<pre> <pre>
<span class="prompt">drakkar ~ $</span> ssh toto@machine.monlabo.fr <span class="prompt">machineloc ~ $</span> ssh toto@machinedist
The authenticity of host 'machine.monlabo.fr (111.222.333.4)' can't be established. The authenticity of host 'machinedist' (111.222.333.4)' can't be established.
RSA1 key fingerprint is 1z:2y:3x:4w:56:78:98:78:ab:cd:ef:01:23:45:67:89. RSA1 key fingerprint is 1z:2y:3x:4w:56:78:98:78:ab:cd:ef:01:23:45:67:89.
Are you sure you want to continue connecting (yes/no)? Are you sure you want to continue connecting (yes/no)?
</pre> </pre>
@ -109,13 +123,15 @@ continuer. <code>ssh</code> vous dira alors&nbsp;:
</p> </p>
<pre> <pre>
Warning: Permanently added 'machine.monlabo.fr,111.222.333.4' (RSA1) to <a name="typeclef">Warning:</a> Permanently added 'machinedist,111.222.333.4' (RSA1) to
the list of known hosts. the list of known hosts.
</pre> </pre>
<p class="continue"> <p class="continue">
Ce qui signifie que <code>ssh</code> ne vous embêtera plus à poser la Ce qui signifie que <code>ssh</code> ne vous embêtera plus à poser la
question. question. Notez au passage le « RSA1 » entre parenthèses. Il s'agit du
type de clef utilisée par la machine distante. Cette information peut
vous servir par la suite pour générer une clef.
</p> </p>
<h3>Authentification par mot de passe</h3> <h3>Authentification par mot de passe</h3>
@ -151,19 +167,76 @@ d
sur une machine distante sans avoir à taper de mot de passe. sur une machine distante sans avoir à taper de mot de passe.
</p> </p>
<h4><a name="type">Type de clef</a></h4>
<p>
Il existe différentes versions de SSH. Suivant le type de version
utilisé sur la machine distante, le type de clef à générer
diffère. Cette information vous est donnée par exemple lors de votre
première connexion <code>ssh</code> sur cette machine (voir <a
href="#typeclef">ci-dessus</a>). Si vous ne vous en souvenez plus,
sachez que SSH1 utilisegénéralement des clefs RSA1 et SSH2, des clefs
DSA. Pour connaître la version de SSH utilisée sur la machine
distante, tapez <code>ssh -v</code> sur la machine distante.
</p>
<p class="continue">
Ainsi, sur <code>clipper</code>, ça donne :
</p>
<pre>
<span class="prompt">clipper ~ $</span> ssh -v
SSH Version 1.2.26 (SSF-1.2.26.2, SSH compatible)
[sparc-sun-solaris2.5], protocol version 1.5.
Standard version. Does not use RSAREF.
</pre>
<p class="continue">
Le « protocol version 1.5 » vous indique qu'il s'agit de SSH1. Un SSH
récent vous montrera quelque chose comme :
</p>
<pre>
<span class="prompt">earendil ~ $</span> ssh -v
OpenSSH_3.6.1, SSH protocols 1.5/2.0, OpenSSL 0x0090701f
</pre>
<p class="continue">
Le « SSH protocols 1.5/2.0 » vous indique qu'il s'agit d'un
<code>ssh</code> récent qui peut faire du SSH1 ou du SSH2.
</p>
<h4>Générer la clef</h4> <h4>Générer la clef</h4>
<p> <p>
Pour ce faire, commencez par taper la commande <code>ssh-keygen</code> Pour ce faire, commencez par taper la commande <code>ssh-keygen</code>
(comme <i lang="en">key generator</i>) <strong>sur la machine (comme <i lang="en">key generator</i>) <strong>sur la machine
locale</strong> (et pas sur la machine à distance). Le générateur de locale</strong> (et pas sur la machine à distance).
clefs va en générer deux, une clef publique et une clef privée. Il va
placer la clef privée (sous forme chiffrée) dans un endroit qui, par
défaut, est <code>$HOME/.ssh/identity</code>&nbsp;:
</p> </p>
<pre> <pre>
<span class="prompt">drakkar ~ $</span> ssh-keygen <span class="prompt">machineloc ~ $</span> ssh-keygen
</pre>
<p>
Avec un <code>ssh</code> récent, qui peut faire du SSH1 ou du SSH2, il
faut indiquer le type de clef à générer (voir ci-dessus). Par exemple,
pour générer une clef RSA1 (SSH1) :
</p>
<pre>
<span class="prompt">machineloc ~ $</span> ssh-keygen -t rsa1
</pre>
<p class="continue">
Le générateur de clefs va en générer deux, une clef publique et une
clef privée. Il va placer la clef privée (sous forme chiffrée) dans un
endroit qui, par défaut, est <code>$HOME/.ssh/identity</code> pour
SSH1 et <code>$HOME/.ssh/id_dsa</code> pour SSH2&nbsp;:
</p>
<pre>
<span class="prompt">machineloc ~ $</span> ssh-keygen
Initializing random number generator... Initializing random number generator...
Generating p: Generating p:
........................................................................... ...........................................................................
@ -173,37 +246,38 @@ Computing the keys...
Testing the keys... Testing the keys...
Key generation complete. Key generation complete.
Enter file in which to save the key Enter file in which to save the key
(/users/00/litt/toto/.ssh/identity): (/usr/home/toto/.ssh/identity):
</pre> </pre>
<p class="continue">Appuyez sur <code>Enter</code> pour accepter la <p class="continue">Appuyez sur <code>Enter</code> pour accepter la
localisation de la clef. <code>ssh-keygen</code> vous demande ensuite localisation de la clef (il est plus simple d'accepter la localisation
une « <i lang="en">passphrase</i> » (équivalent d'un mot de passe, proposée). <code>ssh-keygen</code> vous demande ensuite une « <i
mais sous forme de phrase). Cette phrase sert à fortifier la clef pour lang="en">passphrase</i> » (équivalent d'un mot de passe, mais sous
la rendre plus difficilement cassable. À partir de là, deux forme de phrase). Cette phrase sert à fortifier la clef pour la rendre
solutions&nbsp;: plus difficilement cassable. À partir de là, deux solutions&nbsp;:
</p> </p>
<ul> <ul>
<li> si vous tapez une phrase, votre connection sera plus sûre, mais <li> si vous tapez une phrase, votre connection sera plus sûre, mais
vous devrez utiliser <code>ssh-agent</code> pour ne pas avoir à la vous devrez utiliser <code>ssh-agent</code> pour ne pas avoir à la
retaper à chaque fois (voir plus bas)</li> retaper à chaque fois (voir <a href="#ssh-agent">plus bas</a>)</li>
<li> vous ne tapez pas de phrase (et appuyez seulement sur <li> vous ne tapez pas de phrase (et appuyez seulement sur
<code>Enter</code>), votre connexion sera moins sûre</li> <code>Enter</code>), votre connexion sera moins sûre</li>
</ul> </ul>
<p>Que vous tapiez une phrase ou pas, à la fin vous verrez&nbsp;</p> <p>Que vous tapiez une phrase ou pas, à la fin vous verrez quelque
chose comme&nbsp;</p>
<pre> <pre>
Your identification has been saved in Your identification has been saved in
/users/00/litt/toto/.ssh/identity. /usr/home/toto/.ssh/identity.
Your public key is: Your public key is:
1024 37 1024 37
123123123123123123123123123123123123123123123123123123123123123123123123123123123123123 123123123123123123123123123123123123123123123123123123123123123123123123123123123123123
123123123123123123123123123123123123123123123123123123123123123123123123123123123123123 123123123123123123123123123123123123123123123123123123123123123123123123123123123123123
123123123123123123123123123123123123 toto@machine 123123123123123123123123123123123123 toto@machine
Your public key has been saved in Your public key has been saved in
/users/00/litt/toto/.ssh/identity.pub /usr/home/toto/.ssh/identity.pub
</pre> </pre>
<h4>Que faire de la clef</h4> <h4>Que faire de la clef</h4>
@ -215,25 +289,42 @@ clefs&nbsp;:</p>
<ul> <ul>
<li> une clef privée (chiffrée si vous avez donné une phrase, non <li> une clef privée (chiffrée si vous avez donné une phrase, non
chiffrée sinon) qui est <code>$HOME/.ssh/identity</code> et qui n'est chiffrée sinon) qui est <code>$HOME/.ssh/identity</code> (ou
<code>$HOME/.ssh/id_dsa</code> si c'est du SSH2) et qui n'est
accessible qu'à vous</li> accessible qu'à vous</li>
<li> une publique (non chiffrée) qui est <li> une publique (non chiffrée) qui est
<code>$HOME/.ssh/identity.pub</code> et qui peut être lue par tout le <code>$HOME/.ssh/identity.pub</code> (ou
monde</li> <code>$HOME/.ssh/id_dsa.pub</code> si c'est du SSH2) et qui peut être
lue par tout le monde</li>
</ul> </ul>
<div class="encadre">
<strong>Définition</strong> : qu'est-ce que ce
« <code>$HOME</code> » ? <dfn>$HOME</dfn> est ce qu'on appelle une
variable d'environnement, qui sert à indiquer aux programmes quel est
votre répertoire personnel (la racine de votre compte). Faites
<code>echo $HOME</code> pour savoir quel est le vôtre. Sur
<code>clipper</code>, c'est
<code>/users/promo/matiere/login</code>. Pour en savoir plus, voir
l'article « <a
href="&url.tuteurs;docs/hublot/hublot03.html#concept">Concept :
arborescence</a> » dans le n°3 du <cite>Hublot</cite>.
</div>
<p> <p>
Maintenant, sur la machine <strong>distante</strong>, allez dans le Maintenant, sur la machine <strong>distante</strong>, allez dans le
répertoire <code>.ssh</code> et éditez le fichier répertoire <code>.ssh</code> et éditez le fichier
<code>authorized_keys</code>&nbsp;: ajoutez à la fin, et <strong>sur <code>authorized_keys</code>&nbsp;: ajoutez à la fin, et <strong>sur
une seule ligne</strong> (attention aux éditeurs qui coupent les une seule ligne</strong> (attention aux éditeurs qui coupent les
lignes) la clef publique que vous venez de générer. Procédez ainsi lignes) la clef publique (<code>identity.pub</code> pour SSH1 ou
pour toutes les machines distantes auxquelles vous voulez vous <code>id_dsa.pub</code> pour SSH2) que vous venez de générer. Procédez
ainsi pour toutes les machines distantes auxquelles vous voulez vous
connecter sans avoir à taper votre mot de passe. Et voilà&nbsp;! connecter sans avoir à taper votre mot de passe. Et voilà&nbsp;!
</p> </p>
<h4>Utiliser <code>ssh-agent</code></h4> <h4><a name="ssh-agent">Utiliser <code>ssh-agent</code></a></h4>
<p> <p>
Si vous avez opté pour la solution « phrase de passe », bravo, votre Si vous avez opté pour la solution « phrase de passe », bravo, votre
@ -245,22 +336,25 @@ phrase... Solution, utiliser <code>ssh-agent</code>.
d'identification. Si vous êtes logué dans une salle informatique de d'identification. Si vous êtes logué dans une salle informatique de
l'ENS avec la config conscrits, pas de problème, l'ENS avec la config conscrits, pas de problème,
<code>ssh-agent</code> est déjà lancé. Si ce n'est pas le cas, il faut <code>ssh-agent</code> est déjà lancé. Si ce n'est pas le cas, il faut
le lancer vous-même. Comme l'agent est disponible dans tous les le lancer vous-même.
programmes qui découlent, on le lance au début d'une session. Par </p>
exemple, quand vous êtes en mode texte et que vous lancez le serveur
X&nbsp;: <p>
Comme l'agent est disponible dans tous les programmes qui découlent,
on le lance au début d'une session. Par exemple, quand vous êtes en
mode texte et que vous lancez le serveur X&nbsp;:
</p> </p>
<pre> <pre>
<span class="prompt">machine ~ $</span> ssh-agent startx <span class="prompt">machineloc ~ $</span> ssh-agent startx
</pre> </pre>
<p> <p class="continue">
Quand vous vous loguez à distance, c'est plutôt&nbsp;: Quand vous vous loguez à distance, c'est plutôt&nbsp;:
</p> </p>
<pre> <pre>
<span class="prompt">machine ~ $</span> exec ssh-agent $SHELL <span class="prompt">machinedist ~ $</span> exec ssh-agent $SHELL
</pre> </pre>
<p> <p>
@ -277,8 +371,6 @@ Enter passphrase:
Identity added: /home/toto/.ssh/identity (toto@machine) Identity added: /home/toto/.ssh/identity (toto@machine)
</pre> </pre>
<p>C'est tout&nbsp;!</p>
<h3>Exécution d'une commande à distance</h3> <h3>Exécution d'une commande à distance</h3>
<p> <p>
@ -289,15 +381,26 @@ machine est en retard, en avance ou
</p> </p>
<pre> <pre>
<span class="prompt">machine ~ $</span> ssh clipper.ens.fr date <span class="prompt">machineloc ~ $</span> ssh clipper.ens.fr date
Fri Jul 4 12:01:49 MET DST 2003 Fri Jul 4 12:01:49 MET DST 2003
</pre> </pre>
<p class="continue"> <p class="continue">
N'oubliez pas de préciser <code>toto@machine</code> si vos logins sont N'oubliez pas de préciser <code>toto@machine</code> si vos logins sont
différents entre les deux machines. différents entre les deux machines. Si vous voulez exécuter à distance
une commande avec des options, mieux vaut mettre des guillemets. Par
exemple, je veux savoir si <code>brick</code> est une station Sun ou
un PC, en utilisant la commande <code>uname</code>.
</p> </p>
<pre>
<span class="prompt">machineloc ~ $</span> ssh toto@brick.ens.fr "uname -p"
i386
</pre>
<p class="continue">
La réponse est « i386 », dénomination utilisée pour les PC.
</p>
<h3>Message d'erreur</h3> <h3>Message d'erreur</h3>
@ -350,7 +453,7 @@ distante, faites&nbsp;:
</p> </p>
<pre> <pre>
<span class="prompt">clipper ~ $</span> scp &lt;mon ou mes fichiers&gt; machine.monlabo.fr: <span class="prompt">machineloc ~ $</span> scp &lt;mon ou mes fichiers&gt; machinedist:
</pre> </pre>
<p class="continue"> <p class="continue">
@ -362,8 +465,8 @@ progression&nbsp;:
</p> </p>
<pre> <pre>
<span class="prompt">clipper ~ $</span> scp tagada.txt machine.monlabo.fr: <span class="prompt">machineloc ~ $</span> scp tagada.txt machinedist:
toto@machine.monlabo.fr's password: toto@machinedist's password:
tagada.txt 100% |***************************************| 2263 00:00 tagada.txt 100% |***************************************| 2263 00:00
</pre> </pre>
@ -381,7 +484,7 @@ file</i>
</p> </p>
<pre> <pre>
<span class="prompt">clipper ~ $</span> scp -r &lt;répertoire&gt; machine.monlabo.fr: <span class="prompt">machineloc ~ $</span> scp -r &lt;répertoire&gt; machinedist:
</pre> </pre>
<p class="continue"> <p class="continue">
@ -394,7 +497,7 @@ route, renommer <code>tagada.txt</code> en
</p> </p>
<pre> <pre>
<span class="prompt">clipper ~ $</span> scp tagada.txt machine.monlabo.fr:coincoin.txt <span class="prompt">machineloc ~ $</span> scp tagada.txt machinedist:coincoin.txt
</pre> </pre>
<p class="continue"> <p class="continue">
@ -404,7 +507,7 @@ Maintenant, nous allons envoyer notre fichier <code>tagada.txt</code>
</p> </p>
<pre> <pre>
<span class="prompt">clipper ~ $</span> scp tagada.txt machine.monlabo.fr:divers/blagues <span class="prompt">machineloc ~ $</span> scp tagada.txt machinedist:divers/blagues
</pre> </pre>
<h3>De la machine distante à la machine locale</h3> <h3>De la machine distante à la machine locale</h3>
@ -414,7 +517,7 @@ locale, la m
</p> </p>
<pre> <pre>
<span class="prompt">clipper ~ $</span> scp machine.monlabo.fr:tagada.txt . <span class="prompt">machineloc ~ $</span> scp machinedist:tagada.txt .
</pre> </pre>
<p class="continue"> <p class="continue">
@ -425,7 +528,7 @@ r
</p> </p>
<pre> <pre>
<span class="prompt">clipper ~ $</span> scp machine.monlabo.fr:tagada.txt divers <span class="prompt">machineloc ~ $</span> scp machinedist:tagada.txt divers
</pre> </pre>
<p class="continue"> <p class="continue">
@ -434,7 +537,7 @@ le transfert machine locale -> machine distante, d
</p> </p>
<div class="metainformation">Auteur&nbsp;: Marie-Lan Nguyen. Dernière <div class="metainformation">Auteur&nbsp;: Marie-Lan Nguyen. Dernière
modification&nbsp;: le <date value="$Date: 2003-09-25 08:49:28 $" />.</div> modification&nbsp;: le <date value="$Date: 2003-12-19 10:46:11 $" />.</div>
</body> </body>
</html> </html>