Как заставить ssh agent forwarding работать с несколькими учетными записями на виртуальной машине?
Существует большое количество ответов на переадресацию агента ssh, но я не смог найти ни одного, который бы решал мою проблему.
Я использую packer.io для автоматизации подготовки моих серверов. Один из конструкторов, который я использую, - это virtualbox-iso
builder, позволяющий мне создатьVagrant box для локального тестирования.
Моя хост-машина-это Macbook Pro, который я добавил два ssh-ключа к ssh-агенту с помощью команды типа: ssh-add -K ~/.ssh/id_rsa
. Я могу подтвердить, что они оба существуют. с ssh-add -l
и ssh-add -L
.
~/.ssh/config
со следующим содержимым:
Host work.bitbucket.org
User workuser
ForwardAgent yes
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa
Host bitbucket.org
User homeuser
ForwardAgent yes
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa_personal
После этого я мог войти на свой хост с помощью рабочего ключа через:
ssh -T git@work.bitbucket.org
и мой домашний ключ с
ssh -T git@bitbucket.org
.
Теперь для ВМ...
Следуя инструкциям, которые я нашел из других ответов, я добавил config.ssh.forward_agent = true
к моему Файл Vagrantfile.
Я также делаю следующее в одном из моих сценариев подготовки:
echo "updating known_hosts folder"
ssh-keyscan work.bitbucket.org >> ~/.ssh/known_hosts
echo "adding bitbucket key from file"
sudo cat /input/rsa.txt >> ~/.ssh/authorized_keys
Первая команда позволяет мне избежать дальнейших запросов на добавление ключа в мой файл known_hosts. Вторая команда просто добавляет мой рабочий ключ rsa из файла, который был загружен на предыдущем шаге.
Это, кажется, заставляет мой агент forwarding работать на моей виртуальной машине в некоторой степени, однако, он всегда выбирает первую запись в моем ssh-агенте.
Если я попытаюсь либо: ssh -T git@work.bitbucket.org
, либо ssh -T git@bitbucket.org
, я всегда получите первый ключ, указанный в ssh-add -l
. (Я фактически проверил это, добавив и удалив ключи для манипулирования порядком)
vagrant ssh
на самом деле работает. Я попытался манипулировать моими хост-машинами config
файл с 127.0.0.1:PORT
, где порт был конкретный порт, на котором находится моя машина. Я также попытался добавить дикую карту config
на моей виртуальной машине, чтобы разрешить прыжок, но у меня был очевидно, что не настроить что-то правильно, так как он все еще не работает, как ожидалось.
На данный момент я могу просто вручную удалить (ssh-add -d pathtokeytoremovehere
) дополнительные ключи и добавить их обратно, когда они мне понадобятся, но это, очевидно, не идеально.
Есть идеи?
1 ответ:
Вы пересылаете
ssh-agent
, но не локальную конфигурацию, которая отвечает за выбор правильного ключа для вас. Чтобы он работал, Вам также придется скопировать конфигурацию на сервер.Но не копируйте туда закрытые ключи. Ссылки на открытые ключи должны выполнять эту работу, так как они позволят ssh попробовать этот ключ и выбрать правильный из
ssh-agent
.