Gitolite3 SSH информация не работает

Я установил 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, но я обнаружил, что неправильно настроил 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 за поддержание давления.

Другие вопросы по тегам