Не могу SSH в бродячую виртуальную машину

11

Локальный компьютер Vagrant установлен на IP-адрес 10.0.0.23с именем хоста lamp-vm.

Используя vagrant sshкоманду, я могу нормально подключиться и сделать все, что мне нужно.

Это создает ошибку

$ ssh vagrant @ lamp-vm -v -v

debug1: подключение к адресу 10.0.0.23 порт 22: истекло время ожидания соединения
ssh: соединение с портом host-vm хоста 22: время ожидания истекло

Мой /etc/hostsфайл содержит 10.0.0.23 lamp-vm.

Мой файл .ssh / config выглядит так

Host lamp-vm
Пользователь vagrant
IdentityFile ~ / .ssh / vagrant

Я пробовал команду ssh с и без -i /path/to/.sh/identity_file.

Как мне подключиться к моей виртуальной машине Vagrant, используя SSH?

ЦСИ
источник

Ответы:

8

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

Vagrantfile:

...
# Setting up private_network to have virtual host
config.vm.network :private_network, ip: "192.168.33.10"

# Enable ssh forward agent
config.ssh.forward_agent = true
...

SSH в машину:

ssh vagrant@192.168.33.10

Вам будет предложено ввести пароль (по умолчанию vagrant):

vagrant@192.168.33.28's password:

И бум, ты в!

PS * Вы также можете использовать scp в любом месте вашего хост-компьютера:

scp /path/to/src/file vagrant@192.168.33.10:/path/to/destination/file
Shaoming
источник
Хотя это работает, оно довольно хрупкое - я обнаружил, что наш Vagrantfile вызвал некоторые изменения в / etc / network / interfaces на виртуальной машине VirtualBox, что означало, что мое SSH-соединение прервалось. Подключение localhost ( ssh -p 2222 vagrant@localhost) не будет затронуто этим.
RichVel
8

Он старый, но ответа нет, я его предоставлю. Команда:

vagrant ssh

Является эквивалентом

ssh vagrant@localhost -p 2222 -i .vagrant/machines/default/virtualbox/private_key

Это поведение по умолчанию, если вы что-то изменили, измените команду соответствующим образом. Прежде всего, Vagrant создаст vagrant пользователя на вашем гостевом ящике, и вы будете использовать этого пользователя в ssh. Как говорили предыдущие люди, он будет перенаправлять трафик с порта 2222 на вашем хосте на порт 22 на вашем госте по умолчанию (когда вы используете vagrant up, вы видите, что это сообщение отображается). И, наконец, Vagrant создает ключи для ssh-сессии, поэтому вам не нужно этого делать, поэтому вам нужно предоставить открытый ключ в качестве аргумента при подключении через ssh.

stefwhite
источник
Это реальный и правильный ответ! Работает без проблем, с mobaxterm например. Вам также необходимо указать полный путь для
private_key
6

Такое поведение является особенностью.

Vagrant использует режим VirtualBox NAT, что означает использование переадресации портов.

Вы не можете SSH напрямую к вашей виртуальной машине, используя режим NAT.

Использование vagrant ssh означает, что vagrant сделает переадресацию портов за вас, поэтому вам не нужно об этом беспокоиться. Я думаю, что он будет подключаться к localhost через порт 2222 по умолчанию, но он также попытается разобраться в любых коллизиях номеров портов.

Если вам нужен SSH напрямую к вашей виртуальной машине, переключите виртуальную машину в режим только хоста или сетевого моста.

Филип Вигг
источник
Спасибо, Филипп, но как мне решить эту проблему? Извините за неопытность.
csi
1
Я использую режим только для хоста, и проблема сохраняется.
csi
Должен быть принятый ответ. Очень полезно это понять - переход через localhost на порт 2222 был путем к работающей настройке Vagrant (по какой-то причине я пока не мог заставить работать ключ insecure_private_key.) Я обнаружил, что стандартный «небезопасный закрытый ключ» не работать, поэтому я в итоге указал другой закрытый ключ и имя пользователя в Vagrantfile, но часть порта localhost 2222 не нуждается в изменении.
RichVel
5

Я бы добавил это как комментарий, но в настоящее время у меня недостаточно представителей для этого. Я написал инструкции по установке вашей виртуальной машины в мостовой режим:

/ubuntu/116861/setting-up-a-network-between-a-host-and-guest-virtual-machine/116909#116909

Я надеюсь, что вы найдете это полезным!

RWC
источник
+1 здесь и на AU.SE; хорошая рецензия
мсанфорд
3

Windows / Vagrant / Ubuntu

Это то, что сработало для меня, и вы можете быстро выяснить, сработает ли это, запустив это на клиенте ssh.

ssh vagrant@127.0.0.1 -p 2222 -v

-V переведет его в подробный режим и отобразит отладочную информацию ...

$ ssh vagrant@127.0.0.1 -p 2222 -v
OpenSSH_7.1p1, OpenSSL 1.0.2e 3 декабря 2015 г.
debug1: подключение к порту 2222 127.0.0.1 [127.0.0.1].
debug1: соединение установлено.
debug1: идентификационный файл /home/Jamie/.ssh/id_rsa тип 1
debug1: key_load_public: нет такого файла или каталога
debug1: идентификационный файл /home/Jamie/.ssh/id_rsa-cert тип -1
debug1: key_load_public: такого файла нет или каталог
debug1: файл идентификации /home/Jamie/.ssh/id_dsa тип -1
debug1: key_load_public: нет такого файла или каталога
debug1: файл идентификации /home/Jamie/.ssh/id_dsa-cert тип -1
debug1: key_load_public: нет такого файл или каталог
debug1: идентификационный файл /home/Jamie/.ssh/id_ecdsa тип -1
debug1: key_load_public: нет такого файла или каталога
debug1: идентификационный файл /home/Jamie/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: такого файла или каталога нет
debug1: идентификационный файл /home/Jamie/.ssh/id_ed25519 type -1
debug1: key_load_public: нет такого файла или каталога
debug1: идентификационный файл /home/Jamie/.ssh/id_ed25519-cert type -1
debug1: включение режима совместимости для протокола 2.0
debug1: строка локальной версии SSH-2.0-OpenSSH_7.1
debug1 : Удаленный протокол версии 2.0, версия удаленного программного обеспечения OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 pat OpenSSH_6.6.1 * compat
0x04000000 debug1: Аутентификация в 127.0.0.1:2222 как 'vagrant '
debug1: SSH2_MSG_KEXINIT отправлено
Соединение закрыто на 127.0.0.1

Итак ... SSH2_MSG_KEXINIT означает, что ключи обмениваются. Это вскоре терпит неудачу ...

В этом случае я удалил свои ключи и восстановил их, выполнив это на ВМ. ( http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html )

$ Ls -al / и т.д. / SSH / SSH ключ
$ Sudo гт -r / и т.д. / SSH / SSH
ключ
$ Sudo Dpkg-перенастроить OpenSSH-сервер

Как только мои ключи были регенерированы, я смог войти в мою Vagrant Box.

mrjamiebowman
источник
0

Уничтожил виртуальную машину
Перезагрузил виртуальную машину
Все заработало

Не уверен, почему, но, очевидно, что-то не загружается должным образом при первом обеспечении.

ЦСИ
источник