Предоставление vagrant клонирования репозитория,

Я пытаюсь создать среду, которая, когда она завершит создание виртуальной машины, клонирует репозиторий в общий каталог. Проблема заключается в том, что поле не имеет разрешения SSH на удаленном репозитории.

у меня простой bash-скрипт:

#!/bin/bash
cd /vagrant
if [ ! -d "repo" ]; then
  git clone git@remoterepo.com:/my/repo.git
end

Я получаю ошибку:

не удалось проверить ключ узла.

фатальная ошибка: удаленный конец повесил трубку неожиданно

, который имеет смысл, так как нет ключей в /home/vagrant/.ssh

Я сделал справедливое немного гуглить безрезультатно, я пытался установить config.ssh.forward_agent = true что позволяет мне вручную клонировать репозиторий, когда я ssh'ed в машину, но не тогда, когда он пытается запустить себя. Я также попытался указать config.ssh.private_ssh_key = "~/.ssh/id_rsa" но тогда vagrant просто не закончит загрузку (я предполагаю, что приложение не может ssh в поле).

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

примечание: Я посмотрел на основы СШ на залет ВМ которые кажутся похожими, но я думаю, что это больше о настройке другого пользователя на коробке, и размещенное решение намного более ручное, чем мне хотелось бы.

14
задан Community
09.03.2023 3:24 Количество просмотров материала 3028
Распечатать страницу

2 ответа

временное решение для меня было сгенерировать набор ключей и поместить их в тот же каталог, что и Vagrantfile, то при подготовке я копирую ключи в /root/.ssh/ . Была одна небольшая загвоздка с этим, и это было то, что я также должен был генерировать known_hosts file, чтобы виртуальная машина приняла соединение с удаленного сервера. The known_hosts файл также находится в /vagrant/.ssh / dir и копируется с ключами, и все теперь работает.

В конце концов когда я не пытаюсь загрузить коробку 1GB на свой файловый хост через пятнистый wi-fi, реальным решением будет навсегда включить эти файлы в basebox.

4
отвечен JaredMcAteer 2023-03-10 11:12

есть некоторые вещи об этом здесь: https://serverfault.com/questions/107187/ssh-agent-forwarding-and-sudo-to-another-user - резюме заключается в том, что переадресация SSH работает через переменную среды, которая не сохраняется su. Предлагаются решения на разных уровнях Unix-fu; я пошел с дешевым и веселым:

su -c "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK; CMD" -l vagrant

здесь CMD - это команда, которую вы хотите запустить.

это позволяет мне работать git clone as vagrant в ходе подготовка, поэтому я могу клонировать репозитории GitHub/Bitbucket с помощью открытого ключа SSH из моей хост-системы OS X, не имея всего, что в конечном итоге принадлежит root. И единственный другой шаг, необходимый для заполнения ~/.ssh/known_hosts С любыми необходимыми ключами (которые, я полагаю, вы уже делаете).

(в отличие от ситуации на реальной системе (см. комментарии к ответу, предполагающему это -https://serverfault.com/a/371788/321408), нет необходимости менять разрешения сокета, так как он уже принадлежит vagrant - то, что vagrant ssh механизм ручки для вас, я предполагаю. Поэтому я не считаю, что есть какие-либо проблемы безопасности, связанные с этим.)

1
отвечен Tom Seddon 2023-03-10 13:29

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх