Статьи

SSH & Vagrant

Vagrant — это удобный инструмент для создания виртуальных машин. Это похоже на запуск экземпляра EC2 , но в случае Vagrant все локализовано. И самое главное, это бесплатно.

Я предпочитаю отдавать предпочтение Ubuntu как своему любимому вкусу linux; следовательно, все производственные экземпляры EC2 используют настроенный Ubuntu AMI. Однако тестирование различных аспектов этой системы с использованием различных программных библиотек первоначально проводится локально с использованием виртуальных машин Vagrant. Более того, вы можете установить локализованные виртуальные машины других операционных систем , от Debian до OpenSuse и Heroku Cedalon .

Запустить локальный экземпляр Heroku ‘s Cedalon (который является версией Ubuntu 10.04 с установленными Ruby и Node.js) так же просто, как набрать:

Разжигая кедал Heroku на месте

1
2
vagrant init heroku http://dl.dropbox.com/u/1906634/heroku.box
vagrant up

Затем вы можете использовать SSH для этой работающей виртуальной машины следующим образом:

SSHing к локальной ВМ

1
vagrant ssh

Команда vagrant ssh может быть проблематичной, особенно, если вы автоматизируете какой-то аспект SSH — например, вы используете какую-то библиотеку поверх SSH. В этом случае вам нужно использовать SSH напрямую, а не через Vagrant.

К счастью, вы можете легко подключиться по SSH к локальным экземплярам Vagrant. Вам нужно будет указать SSH, какой ключ использовать (Vagrant создает его для вас), к какому пользователю подключаться (как правило, vagrant) и к какому порту подключаться (обычно 2222). Всю эту информацию можно найти с помощью команды vagrant ssh-config .

Чтобы использовать простой Jane SSH при работе с экземплярами Vagrant, вам сначала нужно выполнить эту команду:

Распечатка местоположения ключа Вагранта

1
vagrant ssh-config | grep IdentityFile  | awk '{print $2}'

Эта 3-х конечная команда в конечном итоге сообщает вам, где Vagrant создал файл ключа. Команда awk '{print $2}' печатает второй столбец строки в строке ssh-config которая начинается с IdentityFile (который указывает на его местоположение).

Теперь, когда вы знаете, где находится файл ключа, вы можете использовать ssh (при условии, что порт по умолчанию не изменился с 2222 — дважды проверьте ваш ssh-config чтобы убедиться в этом) следующим образом:

Используя обычный SSH

1
ssh -i /some/dir/.vagrant.d/insecure_private_key -l vagrant -p 2222 127.0.0.1

Если вам случится запустить разные виртуальные машины — например, у меня есть и Heroku Cedalon, и обычные экземпляры Ubuntu, SSH, вероятно, пожалуется, что идентификация удаленного хоста изменилась. Это действительное предупреждение, поскольку отпечаток RSA, связанный с локальным хостом, действительно изменился.

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

Тем не менее, если вы работаете с локализованными виртуальными машинами и хотите обойти это предупреждение, используйте следующие два флага:

Два дополнительных флага для SSH

1
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

Следовательно, когда я отправляю SSH в локальный экземпляр Vagrant, я набираю что-то вроде:

SSHing для Vagrant экземпляров

1
ssh -i /some/dir/.vagrant.d/insecure_private_key -l vagrant -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no 127.0.0.1

Наконец, чтобы закрыть экземпляр Vagrant, просто введите команду:

SSHing для Vagrant экземпляров

1
vagrant destroy

Vagrant упрощает запуск локализованных сред разработки — экземпляры Vagrant загружаются быстрее, чем экземпляры EC2, и они бесплатны. И теперь вы знаете, как использовать обычный SSH для подключения к ним. Вы можете копать это?

Ссылка: SSH & Vagrant от нашего партнера по JCG Эндрю Гловера в блоге The Disco Blog .