Pytanie w sprawie gitolite, clone, git – Gitolite: dodawanie użytkownika nie działa, a DENIED przez fallthru podczas klonowania jako root?

5

Udało mi się zainicjować puste repozytorium git na moim serwerze NAS i próbowałem dodać nowego użytkownika, generując nowy klucz publiczny „foo.pub” i kopiując + wklejając go do keydir / i popełniając go i przesuwając go na NAS .

Po pierwsze, pliki:

Oto mój plik ~ / .ssh / config:

Host root
    HostName iptonas
    User root
    Port 123        

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

Chwyciłem kopię gitolite-admin z NAS:

git clone ssh://root/gitolite-admin

Dostaję:

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.

Oto mój plik gitolite.conf:

repo gitolite-admin
    RW+     =   git

repo testing
    RW+     =   @all

repo newrepo
    RW+     =   foo
    RW+     =   bar

Kiedy pchnąłem moją kopię gitolite-admin za pomocą:

git push root:gitolite-admin

Dostaję:

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

Teraz, kiedy próbuję przejść do nowego repo

Kiedy próbuję uruchomić:

git clone foo:newrepo

Dostaję:

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

Kiedy próbuję uruchomić:

git clone root:newrepo

Dostaję:

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

Nie wiem, co robię źle?

Postępuję zgodnie z tymi instrukcjami:http://www.nineproductions.com/linux/53-gitolite-hosting.html W sekcji „Dodawanie repozytoriów i użytkowników”

Twoja odpowiedź

1   odpowiedź
11

Instrukcje te mówią o klonowaniu u użytkownika, który maid_rsa.pub klucz używany podczas instalacji Gitolite.

Twoje konto musi mieć swoje~/.ssh id_rsa iid_rsa.pub klucze używane przez gitolite podczas deklarowania 'git'użytkownik (który jest jedynym, który może sklonowaćgitolite-admin repo).

Teraz, aby dodać użytkownika, musisz nie tylko zadeklarować tego użytkownika wgitolite.conf plik (który zrobiłeś), musisz także dodać jego klucz publiczny do lokalnegogitolite-admin repo ”keyskatalog.

Proszę Steve'a Franko, aby wygenerował nową parę kluczy publicznych / prywatnych ”ssh-keygen -t dsa”Proszę Steve'a Franko, aby wysłał mi klucz PUBLIC, który właśnie wygenerowałZmieniam nazwę klucza publicznego zid_dsa.pub dosfranko.pubKopiujęsfranko.pub klucz dogitolite-admin/keydir informator

Jeśli wykonasz obie te czynności przed powrotem do tyługitolite-admin, następnie Gitolite ogłosi nowego użytkownika i twojegogit clone foo:newrepo będzie działać.

Zauważ, że jeśli zrobiłeś instalację Gitolite za pomocągit konto, które zaleciłem wcześniej, powinieneś mieć w swoim pliku konfiguracyjnym:

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

I idźgit clone git:gitolite-admin.

Tylko raz powinieneś zobaczyć / użyćroot znajduje się na początku instalacji po stronie serwera, aby zadeklarować / dodaćgit konto.
Potem naprawdę polecam, abyś nie używał / seeroot gdziekolwiek w twoim procesie.

W rzeczywistości wygenerowałem dwa zestawy kluczy, więc mój~/.ssh folder ma obecnie:id_rsa, id_rsa.pub, id_foo, id_foo.pub

Twój~/.ssh folder powinien zawierać:

git, git.pub, id_foo, id_foo.pub

Gitolite opiera swój mechanizm autoryzacji na uwierzytelnianiu dokonanym po nazwie klucza publicznego.

Ponownie: po stronie serwera musisz wykonać instalację gitolite jako użytkownik taki jak „git”, z argumentem a/tmp/git.pub (nie/tmp/id_rsa.pub)

Przypomnijmy, ponieważ jest tu wiele zamieszania.Gitolite opiera się na ssh.
Oznacza to, że potrzebujesz jednego konta (tutaj „git”) po stronie serwera (który będzie twoim serwerem Gitolite), w którym~git/.ssh/authorized_keys plik zapisze wszystkie klucze publiczne administratora / użytkowników Gitolite.

Po stronie klienta (twojego użytkownika foo) musisz mieć (przynajmniej dla pierwszego użytkownika) klucze publiczne i prywatne z git, a te z foo.

Twój~foo/.ssh/config plik będzie zawierał:

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

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

