#ubuntu #git
Gitolite отказывается работать по ssh
Сервер
-UBUNTU
Клиент
-Win7
На сервере:
пользователь gitroot
установлен git на дефолтных настройках
установлен gitolite на дефолтных настройках
сгенерированы ключи ssh на дефолтных установках
файл sshd_config поправлен:
раскоментированы строчки
RSAAuthentication yes
PubkeyAuthentication yes
создан пользователь git
Копирован свой публичный ssh rsa ключ из домашней директории для настройки управления
репозиторием
sudo cp ~/.ssh/id_rsa.pub /home/git/admin.pub
Заходим под пользователем git и заканчиваем настройку
sudo su git
cd
gl-setup admin.pub
На клиенте:
сгенерированы ключи через GitBash
скопирован публичный ключ на сервер через GitBash
git clone ssh://git@server:/home/git/repositories/gitolite-admin.git
Спрашивает пароль для пользователя git, хотя не должно по инструкции. Что это может
быть? Ведь при создании пользователя git не нужно было вводить никаких паролей??
Если при создании пользователя git задать пароль то все отлично клонируется на локальную
машину. Только вот push выдает такое:
$ git push origin master git@server password: Counting
objects: 4, done. Delta compression using up to 4 threads. Compressing
objects: 100% (3/3), done. Writing objects: 100% (4/4), 358 bytes | 0
bytes/s, done. Total 4 (delta 1), reused 0 (delta 0) remote: ENV GL_RC
not set remote: BEGIN failed--compilation aborted at hooks/update line
20. remote: error: hook declined to update refs/heads/master To ssh://git@server:/home/git/repositories/gitolite-admin.git !
[remote rejected] master -> master (hook declined) error: failed to
push some refs to
'ssh://git@server:/home/git/repositories/gitolite-admin.git'
Ответы
Ответ 1
командой gl-setup /путь/к/файлу/с/публичным/ключом, выполненной от имени пользователя git, вы «настроили» этого пользователя на обслуживание инфраструктуры gitolite (которая этой же командой создана в домашнем каталоге этого пользователя). изначально инфраструктура содержит всего один репозиторий gitolite-admin, через который и осуществляется управление: создание и удаление репозиториев, назначение прав доступа к ним и т.п. публичный ключ, который вы передали параметром программе gl-setup, назначен при этом «административным». при помощи секретной части этого ключа теперь можно склонировать репозиторий gitolite-admin, и, внеся в него изменения (например, добавив в файл conf/gitolite.conf описание нового репозитория), «запушить» эти изменения обратно (что приведёт к созданию того самого нового репозитория). где «взять» эту секретную часть? там же, где вы «взяли» публичную: вы упомянули команду sudo cp ~/.ssh/id_rsa.pub /home/git/admin.pub, которую выполнили от имени какого-то пользователя. вот в домашнем каталоге этого неназванного пользователя и находится секретная часть ключа. в файле: ~/.ssh/id_rsa что же дальше делать? там же, на сервере, от имени того самого пользователя, чьей публичной частью ключа вы воспользовались при настройке gitolite, сделайте клон репозитория gitolite-admin: $ cd $ git clone git@server:gitolite-admin $ cd gitolite-admin и дальше управляйте gitolite-ом по инструкции. например, если вам надо дать административные полномочия пользователю, владеющему другой парой из публичного и секретного ключа, то: скопируйте новый публичный ключ в каталог keydir под именем, например, admin2.pub. добавьте (через пробел) admin2 в конец строки, начинающейся с @adm = в файле conf/gitolite.conf (это так группа adm описана). добавьте эти файлы в index: $ git add conf/gitolite.conf keydir/admin2.pub сделайте commit: $ git commit -m 'добавлен ключ admin2 в группу adm' отправьте изменения gitolite-у: $ git push p.s. а доступ по паролю к gitolite-у невозможен. только по ключу. потому у вас и ошибка происходит. дополнение про путь к репозиторию для правильного обращения к репозиториям, управляемым инфраструктурой gitolite, надо указывать лишь их имена. на приведённом примере — не: $ git clone ssh://git@server:/home/git/repositories/gitolite-admin.git а: $ git clone git@server:gitolite-admin
Комментариев нет:
Отправить комментарий