Utwórz użytkownika SSH z ograniczonymi uprawnieniami do korzystania tylko z repozytorium Git


12

Mam repozytorium git hostowane na moim serwerze SunOS, z którego korzystam zdalnie przez ssh

git clone ssh://myUser@mydomain.com/path/to/git

Teraz muszę dodać więcej użytkowników, aby uzyskać dostęp do tego repozytorium, ale nie jestem pewien, jak to zrobić.

Dodałem jeden testUser do ssh, ale nie wydaje się ograniczać uprawnień tego użytkownika do używania tylko git.

testUser jest w stanie ssh przeglądać i przeglądać cały serwer.

Jak mogę utworzyć użytkowników, którzy mogą uzyskiwać dostęp do git tylko zdalnie, aby klonować / wyciągać / wypychać itp

dzięki

Odpowiedzi:


12

Możesz rozważyć użycie gitolitu dla jednego użytkownika zamiast konfigurowania wielu użytkowników powłoki git (i wymaganych uprawnień grupy i grupy, aby mogli oni współużytkować dostęp do repozytoriów).

gitolite działa pod jednym, normalnym użytkownikiem na serwerze i używa kluczy publicznych SSH w celu różnicowania dostępu do repozytoriów Git (zobacz „ jak gitolite używa ssh ”, aby uzyskać szczegółowe informacje o tym, w jaki sposób gitolite dokonuje identyfikacji na podstawie SSH). gitolite oferuje kontrolę dostępu dla poszczególnych repozytoriów, gałęzi, a nawet niektórych ścieżek.


1
+1 za gitozę ... Zostało wykonane dokładnie dla tej konfiguracji.
Jeremy Bouse

12

Zasadniczo masz dwie opcje.

  1. Jak wspomniano topdog, kiedy tworzysz użytkowników na serwerze, ustaw ich powłokę na git-shell ( wpis książki tutaj ). Pozwoli to użytkownikowi zalogować się przez SSH, ale zamiast uruchamiać normalną, w pełni funkcjonalną powłokę (np. Sh, bash itp.), Uruchomi git-shell, który zapewnia dostęp tylko do funkcji git.

  2. Alternatywnie możesz udostępnić swoje repozytoria za pomocą innego protokołu, takiego jak TCP (przy użyciu git-deamon ) lub HTTP / HTTPS. Poleciłbym tylko taki scenariusz dla dostępu tylko do odczytu.

Wspominasz, że chcesz obsługiwać funkcję „push” dla swoich użytkowników, więc naprawdę powinieneś wybrać opcję nr 1.


5

musisz zmienić ich powłokę na git-shell, co da im dostęp tylko do funkcji git.


Dzięki topdog. Zasadniczo użytkownik będzie używał własnej powłoki git na swoim komputerze Mac. Naprawdę nie chcę, żeby mógł ssh do serwera. Więc jeśli repozytorium git znajduje się na mydomain.com z komputera testUser / Mac, w terminalu może po prostu poprosić o klonowanie ssh: //myUser@mydomain.com/path/to/git zostanie poproszony o podanie hasła, a następnie pobierz repo. Właśnie próbowałem teraz ustawić jego powłokę na git-shell. Monituje podczas wywoływania klonowania, ale hasło jest odrzucane.
Bach,

musisz ustawić powłokę myUsers na git-shell, jeśli wszystko, co chcesz, aby działały na serwerze, to uruchamianie komend git i brak możliwości włożenia powłoki. Aby wyświetlić monit o hasło, użyj kluczy. Bardziej szczegółowe omówienie git na serwerze znajduje się w darmowej książce git progit.org/book/ch4-0.html
topdog

dzięki za odniesienie do książki! bardzo pomocny. Skończyło się na użyciu gitolitu, ale wciąż mam problemy z konfiguracją.
Bach

git-shell : "Jest to powłoka logowania dla kont SSH w celu zapewnienia ograniczonego dostępu do Git. Umożliwia wykonywanie tylko poleceń Git po stronie serwera implementujących funkcję pull / push, a także poleceń niestandardowych znajdujących się w podkatalogu o nazwie polecenia git-shell-w katalog domowy użytkownika ”. W systemie Linux dodaj „/ bin / git-shell” do „/ etc / shells”, a następnie „usermod --shell / bin / git-shell $ USER”. Przy okazji, książka git jest teraz na git-scm.com/book/en/ch4-0.html
David Tonhofer

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.