Projet

Général

Profil

Fonctionnement du ssh » Historique » Version 3

Christophe Dezé, 05/04/2016 09:10

1 1 Christophe Dezé
h1. Fonctionnement du ssh
2 1 Christophe Dezé
3 2 Christophe Dezé
Ansible et  la création d'un dashboard nécessite de se connecter en ssh sur les modules EOLE.
4 1 Christophe Dezé
5 2 Christophe Dezé
h2. le problème : 
6 2 Christophe Dezé
7 1 Christophe Dezé
Ansible se lance dans le docker quickzephir
8 3 Christophe Dezé
le docker dashboard (ssh-tunnel) se lance depuis le docker zephir.
9 1 Christophe Dezé
10 1 Christophe Dezé
Il n'est pas question de mettre des clès SSH dans les docker.
11 1 Christophe Dezé
12 2 Christophe Dezé
h2. la solution
13 2 Christophe Dezé
14 2 Christophe Dezé
On va utiliser la clé privée située sur le serveur (l’hôte).
15 1 Christophe Dezé
La clé publique doit avoir été déployé via le client zephir.
16 1 Christophe Dezé
17 1 Christophe Dezé
sur le serveur, on lance
18 1 Christophe Dezé
19 1 Christophe Dezé
if [ -z "$SSH_AUTH_SOCK" ] ; then eval `ssh-agent` -s ssh-add fi
20 1 Christophe Dezé
cette commande consiste  juste à définir la variable environnement SSH_AUTH_SOCK
21 1 Christophe Dezé
22 2 Christophe Dezé
@
23 1 Christophe Dezé
#echo $SSH_AUTH_SOCK
24 1 Christophe Dezé
/tmp/ssh-Jcm5BMVoE2ri/agent.7709
25 2 Christophe Dezé
@
26 1 Christophe Dezé
27 2 Christophe Dezé
au démarrage du docker quickzephir, on "partage" le socket SSH_AUTH_SOCK entre l'hote et le docker quickzephir (par le paramètre volumes)
28 1 Christophe Dezé
29 1 Christophe Dezé
30 1 Christophe Dezé
extrait docker-compose
31 2 Christophe Dezé
32 2 Christophe Dezé
<pre>
33 1 Christophe Dezé
quickzephir:
34 1 Christophe Dezé
  image: dezechristophe/quickzephir:dev
35 1 Christophe Dezé
  volumes:
36 1 Christophe Dezé
   - $SSH_AUTH_SOCK:$SSH_AUTH_SOCK
37 2 Christophe Dezé
</pre>
38 1 Christophe Dezé
39 2 Christophe Dezé
@
40 2 Christophe Dezé
docker-compose up
41 1 Christophe Dezé
docker exec -ti root_quickzephir_1  bash
42 1 Christophe Dezé
root@31cb845fdc13:/home/quickzephir# echo $SSH_AUTH_SOCK
43 1 Christophe Dezé
/tmp/ssh-Jcm5BMVoE2ri/agent.7709
44 2 Christophe Dezé
@
45 1 Christophe Dezé
46 1 Christophe Dezé
le socket est bien partagé.
47 1 Christophe Dezé
Depuis le docker,on doit pouvoir utiliser la clé privé de l'hote pour se connecter sur les modules EOLE (si la clé publique a été envoyée).
48 1 Christophe Dezé
les commandes ansible doivent fonctionner.
49 1 Christophe Dezé
50 1 Christophe Dezé
51 1 Christophe Dezé
De même, du docker quickzephir, des docker ssh-tunnel servent à lancer des commandes à distances sur des modules, via SSH.
52 1 Christophe Dezé
Dans /quickzephir/quickzephir/server/api/docker/docker.controller.js
53 2 Christophe Dezé
on partage,via le paramètre "volume", ce même socket dans chaque docker ssh-tunnel.
54 2 Christophe Dezé
55 2 Christophe Dezé
<pre>
56 1 Christophe Dezé
    var authsocks = process.env.SSH_AUTH_SOCK;
57 1 Christophe Dezé
    var volumes='["' + authsocks + ':' + authsocks + '"]';
58 1 Christophe Dezé
    var options = JSON.parse('{"Tty": true, "Env": [   "LINUXDASH=' + ip + '", "SSH_AUTH_SOCK=' + authsocks + '"],"Labels": { "linuxdash": "' + ip + '"},  "Binds": ' + volumes + '}');
59 2 Christophe Dezé
    docker.run('dezechristophe/ssh-tunnel', '', logStream, options , function (err, data, container)
60 2 Christophe Dezé
</pre>