Вопрос по git – Gitolite: добавление пользователя не работает, и ОТКАЗАНО от fallthru при клонировании от имени пользователя root?

5

Мне удалось инициировать пустое git-репо на моем NAS, и я попытался добавить нового пользователя, сгенерировав новый открытый ключ "foo.pub". и копирование + вставка его в keydir / и фиксация его и отправка на NAS.

First, the files:

Вот мой файл ~ / .ssh / config:

Host root
    HostName iptonas
    User root
    Port 123        

Host foo
    HostName iptonas
    User foo
    Port 123
    identityfile ~/.ssh/foo

Взял копию gitolite-admin из NAS:

git clone ssh://root/gitolite-admin

Я получил:

Cloning into 'gitolite-admin'...
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (1/1), done.

Вот мой файл gitolite.conf:

repo gitolite-admin
    RW+     =   git

repo testing
    RW+     =   @all

repo newrepo
    RW+     =   foo
    RW+     =   bar

Когда я нажал свою копию gitolite-admin, используя:

git push root:gitolite-admin

Я получил:

Counting objects: 10, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 1.02 KiB, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /root/repositories/newrepo.git/
To root:gitolite-admin
   897113c..e7e2daf  master -> master

Now, when I try to push to the new repo

Когда я пытаюсь бежать:

git clone foo:newrepo

Я получил:

Cloning into 'newrepo'...
[email protected]'s password: 
fatal: 'newrepo' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Когда я пытаюсь бежать:

git clone root:newrepo

Я получил:

Cloning into 'newrepo'...
FATAL: R any newrepo git DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

Я не уверен, что я делаю неправильно?

Я следую этим инструкциям: http://www.nineproductions.com/linux/53-gitolite-hosting.html В разделе "Добавление репозиториев и пользователей"

Ваш Ответ

1   ответ
11

который имеетid_rsa.pub Ключ используется при установке Gitolite.

Итак, ваша учетная запись должна иметь в своем~/.ssh id_rsa а такжеid_rsa.pub ключи, используемые gitolite при объявлении & apos;git& APOS; пользователь (который является единственным, кто может клонироватьgitolite-admin Сделки РЕПО).

Теперь, чтобы добавить пользователя, вы должны не только объявить его вgitolite.conf файл (который вы сделали), вы также должны добавить свой открытый ключ к локальномуgitolite-admin репоkeys& APOS; каталог.

I ask Steve Franko to generate a new public/private key pair using ”ssh-keygen -t dsa” I ask Steve Franko to send me the PUBLIC key he just generated I rename the public key from id_dsa.pub to sfranko.pub I copy the sfranko.pub key into the gitolite-admin/keydir directory

Если вы выполните обе эти операции, прежде чем нажатьgitolite-admin, тогда Gitolite объявит, что новый пользователь, и вашgit clone foo:newrepo буду работать.

Обратите внимание, что если вы сделали установку Gitolite сgit учетная запись, как я рекомендовал ранее, вы должны иметь в своем конфигурационном файле:

Host git
    HostName iptonas
    User git
    Port 123
    Identityfile ~/.ssh/git

И идтиgit clone git:gitolite-admin.

Единственный раз, когда вы должны увидеть / использоватьroot находится в начале установки на стороне сервера, чтобы объявить / добавитьgit учетная запись.
После этого я очень рекомендую не использовать / смотретьroot в любом месте вашего процесса.

Actually I did generate two key sets, so my ~/.ssh folder currently has: id_rsa, id_rsa.pub, id_foo, id_foo.pub

Ваш~/.ssh папка должна содержать:

git, git.pub, id_foo, id_foo.pub

Gitolite bases its authorization mechanism on an authentication made after the name of the public key.

Опять же: на стороне сервера вы должны выполнить установку gitolite от имени пользователя, подобного «git», с аргументом a/tmp/git.pub (не/tmp/id_rsa.pub)

