1

Я установил gitolite3 из репозитория EPEL в Centos6.4. Было много вещей, которые мне не нравились, поэтому я решил изменить их. Сначала я создал дополнительного пользователя и группу под названием «git», чтобы отдалиться от малоизвестного пользователя gitolite3. Во-вторых, я использовал пользовательскую папку /Server /Projects вместо /var /lib /gitolite3. Я позаботился о том, чтобы владение и права были одинаковыми.

Установка также прошла без проблем (su - git, затем настройка gitolite3 с ключом клиента администратора).

Обычно на клиентском компьютере команда ssh git@myserver info генерирует хороший простой возврат в виде gitolite, в котором перечислены репозитории и разрешения. Но теперь он дает мне запрос на пароль. Очевидно, что gitolite больше не подключен к порту ssh через этого пользователя, но обычная версия bash есть.

Я не эксперт по SSH, поэтому что-то пошло не так, или я забыл что-то сделать. Куда мне смотреть? Я думаю, что /usr /share /gitolite3 /gitolite3-shell - это приложение, которое SSHD должен вызывать, когда приходит запрос SSH с пользователем git.

1 ответ1

0

SSH не легко. Я решил это сам, но это не было очевидно. В основном это была проблема с SELinux, но я обнаружил, что неправильно настроил pubkey.

Сначала я (заново) создал pubkey (admin.pub) для локального компьютера, который собирался администрировать сервер gitolite, скопировал его в домашнюю папку git user на сервере, повторно запустил (под пользователем git в его домашней папке) gitolite настроить с этим pubkey. Обратите внимание, что мой локальный компьютер работает под управлением Windows с msys-git, что затрудняет решение проблемы.

# su - git
$ cd /Server/Projects
$ gitolite setup --pubkey admin.pub

..Это решило проблему pubkey. У selinux была большая кривая обучения, но, по сути, вы теряете все исходные метки контекста папки /var /lib /gitolite3, когда просто копируете. Чтобы восстановить метки (с semanage), вы ссылаетесь на те же метки (с флагом -e), что и в исходной папке, где вы указали текущую папку gitolite. Поскольку это только добавляет к существующим контекстам файла selinux, вам также необходимо восстановить их из контекстов файла selinux. Последний пробел - использовать абсолютные пути, а не относительные. Вы можете увидеть, что вы сделали с командой ll:

# semanage fcontext -a -e /var/lib/gitolite3 /Server/Projects
# restorecon -R /Server/Projects
# ll -aZ

Теперь, на вашем локальном компьютере, попробуйте все это с помощью команды, приведенной ниже, с компьютера, с которого пришел pubkey, у меня это сработало. Обратите внимание, что я не знал, что информация ssh git@unclefloserver info будет возвращать хороший вывод информации о репозитории gitolite3 , только если на сервере действительно есть pubkey запрашивающей комбинации пользователь / компьютер. Я также не смог немного понять эту концепцию, и я пробовал это с другого компьютера.

> git clone git@server:gitolite-admin

Большое спасибо @Etan Reisner за поддержание давления.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .