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:
parent
54723aa879
commit
203aadaa78
1 changed files with 165 additions and 62 deletions
|
@ -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> <login>@<nom de la machine>
|
||||
<span class="prompt">machineloc ~ $</span> <code>ssh</code> login@machinedist
|
||||
</pre>
|
||||
|
||||
<p class="continue">
|
||||
Ou bien :
|
||||
On peut aussi utiliser la syntaxe équivalente :
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<span class="prompt">drakkar ~ $</span> ssh <nom de la machine> -l <login>
|
||||
<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 :
|
|||
</p>
|
||||
|
||||
<pre>
|
||||
<span class="prompt">drakkar ~ $</span> ssh <nom de la machine>
|
||||
<span class="prompt">machineloc ~ $</span> ssh machinedist
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
|
@ -96,8 +110,8 @@ sur cette machine, vous verrez un message tel que celui-ci :
|
|||
</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 :
|
|||
</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> :
|
||||
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 :
|
||||
</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 :
|
||||
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 :
|
||||
</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 </p>
|
||||
<p>Que vous tapiez une phrase ou pas, à la fin vous verrez quelque
|
||||
chose comme </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 :</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> : 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à !
|
||||
</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 :
|
||||
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 :
|
||||
</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 :
|
||||
</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 !</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 :
|
|||
</p>
|
||||
|
||||
<pre>
|
||||
<span class="prompt">clipper ~ $</span> scp <mon ou mes fichiers> machine.monlabo.fr:
|
||||
<span class="prompt">machineloc ~ $</span> scp <mon ou mes fichiers> machinedist:
|
||||
</pre>
|
||||
|
||||
<p class="continue">
|
||||
|
@ -362,8 +465,8 @@ progression :
|
|||
</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 <répertoire> machine.monlabo.fr:
|
||||
<span class="prompt">machineloc ~ $</span> scp -r <répertoire> 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 : Marie-Lan Nguyen. Dernière
|
||||
modification : le <date value="$Date: 2003-09-25 08:49:28 $" />.</div>
|
||||
modification : le <date value="$Date: 2003-12-19 10:46:11 $" />.</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Add table
Reference in a new issue