Openssh в виртуальной машине аутентифицируется с помощью Pageant на хосте

Openssh в виртуальной машине аутентифицируется с помощью Pageant на хосте

Обновлять: Похоже, что дизайн сети был совершенно неправильным, и поток аутентификации должен быть наоборот. Так что этот вопрос теперь неактуален.


Текущая настройка: виртуальная машина Linux (предполагаются наиболее распространенные и обновленные версии, такие как CentOS 7.1 и Ubuntu 15.04) на хосте Windows 7 с использованием Virtualbox.

TL;DR вопрос: Возможно ли запустить openssh внутри виртуальной машины?нетиспользовать локальный ssh-agent для аутентификации ключа, но вместо этого использовать Peagent на хосте Windows? Более сложная настройка приемлема.

длинный вопрос: Изначально на хосте и виртуальной машине есть несколько копий ключей — формат Putty на хосте и формат ключей openssh на виртуальных машинах через общую папку, и многие из них не защищены паролем для удобства. Но недавно я почувствовал необходимость объединить их и добавить больше защиты. Ключи предназначены для удаленного администрирования и проверки исходного кода через системы контроля версий, в основном Git. Вот требования:

  1. Хост Windows может подключаться по SSH к удаленному серверу и использовать Git через SSH.
  2. Виртуальная машина Linux может подключаться по SSH к удаленному серверу и использовать Git через SSH.
  3. Ключи хранятся только на хосте, а не на виртуальных машинах. (Это означает, что это не будет настройкой переадресации агента SSH)

Пункт 1 (разрешение хосту Windows использовать pageant для аутентификации) относительно тривиален; настройка git по сути сводится к установке правильной $GIT_SSHпеременной окружения. Не только Putty, даже MinGW openssh может подключаться к pageant, сохраняя все ключи внутри менеджера паролей (используя KeePass 2.x) и экспортируя сокет, подходящий для использования, как $SSH_AUTH_SOCKс помощьюплагин KeeAgent. Видетьэтот пост ServerFaultдля другого подхода.

Но пока не удалось получить доступ к pageant через Linux VM. Я попробовал следующий подходно не удалось:

  • SSH-сервер установлен на хосте Windows в качестве промежуточного узла (я пытаюсьМобасшно выбор не должен иметь значения — читайте дальше).
  • Затем попробуйте выполнить удаленно plink.exeиз виртуальной машины. Это похоже на наивный подход ssh host1 ssh host2, который вполне подходит для моих целей.
  • Однако, plink.exe не удалось получить доступ ни к одному ключу при запуске на сервере Windows SSH. Запуск plink.exe напрямую cmdработает. Большинство доступных серверов SSH, работающих на Windows, основаны на Cygwin. Выглядит довольно похоже на этоотчет об ошибке putty/cygwin combo.

Примечание:Возможно, аналогичный вопрос здесь, но я не использую Vagrant.

решение1

Кажется, изначальный дизайн был совершенно неправильным. Было бы намного чище включить sshd-сервер на каждой виртуальной машине с

AllowAgentForwarding yes

И затем ssh в каждую VM. Таким образом, все VM будут автоматически использовать агент аутентификации с хоста без необходимости установки какого-либо ключа ssh.

Связанный контент