Projet

Général

Profil

Fonctionnement du ssh » Historique » Version 1

Christophe Dezé, 04/04/2016 19:23

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