Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

Gitolite отказывается работать по ssh

#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

Комментариев нет:

Отправить комментарий