Ошибка информации SSH Gitolite3

Ошибка информации SSH Gitolite3

Я установил 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

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

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

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

..Это решило проблему с открытым ключом. 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

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

> git clone git@server:gitolite-admin

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

Связанный контент