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 за поддержание давления.