我在OSX上,我希望能够通过SSH连接主机vm以便:
要清楚,这个问题不是关于ssh:进入Vagrant提供程序创建的docker容器,而是进入Vagrant创建的中间boot2docker主机vm。
我知道解决方法是不使用默认的boot2docker作为主机vm(如答案here中所述),但这不是这个问题的内容。
答案 0 :(得分:100)
Vagrant的boot2docker保留了boot2docker的ssh用户名和密码。
SSH进入VM
$ boot2docker ssh
Boot2Docker使用生成的SSH密钥自动登录,但是如果要进入SSH 手动(或您没有使用
boot2docker
托管VM)的机器,凭据是:user: docker pass: tcuser
https://github.com/boot2docker/boot2docker#ssh-into-vm
默认情况下,端口从本地端口2022
转发。您可以验证这一点:
$ 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
然后登录:
$ ssh docker@localhost -p 2022
docker@localhost's password: tcuser
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.8.0
docker@boot2docker:~$
答案 1 :(得分:15)
2015年10月:不推荐使用Boot2docker而使用docker-machine。登录:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
$ docker-machine ssh default
答案 2 :(得分:11)
您可以使用vagrant ssh docker-host-id
ssh到docker主机,但首先您需要知道docker-host-id。
您可以使用vagrant global-status
命令获取所有活动Vagrant环境的列表
要获取docker-host id,可以使用grep:
vagrant global-status | grep docker-host
您将获得类似于:
的输出68f58d0 default virtualbox running /Users/yourUser/.vagrant.d/data/docker-host
复制第一列id,然后将ssh复制到docker-host:
vagrant ssh 68f58d0
答案 3 :(得分:7)
您也可以放弃使用boot2docker
的{{1}}功能并执行此操作&#34;手动&#34;像这样:
ssh
$ ssh \
-i $HOME/.ssh/id_boot2docker \
-p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \
docker@localhost
的参数通常是端口2022,但上图显示了如果需要,您可以通过编程方式确定它。
答案 4 :(得分:2)
您可以直接使用SSH:
ssh docker@$(boot2docker ip)
(密码:tcuser,见https://github.com/boot2docker/boot2docker#ssh-into-vm)
您还可以将公钥复制/粘贴到boot2docker计算机,因此您无需每次都输入密码:
cat ~/.ssh/id_rsa.pub | ssh docker@$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
答案 5 :(得分:2)
对于带有 vagrant 密码的流浪汉主机:
ssh -p 2222 vagrant@localhost
否则使用 tcuser 密码:
ssh -p 2222 docker@localhost
Here提供了有关其工作原理的更多信息。