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