Подведем итоги, потому что здесь много путаницы.Gitolite is based on ssh.
Это означает, что вам нужна одна учетная запись (здесь «git») на стороне сервера (которая будет вашим сервером Gitolite), в которой~git/.ssh/authorized_keys файл будет записывать все открытые ключи администратора / пользователей Gitolite.

На стороне клиента (ваш пользователь foo) вы должны иметь (по крайней мере, для вашего первого пользователя) открытый и закрытый ключи от git, а также ключи от foo.

Ваш~foo/.ssh/config файл будет содержать:

Host gitadmin
    HostName iptonas
    User git
    Port 123        
    identityfile ~/.ssh/git

Host foo
    HostName iptonas
    User git
    Port 123
    identityfile ~/.ssh/foo

Обратите внимание, что пользователь дляany ssh communication is always git! Вы всегда связываетесь с сервером Gitolite через ssh-адрес, такой какssh://[email protected]:123/arepo.
За исключением того, что у вас есть несколько ключей SSH на выбор, вы можете ввести вместо:

git clone gitadmin:gitolite-admin, or git clone foo:newRepo

Первая команда позволит вам клонироватьgitolite-admin repo (потому что вы делаете это, используя открытые и закрытые ssh-ключи git, так что у вас есть права на это).
Вы можете использовать этот местный клон, чтобы поставитьfoo.pub вkeys каталог, и объявитьnewRepo вconfig файл.
Затем вы отодвигаете репо (и Gitolite делает свое чудо, создавая новый репо, добавляя содержимоеfoo.pub в~git/.ssh/authorized_keys для вас, с помощью сценария принудительной команды для перехвата любых команд ssh, испускаемыхfoo).

(Я предпочитаю называть этот ярлык ssh & apos;gitadmin& APOS; вместо git, даже если открытый / закрытый ключи названы & apos;git.xxx', потому что'gitadmin& APOS; лучше передаетintent из команд ssh вы будете делать с ним: вы будете управлять правами доступа git)

Вторая команда позволяет вам клонироватьnewRepo и работать над этим.

Обратите внимание, что:

ssh gitadmin, or ssh foo

отобразит версию gitolite и права, связанные с ключами ssh, используемыми каждым ярлыком ssh & apos;gitadmin& APOS; и & apos;foo', как определено в~foo/.ssh/config файл.

@Jay: «Если я не буду следовать« Настройте профиль и домашний каталог пользователя Git Hosting »& quot; шаги для моего нового & quot; foo & quot; Пользователь & Quot;no you should notЭтот раздел предназначен исключительно для настройки учетной записи git на сервере, который будет использоваться для всех коммуникаций ssh. Я отредактирую свой ответ для большего.
Привет еще раз :) Большое спасибо за помощь мне. На самом деле я сгенерировал два набора ключей, поэтому моя папка ~ / .ssh в настоящее время содержит: id_rsa, id_rsa.pub, id_foo, id_foo.pub. В моем каталоге gitolite-admin / keydir у меня есть: git.pub, foo.pub. Я также добавил пользователя git в мой конфигурационный файл, как вы предложили. Тем не менее, когда я запускаю «git clone git: gitolite-admin» Я получаю "клонирование в" пароль gitolite-admin "... git @ iptonas: разрешение отклонено, повторите попытку." несколько раз до отказа. Jay
@Jay: ответ отредактирован
Итак, я выполнил все эти инструкции и попытался запустить "git push git: gitolite-admin". Меня спросили о pw для git, и после того, как я набрал его, я получил: "Не удалось chdir к домашнему каталогу / var / services / homes / git: Нет такого файла или каталога \ n fatal: & gt; gitolite-admin & apos; не похоже на git-репозиторий \ n фатально: удаленный конец неожиданно зависает & quot ;. Я полагаю, мне нужно найти способ отредактировать ~ / .profile или что-то еще? Как я могу получить этот файл? Jay
Должен ли я, возможно, сделать наборы ключей для git, а также добавить "identityfile ~ / .ssh / git"? настроить? Jay

Похожие вопросы