Обновлять: Похоже, что дизайн сети был совершенно неправильным, и поток аутентификации должен быть наоборот. Так что этот вопрос теперь неактуален.
Текущая настройка: виртуальная машина Linux (предполагаются наиболее распространенные и обновленные версии, такие как CentOS 7.1 и Ubuntu 15.04) на хосте Windows 7 с использованием Virtualbox.
TL;DR вопрос: Возможно ли запустить openssh внутри виртуальной машины?нетиспользовать локальный ssh-agent для аутентификации ключа, но вместо этого использовать Peagent на хосте Windows? Более сложная настройка приемлема.
длинный вопрос: Изначально на хосте и виртуальной машине есть несколько копий ключей — формат Putty на хосте и формат ключей openssh на виртуальных машинах через общую папку, и многие из них не защищены паролем для удобства. Но недавно я почувствовал необходимость объединить их и добавить больше защиты. Ключи предназначены для удаленного администрирования и проверки исходного кода через системы контроля версий, в основном Git. Вот требования:
- Хост Windows может подключаться по SSH к удаленному серверу и использовать Git через SSH.
- Виртуальная машина Linux может подключаться по SSH к удаленному серверу и использовать Git через SSH.
- Ключи хранятся только на хосте, а не на виртуальных машинах. (Это означает, что это не будет настройкой переадресации агента 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.