Подтвердить что ты не робот

Как я могу использовать SSH в хосте boot2docker vm, установленном поставщиком Daker Vagrant 1.6?

Я на OSX, и я хотел бы иметь SSH в хосте vm, чтобы:

  • Получить доступ к родной среде докеров. Это облегчает понимание и отладки проблем переадресации портов.
  • Vagrant rsync, похоже, оставляет много неиспользуемых синхронизированных каталогов, которые вырывают дисковое пространство, которое я бы хотел восстановить.

Чтобы быть ясным, этот вопрос НЕ о ssh: в контейнерах докеров, которые создает поставщик Vagrant, но в промежуточном хосте v2, который создает Vagrant.

Я знаю, что обходной путь заключается в том, чтобы не использовать по умолчанию boot2docker как хост vm (как объясняется в ответе здесь), но это не тот вопрос, о котором идет речь.

4b9b3361

Ответ 1

Vagrant boot2docker хранит имя пользователя и пароль boot2docker ssh.

SSH в VM

$ boot2docker ssh

Boot2Docker автоматически регистрируется с использованием сгенерированного ключа SSH, но если вы хотите, чтобы SSH машина вручную (или вы не используете управляемую виртуальную машину boot2docker), учетными данными являются:

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 [email protected] -p 2022
[email protected] password: tcuser
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.8.0
[email protected]:~$ 

Ответ 2

Октябрь 2015: Boot2docker устарел в пользу докер-машины. Для входа:

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp://192.168.99.100:2376   

$ docker-machine ssh default

Ответ 3

Вы можете использовать ssh в хосте docker с vagrant ssh docker-host-id, но сначала вам нужно знать идентификатор docker-host. Вы можете получить список всех активных бродячих сред с помощью команды vagrant global-status.
Чтобы получить идентификатор docker-host, вы можете фильтровать grep:

vagrant global-status | grep docker-host

вы получите результат, похожий на:

68f58d0  default  virtualbox running   /Users/yourUser/.vagrant.d/data/docker-host

скопируйте первый идентификатор столбца, а затем ssh в docker-host:

vagrant ssh 68f58d0

бранные глобальные документы о статусе

Ответ 4

Вы также можете отказаться от использования функции boot2docker ssh и сделать это "вручную" следующим образом:

$ ssh \
-i $HOME/.ssh/id_boot2docker \
-p $(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}') \
[email protected]

Аргументы -p обычно представляют собой порт 2022, но выше показывает, как вы можете программно определить это, если хотите.

Ответ 5

Вы можете использовать SSH напрямую:

ssh [email protected]$(boot2docker ip)

(пароль: tcuser, см. https://github.com/boot2docker/boot2docker#ssh-into-vm)


И вы также можете скопировать/вставить свой открытый ключ на машину boot2docker, поэтому вам не нужно вводить пароль каждый раз:

cat ~/.ssh/id_rsa.pub | ssh [email protected]$(boot2docker ip) 'cat - >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'

Ответ 6

Для бранных хост-машин с бродячим паролем:

ssh -p 2222 [email protected]

В противном случае с паролем tcuser:

ssh -p 2222 [email protected]

Здесь больше информации о том, почему это работает.