Fonctionnement du ssh » Historique » Version 1
Version 1/7
-
Suivant » -
Version actuelle
Christophe Dezé, 04/04/2016 19:23
Fonctionnement du ssh¶
Ansible et la connection au dashboard necessite de se connecter en ssh sur les modules EOLE.
le problème :
Ansible se lance dans le docker quickzephir
le docker dashboard se lance depuis le docker zephir.
Il n'est pas question de mettre des clès SSH dans les docker.
On va utiliser la clé privée située sur le serveur.
La clé publique doit avoir été déployé via le client zephir.
sur le serveur, on lance
if [ -z "$SSH_AUTH_SOCK" ] ; then eval `ssh-agent` -s ssh-add fi
cette commande consiste juste à définir la variable environnement SSH_AUTH_SOCK
#echo $SSH_AUTH_SOCK
/tmp/ssh-Jcm5BMVoE2ri/agent.7709
au demarrage du docker quickzephir, on "partage" le socket SSH_AUTH_SOCK entre l'hote et le docker quickzephir
extrait docker-compose
quickzephir:
image: dezechristophe/quickzephir:dev
volumes:
- $SSH_AUTH_SOCK:$SSH_AUTH_SOCK
docker exec -ti root_quickzephir_1 bash
root@31cb845fdc13:/home/quickzephir# echo $SSH_AUTH_SOCK
/tmp/ssh-Jcm5BMVoE2ri/agent.7709
le socket est bien partagé.
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).
les commandes ansible doivent fonctionner.
De même, du docker quickzephir, des docker ssh-tunnel servent à lancer des commandes à distances sur des modules, via SSH.
Dans /quickzephir/quickzephir/server/api/docker/docker.controller.js
on partage,via le parametre "colume" ce meme socket dans chaque docker ssh-tunnel
var authsocks = process.env.SSH_AUTH_SOCK;
var volumes='["' + authsocks + ':' + authsocks + '"]';
var options = JSON.parse('{"Tty": true, "Env": [ "LINUXDASH=' + ip + '", "SSH_AUTH_SOCK=' + authsocks + '"],"Labels": { "linuxdash": "' + ip + '"}, "Binds": ' + volumes + '}');
docker.run('dezechristophe/ssh-tunnel', '', logStream, options , function (err, data, container)