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.
</p>
<p>
Par ailleurs, <code>ssh</code> n'est vraiment <em>pas</em> une
particularité UNIX. Vous pouvez vous connecter par <code>ssh</code>
également avec Windows ou MacOS. Reportez-vous à notre documentation
sur les <a href="&url.tuteurs;internet/dangers_telnet.html">dangers de
telnet</a>, nous vous y indiquons quels programmes vous pouvez
<div class="encadre">
<strong>À savoir</strong> : le protocole SSH n'est <em>pas</em> une
particularité UNIX. Vous pouvez vous tout aussi bien vous connecter
par <code>ssh</code> avec Windows ou Mac OS. Reportez-vous à notre
documentation sur les <a
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
consulter, sur le site des <a
href="http://www.eleves.ens.fr/wintuteurs/">WinTuteurs</a>, le <a
href="http://www.eleves.ens.fr/wintuteurs/tutorials/putty/">tutorial
sur PuTTY</a>.
</p>
sur PuTTY (Windows)</a>.
</div>
<h2>Se connecter</h2>
<p>
L'utilisation de <code>ssh</code> pour se connecter à une machine est extrêmement
simple sous Unix et Linux.
L'utilisation de <code>ssh</code> pour se connecter à une machine est
extrêmement simple.
</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>
<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>
<p class="continue">
Ou bien&nbsp;:
On peut aussi utiliser la syntaxe équivalente :
</p>
<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>
<p class="continue">
Vous pouvez utiliser aussi bien le nom de la machine
(<code>clipper.ens.fr</code>, <code>horus.ens.fr</code>, etc.) que son
adresse IP (pour clipper, <code>129.199.121.1</code>).
Pour indiquer la machine à distance, vous pouvez utiliser aussi bien
le nom de la machine (<code>clipper.ens.fr</code>,
<code>horus.ens.fr</code>, etc.) que son adresse IP (pour clipper,
<code>129.199.121.1</code>).
</p>
<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>
<pre>
<span class="prompt">drakkar ~ $</span> ssh &lt;nom de la machine&gt;
<span class="prompt">machineloc ~ $</span> ssh machinedist
</pre>
<p>
@ -96,8 +110,8 @@ sur cette machine, vous verrez un message tel que celui-ci&nbsp;:
</p>
<pre>
<span class="prompt">drakkar ~ $</span> ssh toto@machine.monlabo.fr
The authenticity of host 'machine.monlabo.fr (111.222.333.4)' can't be established.
<span class="prompt">machineloc ~ $</span> ssh toto@machinedist
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.
Are you sure you want to continue connecting (yes/no)?
</pre>
@ -109,13 +123,15 @@ continuer. <code>ssh</code> vous dira alors&nbsp;:
</p>
<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.
</pre>
<p class="continue">
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>
<h3>Authentification par mot de passe</h3>
@ -151,19 +167,76 @@ d
sur une machine distante sans avoir à taper de mot de passe.
</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>
<p>
Pour ce faire, commencez par taper la commande <code>ssh-keygen</code>
(comme <i lang="en">key generator</i>) <strong>sur la machine
locale</strong> (et pas sur la machine à distance). 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>&nbsp;:
locale</strong> (et pas sur la machine à distance).
</p>
<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...
Generating p:
...........................................................................
@ -173,37 +246,38 @@ Computing the keys...
Testing the keys...
Key generation complete.
Enter file in which to save the key
(/users/00/litt/toto/.ssh/identity):
(/usr/home/toto/.ssh/identity):
</pre>
<p class="continue">Appuyez sur <code>Enter</code> pour accepter la
localisation de la clef. <code>ssh-keygen</code> vous demande ensuite
une « <i lang="en">passphrase</i> » (équivalent d'un mot de passe,
mais sous forme de phrase). Cette phrase sert à fortifier la clef pour
la rendre plus difficilement cassable. À partir de là, deux
solutions&nbsp;:
localisation de la clef (il est plus simple d'accepter la localisation
proposée). <code>ssh-keygen</code> vous demande ensuite une « <i
lang="en">passphrase</i> » (équivalent d'un mot de passe, mais sous
forme de phrase). Cette phrase sert à fortifier la clef pour la rendre
plus difficilement cassable. À partir de là, deux solutions&nbsp;:
</p>
<ul>
<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
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
<code>Enter</code>), votre connexion sera moins sûre</li>
</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>
Your identification has been saved in
/users/00/litt/toto/.ssh/identity.
/usr/home/toto/.ssh/identity.
Your public key is:
1024 37
123123123123123123123123123123123123123123123123123123123123123123123123123123123123123
123123123123123123123123123123123123123123123123123123123123123123123123123123123123123
123123123123123123123123123123123123 toto@machine
Your public key has been saved in
/users/00/litt/toto/.ssh/identity.pub
/usr/home/toto/.ssh/identity.pub
</pre>
<h4>Que faire de la clef</h4>
@ -215,25 +289,42 @@ clefs&nbsp;:</p>
<ul>
<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>
<li> une publique (non chiffrée) qui est
<code>$HOME/.ssh/identity.pub</code> et qui peut être lue par tout le
monde</li>
<code>$HOME/.ssh/identity.pub</code> (ou
<code>$HOME/.ssh/id_dsa.pub</code> si c'est du SSH2) et qui peut être
lue par tout le monde</li>
</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>
Maintenant, sur la machine <strong>distante</strong>, allez dans le
répertoire <code>.ssh</code> et éditez le fichier
<code>authorized_keys</code>&nbsp;: ajoutez à la fin, et <strong>sur
une seule ligne</strong> (attention aux éditeurs qui coupent les
lignes) la clef publique que vous venez de générer. Procédez ainsi
pour toutes les machines distantes auxquelles vous voulez vous
lignes) la clef publique (<code>identity.pub</code> pour SSH1 ou
<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;!
</p>
<h4>Utiliser <code>ssh-agent</code></h4>
<h4><a name="ssh-agent">Utiliser <code>ssh-agent</code></a></h4>
<p>
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
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
le lancer vous-même. 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;:
le lancer vous-même.
</p>
<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>
<pre>
<span class="prompt">machine ~ $</span> ssh-agent startx
<span class="prompt">machineloc ~ $</span> ssh-agent startx
</pre>
<p>
<p class="continue">
Quand vous vous loguez à distance, c'est plutôt&nbsp;:
</p>
<pre>
<span class="prompt">machine ~ $</span> exec ssh-agent $SHELL
<span class="prompt">machinedist ~ $</span> exec ssh-agent $SHELL
</pre>
<p>
@ -277,8 +371,6 @@ Enter passphrase:
Identity added: /home/toto/.ssh/identity (toto@machine)
</pre>
<p>C'est tout&nbsp;!</p>
<h3>Exécution d'une commande à distance</h3>
<p>
@ -289,15 +381,26 @@ machine est en retard, en avance ou
</p>
<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
</pre>
<p class="continue">
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>
<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>
@ -350,7 +453,7 @@ distante, faites&nbsp;:
</p>
<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>
<p class="continue">
@ -362,8 +465,8 @@ progression&nbsp;:
</p>
<pre>
<span class="prompt">clipper ~ $</span> scp tagada.txt machine.monlabo.fr:
toto@machine.monlabo.fr's password:
<span class="prompt">machineloc ~ $</span> scp tagada.txt machinedist:
toto@machinedist's password:
tagada.txt 100% |***************************************| 2263 00:00
</pre>
@ -381,7 +484,7 @@ file</i>
</p>
<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>
<p class="continue">
@ -394,7 +497,7 @@ route, renommer <code>tagada.txt</code> en
</p>
<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>
<p class="continue">
@ -404,7 +507,7 @@ Maintenant, nous allons envoyer notre fichier <code>tagada.txt</code>
</p>
<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>
<h3>De la machine distante à la machine locale</h3>
@ -414,7 +517,7 @@ locale, la m
</p>
<pre>
<span class="prompt">clipper ~ $</span> scp machine.monlabo.fr:tagada.txt .
<span class="prompt">machineloc ~ $</span> scp machinedist:tagada.txt .
</pre>
<p class="continue">
@ -425,7 +528,7 @@ r
</p>
<pre>
<span class="prompt">clipper ~ $</span> scp machine.monlabo.fr:tagada.txt divers
<span class="prompt">machineloc ~ $</span> scp machinedist:tagada.txt divers
</pre>
<p class="continue">
@ -434,7 +537,7 @@ le transfert machine locale -> machine distante, d
</p>
<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>
</html>