Je suis sur OSX et j'aimerais pouvoir SSH dans l'hôte vm afin de:
Pour être clair, cette question ne concerne PAS ssh: ing dans les conteneurs Docker créés par le fournisseur Vagrant, mais dans le serveur intermédiaire boot2docker Host VM créé par Vagrant.
Je sais qu'une solution de contournement consiste à ne pas utiliser le boot2docker par défaut en tant que VM hôte (comme expliqué dans la réponse ici ), mais ce n'est pas le sujet de cette question.
Le boot2docker de Vagrant conserve le nom d'utilisateur et le mot de passe ssh de boot2docker.
SSH dans VM
$ boot2docker ssh
Boot2Docker se connecte automatiquement à l'aide de la clé SSH générée, mais si vous souhaitez vous connecter manuellement à la machine (ou si vous n'utilisez pas un
boot2docker
VM gérée), les informations d'identification sont les suivantes:user: docker pass: tcuser
https://github.com/boot2docker/boot2docker#ssh-into-vm
Le port est transféré à partir du port local 2022
par défaut. Vous pouvez le vérifier:
$ VBoxManage list vms | grep docker
"docker-Host_default_1234567890000_1234" {3d66ecf6-4539-47ca-afd2-66f953cd9a3e}
$ VBoxManage showvminfo docker-Host_default_1234567890000_1234 | grep ssh
NIC 1 Rule(1): name = ssh, protocol = tcp, Host ip = 127.0.0.1, Host port = 2022, guest ip = , guest port = 22
Et puis connectez-vous:
$ ssh docker@localhost -p 2022
docker@localhost's password: tcuser
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.8.0
docker@boot2docker:~$
Oct 2015: Boot2docker est déconseillé au profit de docker-machine. Ouvrir une session:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
$ docker-machine ssh default
Vous pouvez ssh dans Docker Host avec vagrant ssh docker-Host-id
mais vous devez d'abord connaître le docker-Host-id.
Vous pouvez obtenir une liste de tous les environnements Vagrant actifs avec vagrant global-status
commande.
Pour obtenir l'identifiant Docker-Host, vous pouvez filtrer avec grep:
vagrant global-status | grep docker-Host
vous obtiendrez une sortie similaire à:
68f58d0 default virtualbox running /Users/yourUser/.vagrant.d/data/docker-Host
copiez le premier identifiant de colonne, puis ssh dans docker-Host:
vagrant ssh 68f58d0
Vous pouvez également renoncer à utiliser boot2docker
_ ssh
fonction et faites-le "manuellement" comme ceci:
$ ssh \
-i $HOME/.ssh/id_boot2docker \
-p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \
docker@localhost
Les arguments de -p
est généralement le port 2022 mais ci-dessus montre comment vous pouvez le déterminer par programme si vous le souhaitez.
Vous pouvez utiliser directement SSH:
ssh docker@$(boot2docker ip)
(mot de passe: tcuser, voir https://github.com/boot2docker/boot2docker#ssh-into-vm )
Et vous pouvez également copier/coller votre clé publique sur la machine boot2docker, vous n'avez donc pas besoin de taper le mot de passe à chaque fois:
cat ~/.ssh/id_rsa.pub | ssh docker@$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
Pour les machines hôtes vagrant avec mot de passe vagrant :
ssh -p 2222 vagrant@localhost
Sinon avec mot de passe tcuser :
ssh -p 2222 docker@localhost
Ici est plus d'informations sur pourquoi cela fonctionne.