Как указать, какой ключ SSH использовать в мерзавце для мерзавца продвигают, чтобы иметь gitorious как зеркало?

Мне разместили проект на git.debian.org (alioth), и я хотел бы настроить постполучить рычаг для обновления зеркала репозитория на http://gitorious.org

Я предполагаю, что должен буду использовать git push --mirror gitorious

Теперь, мне должны будут разрешить Alioth на gitorious для нажатия успешно выполняться. Как я делаю это?

Я предполагаю, что должен настроить пользователя на gitorious и создать ssh ключ для него. И затем когда я выполняю в нажатии мерзавца постполучить рычаг, удостоверьтесь, что этот ssh ключ используется.

Я мог использовать a ~/.ssh/config но проблема состоит в том, что многие пользователи могут спешить alioth, и все должны были бы войти в систему и настроить ~/.ssh/config. Вместо этого я хотел бы иметь параметр командной строки или переменную среды для сообщения ssh который ключ использовать. Я могу сделать это?

Кроме того, у Вас есть другие идеи, как зеркальное отражение может быть достигнуто? И, действительно ли возможно настроить его наоборот (gitorious спешащий alioth)?

39
задан Mildred 16 August 2010 в 18:19
поделиться

1 ответ

Ответ можно найти в справочном руководстве git .

GIT_SSH

Если эта переменная среды установлена, то git fetch и git push будут использовать эту команду вместо ssh, когда им нужно подключиться к удаленной системе. Команде $ GIT_SSH будет дано ровно два аргумента: имя пользователя @ хост (или просто хост) из URL-адреса и команда оболочки для выполнения в этой удаленной системе.

Чтобы передать параметры программе, которую вы хотите указать в GIT_SSH , вам нужно будет обернуть программу и параметры в сценарий оболочки, а затем установить GIT_SSH для ссылки на оболочку. сценарий.

Обычно проще настроить любые желаемые параметры через ваш личный файл .ssh / config . Дополнительные сведения см. В документации по ssh.

Итак, мне нужно написать сценарий оболочки, я пишу этот push-gitorious.sh сценарий:

#!/bin/sh


if [ "run" != "$1" ]; then
  exec ssh -i "$GITORIOUS_IDENTITY_FILE" -o "StrictHostKeyChecking no" "$@"
fi

remote=YOUR_SSH_GITORIOUS_URL

echo "Mirroring to $remote"

export GITORIOUS_IDENTITY_FILE="`mktemp /tmp/tmp.XXXXXXXXXX`"
export GIT_SSH="$0"

cat >"$GITORIOUS_IDENTITY_FILE" <<EOF
YOUR SSH PRIVATE KEY

EOF
cat >"$GITORIOUS_IDENTITY_FILE.pub" <<EOF
YOUR SSH PUBLIC KEY

EOF

#echo git push --mirror "$remote"
git push --mirror "$remote"

rm -f "$GITORIOUS_IDENTITY_FILE"
rm -f "$GITORIOUS_IDENTITY_FILE.pub"

exit 0

Конечно, вы должны ввести закрытый ключ (открытый ключ включен в сценарий только для справки. Вам также необходимо заполнить ужасный URL.

В обработчике post-receive вы должны указать:

path/to/push-gitorious.sh run

Параметр запуска важен, иначе он запустит ssh напрямую.

Предупреждение: идентификация удаленного хоста не проверяется. Вы можете удалить эту опцию из командной строки ssh и настроить known_hosts , если хотите. В этом случае использования я не думаю, что это важно.

38
ответ дан 27 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: