Project

General

Profile

Cles ssh » History » Version 3

Julien Enselme, 03/28/2014 11:39 PM
Ajout ProxyCommand, modification des niveaux de titre.

1 3 Julien Enselme
Les clés SSH.
2 1 Florent Torregrosa
3 2 Florent Torregrosa
{{>toc}}
4 2 Florent Torregrosa
5 3 Julien Enselme
h1. Généralités sur ssh
6 1 Florent Torregrosa
7 1 Florent Torregrosa
Les clés ssh sont une application de la cryptographie asymétrique dans le but de se connecter à une machine distante. Explications :
8 1 Florent Torregrosa
9 1 Florent Torregrosa
L'utilisateur A désire se connecter au serveur ECM de façon sécurisée sans avoir à entrer en permance un mot de passe (qui peut s'oublier, être découvert). Pour cela, il va générer une paire de clés ssh :
10 1 Florent Torregrosa
11 1 Florent Torregrosa
* une clé privée qu'il gardera précieusement
12 1 Florent Torregrosa
* une clé publique à placer sur le serveur.
13 1 Florent Torregrosa
14 1 Florent Torregrosa
Pour placer ladite clé sur le serveur, il faut (en général) s'y connecter par mot de passe.
15 1 Florent Torregrosa
16 1 Florent Torregrosa
Lorsque A va vouloir se connecter à ECM, son client ssh va tout d'abord regarder si des clés sont disponibles. Ici, A va tenter de se connecter avec sa clé privée. Comme sa clé publique est sur le serveur et qu'un couple de clés est unique, ECM sait que celui qui veut se connecter est A. Il autorise donc la connection.
17 1 Florent Torregrosa
18 1 Florent Torregrosa
Notons enfin que lors de la première tentative de connection au serveur, le client demande si on désire accepter la clé publique du serveur. Celle-ci va en effet être utilisée pour le reconnaitre par la suite. Il est évidemment recommandé de ne pas accepter de clés de serveur inconnus.
19 1 Florent Torregrosa
20 3 Julien Enselme
h1. ssh sous GNU/Linux et autres Unix (*BSD, MacOS, etc.)
21 1 Florent Torregrosa
22 1 Florent Torregrosa
L'accès au dépôt se fait par clés ssh. Vous devez donc autoriser la connection à l'aide de votre paire de clé (vous pouvez également procéder de même pour vous connecter en ssh à vos comptes personnels ou d’association, il faut juste adapter les dossiers et les machines).
23 1 Florent Torregrosa
24 1 Florent Torregrosa
Pour créer une paire de clé ssh, lancez la commande : <code>ssh-keygen</code>. Ceci crée deux fichiers dans votre ~/.ssh :
25 1 Florent Torregrosa
26 1 Florent Torregrosa
* id_rsa (votre clé privée à conserver précieusement)
27 1 Florent Torregrosa
* id_rsa.pub (votre clé publique à transmettre).
28 1 Florent Torregrosa
29 1 Florent Torregrosa
Commande pour créer une paire de clés ssh dans un fichier dont on choisit le nom et le commentaire directement : <code>ssh-keygen -f nom_du_fichier -C commentaire</code>
30 1 Florent Torregrosa
31 1 Florent Torregrosa
Pour pouvoir utiliser votre clé publique ssh (~/.ssh/id_rsa.pub) dans le fichier authorized_keys dans votre compte de l'école (eg sur le sas) :
32 1 Florent Torregrosa
33 1 Florent Torregrosa
* si la clé est dans votre compte:
34 1 Florent Torregrosa
35 1 Florent Torregrosa
 * <code>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_key</code>
36 1 Florent Torregrosa
37 1 Florent Torregrosa
* si elle est sur votre machine perso, *au choix* :
38 1 Florent Torregrosa
39 1 Florent Torregrosa
 * <code>ssh-copy-id login@sas1.ec-m.fr</code> (recommandé)
40 1 Florent Torregrosa
 * <code>ssh-copy-id -i nom_du_fichier_sans_extension_pub login@sas1.ec-m.fr</code> *si vous avez votre clé dans un autre fichier que id_rsa* (recommandé)
41 1 Florent Torregrosa
 * <code>cat ~/.ssh/id_rsa.pub | ssh LOGIN@sas1.ec-m.fr 'mkdir -m 700 -p ~/.ssh ; cat >> .ssh/authorized_keys'</code>
42 1 Florent Torregrosa
43 1 Florent Torregrosa
Vous pouvez avoir plusieurs couple de clés ssh sur votre machine (une par serveur par exemple). Auquel cas, leur donner un nom plus explicite peut s'avérer utile.
44 1 Florent Torregrosa
45 1 Florent Torregrosa
Dans votre dossier _.ssh_, vous pouvez aussi créer un fichier _config_ pour, entre autre chose, créer un alias d'hôte ce qui vous évitera de taper par exemple _ssh assos@sas1.centrale-marseille.fr_ mais juste _ssh drupal_ (vous pourriez aussi utiliser un alias bash ou affilié pour atteindre ce but). Cette configuration est aussi valable avec scp et peut vous procurer une complétion des chemins sur l'hôte distant.
46 1 Florent Torregrosa
47 1 Florent Torregrosa
Si vous avez plusieurs clés sur votre machine, le fichier config s'avèrera obligatoire sinon, la bonne clé ne sera pas utilisée. exemple de fichier ~/.ssh/config :
48 1 Florent Torregrosa
49 1 Florent Torregrosa
<pre>
50 1 Florent Torregrosa
<code>
51 1 Florent Torregrosa
host          drupal
52 1 Florent Torregrosa
  hostname      sas1.centrale-marseille.fr
53 1 Florent Torregrosa
  IdentityFile  ~/.ssh/nom_du_fichier_sans_extension_pub
54 1 Florent Torregrosa
  user          assos
55 1 Florent Torregrosa
  port          22
56 1 Florent Torregrosa
</code>
57 1 Florent Torregrosa
</pre>
58 1 Florent Torregrosa
59 1 Florent Torregrosa
Si vous avez créé une clé avec une passphrase, celle-ci vous sera demandé à chaque connexion. Il existe des logiciels comme "ssh-agent":http://en.wikipedia.org/wiki/Ssh-agent pour la stocker en mémoire temporairement.
60 1 Florent Torregrosa
61 3 Julien Enselme
h1. ssh sous windows
62 1 Florent Torregrosa
63 1 Florent Torregrosa
{{important(Pour utiliser ssh avec git, nous recommandons de lire [[Utilisation_de_Git#git-sous-Windows|git sous windows avant. Ce paragraphe est surtout intéressant pour une utilisation "stand-alone" de ssh.]])}}
64 1 Florent Torregrosa
65 1 Florent Torregrosa
Windows ne fournit pas de client ssh par défaut. Vous devez tout d'abord en installer un. Nous vous recommandons "putty":http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html qui s'exécute directement dans le dossier où il est. Allez sur "ce tuto":http://assos.centrale-marseille.fr/ginfo/content/utiliser-un-terminal-unix-comme-si-vous-%C3%A9tiez-au-cri pour plus de détails.
66 1 Florent Torregrosa
67 1 Florent Torregrosa
Néanmoins, ceci ne vous permet que d’avoir une console et pas de générer des clés.
68 1 Florent Torregrosa
69 1 Florent Torregrosa
C'est le programme puttygen (disponible "ici":http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) qui va s'en charger.
70 1 Florent Torregrosa
71 1 Florent Torregrosa
# Exécutez-le
72 1 Florent Torregrosa
# Cliquez sur _Generate_.
73 1 Florent Torregrosa
# Bouger la souris dans tous les sens (pour ajouter de l'entropie très difficile à obtenir avec une machine par nature déterministe).
74 1 Florent Torregrosa
# Sauvegardez votre clé publique et votre clé privée là où vous saurez les retrouver. Pensez à remplir le champ _comment_ avec quelque chose qui vous identifie (vote identifiant CAS par exemple). Cela permettra de distinguer les clés ssh sur le serveur. {{note(Donnez leur un nom qui vous permette de les distinguer. Par exemple, key pour votre clé privé et key.pub pour votre clé publique.)}}
75 1 Florent Torregrosa
{{important(Les clés générées par puttygen ne sont compatibles qu’avec putty)}}
76 1 Florent Torregrosa
77 1 Florent Torregrosa
Maintenant, vous devez placer ces clés sur le serveur. Pour cela :
78 1 Florent Torregrosa
79 1 Florent Torregrosa
# Connecter vous au serveur avec putty en entrant vote mot de passe
80 1 Florent Torregrosa
# Créer un dossier .ssh (s’il n’existe pas) <code>mkdir ~/.ssh</code>
81 1 Florent Torregrosa
# Ouvrez le fichier authorized_keys (ou créez le) : <code>nano -w ~/.ssh/authorized_keys</code>
82 1 Florent Torregrosa
# Copiez/Collez votre clé publique dedans *sur une seule ligne* avec le commentaire *à la fin* séparé *par une espace* du reste de la ligne.
83 1 Florent Torregrosa
# Sauvegardez
84 1 Florent Torregrosa
85 1 Florent Torregrosa
Ensuite, pour vous connecter au serveur à l’aide de ces clés avec le client putty :
86 1 Florent Torregrosa
87 1 Florent Torregrosa
# Ouvrez putty
88 1 Florent Torregrosa
# Dans Connexion > SSH > Auth, renseignez votre clé privée.
89 1 Florent Torregrosa
# Connectez vous au serveur comme d’habitude.
90 3 Julien Enselme
91 3 Julien Enselme
h1. Connexion SSH avec rebond et ProxyCommand
92 3 Julien Enselme
93 3 Julien Enselme
Pour imbriquer des connexions SSH, il est possible d'utiliser la commande suivante : @ssh -tt abraracourcix@machine1 ssh thebigboss@machine2@ (l'option @-tt@ permettant d'accéder au terminal virtuel). Mais ce n'est pas très pratique et ça ne fonctionne que pour se logguer et pas avec @scp@, @rsync@,… De plus, si vous avez plusieurs clés, SSH peut s'avérer incapable de trouver la bonne. Heureusement, l'option @ProxyCommand@ existe. Voilà un exemple de conf (à placer dans ~/.ssh/config) :
94 3 Julien Enselme
95 3 Julien Enselme
<pre>
96 3 Julien Enselme
host abraracourcix
97 3 Julien Enselme
        hostname levillage.gaulois
98 3 Julien Enselme
        IdentityFile ~/.ssh/lacle
99 3 Julien Enselme
        user abraracourcix
100 3 Julien Enselme
        port 22
101 3 Julien Enselme
102 3 Julien Enselme
host thebigboss
103 3 Julien Enselme
        hostname jolitorax.britanica
104 3 Julien Enselme
        IdentityFile ~/.ssh/thekey
105 3 Julien Enselme
        user idefix
106 3 Julien Enselme
        port 22
107 3 Julien Enselme
        ProxyCommand ssh -q -tt abraracourcix -W %h:%p
108 3 Julien Enselme
</pre>
109 3 Julien Enselme
110 3 Julien Enselme
Si vous rencontez des problèmes, l'option @-o ControlPersist=no@ peut s'avérer utile. Remplacer la @ProxyCommand@ par : @ProxyCommand ssh -q -tt -o ControlPersist=no abraracourcix -W %h:%p@