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> |