Назад | Перейти на главную страницу

SSH с использованием пересылки агентов с ОС Windows Host, гостевой ОС Vagrant Ubuntu и Keepass / Keeagent

Намерение: Чтобы иметь возможность развертывать lan-example.com из любой среды разработки; будь то непосредственно из виртуальной ОС, или любой системы с одной ОС, или даже через Интернет с использованием ОДНОГО ключа SSH, хранящегося в Keepass. В настоящее время я не могу сделать это из ОС Vagrant, если я явно не сгенерирую его собственный ключ и не авторизую его на каждом из моих серверов развертывания. Я считаю, что я могу делать то, что хочу, через пересылку агента пользователя, да?


ОС хоста

C: \ Users \ Administrator.ssh \ config

Host 192.168.55.2
  ForwardAgent yes

Vagrantfile

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.network :private_network, ip: '192.168.55.2'
  config.ssh.forward_agent = true
  # Why would I need to set this if Keeagent is handling things?
  config.ssh.private_key_path = '~/.ssh/id_rsa_jake_mitchell.ppk'
end

Гостевая ОС (Vagrant)


Веб-хостинг LAN (сайты интрасети)


Проблема:

Что работает (с использованием Host OS): Putty, подключение к lan-example.com без необходимости явно ссылаться на ключ SSH.

Что не работает (с гостевой ОС): ssh -v web-server@lan-example.com поскольку это показывает, что нет никаких ключей для использования.

Я кое-что заметил в бета-версия Keeagent что позволяет мне установить SSH_AUTH_SOCK. Я сделал это и настроил общий ресурс NFS, который позволяет гостевой ОС читать файл; однако это ничего не меняет. Как вообще переадресация агентов работает в такой среде? Чем отличается Windows, что приводит к сбою?

Совместное использование файла сокета через сетевую файловую систему не будет работать, поскольку сокет Windows и сокет Linux - совершенно разные звери - Linux внутри виртуальной машины не знает, как использовать сокеты Windows. Чтобы убедиться, что виртуальная машина может использовать агент аутентификации на хосте, необходимо включить пересылку агента на обе клиент и сервер ssh, затем ssh в виртуальную машину через хост (не вход непосредственно в консоль виртуальной машины).

Предполагая:

  1. Настройка пересылки агента сервера SSH выполнена, согласно исходному сообщению (я не использовал Vagrant, поэтому не могу сказать);
  2. Настройка Keeagent завершена и работает (я пробовал режим клиента, но есть некоторые проблемы с ключами, отличными от RSA / DSA, поэтому режим агента более безопасен);

Под putty настройте профиль, отметьте опцию «Разрешить перенаправление агента» в разделе «Соединение → SSH → Auth», чтобы включить перенаправление агента для клиента. В качестве альтернативы, если на хосте используется Cygwin ssh, есть 2 варианта:

  1. Установить ssh-pageant и запускать его автоматически с помощью cygwin (в ~/.profile и тому подобное).
  2. Укажите желаемое расположение файла сокета Windows в программе установки Keeagent и установите $SSH_AUTH_SOCK переменную в cygwin в соответствующее место.

Чтобы проверить, работает ли пересылка агента или нет, ssh в виртуальную машину и проверьте переменную $SSH_AUTH_SOCK. Если он не пустой и указывает на существующий файл сокета Linux, значит, все должно быть в порядке. Если переменная пуста, значит, чего-то не хватает.