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