Zauważ, że użytkownik dlakażda komunikacja ssh jest zawsze git! Zawsze kontaktujesz się z serwerem Gitolite poprzez adres ssh, taki jakssh://[email protected]:123/arepo.
Poza tym, ponieważ masz wiele kluczy SSH do wyboru, możesz zamiast tego wpisać:

git clone gitadmin:gitolite-adminlubgit clone foo:newRepo

Pierwsze polecenie pozwoli ci sklonowaćgitolite-admin repo (ponieważ robisz to używając publicznych git i prywatnych kluczy ssh, więc masz do tego prawa).
Możesz użyć tego lokalnego klonu do umieszczeniafoo.pub wkeys katalog i zadeklarowaćnewRepo wconfig plik.
Następnie odpychasz repo (a Gitolite robi swoją magię, tworząc nowe repo, dodając zawartośćfoo.pub do~git/.ssh/authorized_keys dla ciebie za pomocą skryptu wymuszonego polecenia w celu przechwycenia wszelkich poleceń ssh emitowanych przezfoo).

(Wolę nazywać ten skrót ssh ”gitadmin'zamiast git, nawet jeśli klucze publiczne / prywatne są nazywane'git.xxx', bo 'gitadmin„lepiej przekazujezamiar poleceń ssh, które z nim zrobisz: będziesz zarządzać prawami dostępu git)

Drugie polecenie umożliwia klonowanienewRepo i pracować nad tym.

Zauważ, że:

ssh gitadminlubssh foo

wyświetli wersję gitolite i prawa związane z kluczami ssh używanymi przez poszczególne skróty ssh ”gitadmin' i 'foo”, jak zdefiniowano w~foo/.ssh/config plik.

Do tej pory przestrzegałem wszystkich instrukcji i chociaż jestem w stanie klonować / pchać za pomocą użytkownika gitadmin (dawniej „git”), nadal nie mogę klonować / pchać za pomocą użytkownika, którego dodałem „foo”. W keydir znajduje się foo.pub i są one dodawane jako użytkownik w repozytorium „testing” w gitolite.conf. Jednakże, gdy próbuję zrobić „git clone foo: testing”, wciąż otrzymuję prośbę o pw foo, a następnie tę linię: „Nie można chdir do katalogu domowego / var / services / homes / foo: Brak takiego pliku lub katalogu fatal: „testowanie” nie wydaje się być repozytorium git fatal: zdalny koniec niespodziewanie rozłączył się ”. Jay
Próbuję ustawić katalog domowy, aby zarówno „gitadmin”, jak i „foo” (ponieważ są na tym samym komputerze) w / volume1 / git. Zaktualizowałem to już w su - gitadmin> vi .profile, su - foo> vi .profile i root> vi / etc / passwd. Nie jestem pewien, dlaczego nadal używa domyślnego katalogu „/ var / services / homes / foo”? Jay
Ok, więc mogłem poprawnie utworzyć użytkownika git, a także bez problemu uzyskać dostęp do NAS za pomocą git. Co więcej, próbuję mkdir $ HOME / bin jak w kroku 6 w sekcji „Konfigurowanie profilu użytkownika hostującego Git i katalogu domowego” dla mojego użytkownika „foo”, ale otrzymuję ten błąd: „mkdir: nie można utworzyć katalogu” / volume1 / home / foo / bin ': Odmowa uprawnień ”. Zrobiłem klucze i umieściłem je w odpowiednich miejscach, a także naprawiłem plik /volume1/home/foo/.profile, aby odzwierciedlić właściwą ścieżkę do katalogu domowego foo. Czy brakuje mi czegoś? Jay
Właściwie byłem w stanie zrobić to wszystko w porządku dla użytkownika „git”. Ale próbuję 1) skonfigurować użytkownika „foo” na moim komputerze (tak jak użytkownik, którego chcę na moim komputerze, nie jest „root” ani „git”, ale „foo”) i 2), aby skonfigurować nowy repo „newrepo”. Dodałem foo.pub do gitolite-admin / keydir i edytowałem gitolite-admin / gitolite.conf, więc jest „repo newrepo” z „RW + = foo”. Następnie ssh jako root, wpisz „su - foo”, „vi .profile” i dodaj w tych wierszach w kroku 4 „Konfigurowanie profilu użytkownika hostingowego Git i katalogu domowego”, „profil .profile”, Jay

Powiązane pytania