Próbuję skonfigurować wspólne repozytorium git za pośrednictwem ssh, kopiując publiczne klucze użytkowników do authorized_keys. Naprawdę bardzo chciałbym, aby "nazwa użytkownika" z ssh-key była częścią historii commitów w repozytorium (tak aby użytkownik "joe" nie mógł po prostu ustawić swojej nazwy na "kate" - potrzebujemy jakiejś odpowiedzialności) . Czy jest jakiś sposób to zrobić?Czy mogę powiązać nazwę użytkownika ssh z commitem z git przez ssh?
Odpowiedz
Po prostu nie, nie ma mowy. Powodem jest to, że dane autora i dostawcy są ustawiane, gdy dokonywane jest zatwierdzenie, co zwykle dzieje się lokalnie. A git push
dzieje się później, aby wypchnąć istniejące zatwierdzenia do zdalnego repozytorium. Ponieważ zatwierdzenia są już wykonane i odwoływane przez skrót SHA1, nie można ich zmienić podczas operacji wypychania.
To, co możesz rozważyć, to posiadanie wstępnego lub aktualizacyjnego haka, który uniemożliwia użytkownikom wysyłanie potwierdzeń, których nie napisali, ale może to uniemożliwić wiele legalnych zastosowań. Może się okazać, że jedyną sensowną opcją jest zaufanie do użytkowników.
To nie zadziała z zdecentralizowanym charakterem git. Wyobraź sobie, że joe łączy gałąź rozwojową kate's. Istnieje commity z Joe i kate w swoim lokalnym klonem teraz:
* joe: Merge branch 'kate'
|\
| * joe: update foo
* | kate: fix test
* | kate: add test
|/
* joe: initial commit
If Joe popycha do centralnego repozytorium teraz, a ty egzekwowania nazwę użytkownika, Kate commity byłoby przypisać joe.
Na serwerze Git każdy użytkownik ma własne repozytorium git po stronie serwera. Może mógłbyś pozwolić użytkownikom tylko na popychanie tam, a ty miałbyś administratora wciągającego do "oficjalnego" repozytorium? W ten sposób istnieje pełna identyfikowalność i odpowiedzialność. Będziesz także mieć moderatora z ostateczną odpowiedzialnością.
To dobra sugestia, ale tak naprawdę nie chcemy pojedynczego administratora, ponieważ wszyscy użytkownicy są uznawani za równie zaufanych. Pojedynczy administrator byłby po prostu narzutem, którego unikamy jak ognia ... – krosenvold
- 1. Dwustopniowy import git przez ssh
- 2. Git i ssh z uprawnieniami
- 3. Czy mogę przekazywać zmienne env przez ssh?
- 4. Dostęp do repozytorium Git przez tunel SSH
- 5. Łączenie z ssh przez powłokę?
- 6. Git, SSH i ProxyCommand
- 7. ssh przez powłokę emacs?
- 8. Sklonuj repozytorium git przez ssh z nazwą użytkownika i hasłem Java
- 9. Git SSH klucz publiczny odmawia
- 10. konfiguracja kluczy ssh dla jenkins do opublikowania przez ssh
- 11. Skrypty MySQL z BASH przez SSH
- 12. Zmiana hasła SSH w Git
- 13. Jak skopiować folder przez SSH z Gulp?
- 14. przekazywanie zmiennych przez ssh
- 15. SSH z serwerem za firewallem
- 16. Subversion z ssh do uwierzytelniania
- 17. Jak połączyć się z MySQL z C# przez SSH
- 18. Zmiana nazwy użytkownika dla zatwierdzenia Subversion przez svn + ssh
- 19. Uruchamianie qemu zdalnie (przez ssh)
- 20. checkout svn + ssh z loginname
- 21. Uzyskaj klucz publiczny z serwera SSH
- 22. Wywołanie polecenia SSH z Jenkinsa
- 23. Jak tymczasowo zmienić użytkownika git ssh na pilocie zdalnego sterowania?
- 24. Klonowanie repozytorium Mercurial przez SSH
- 25. Czy mogę "wyłączyć" git-clone przez http?
- 26. Docker Toolbox SSH Login
- 27. Błąd w git mistrza Push Heroku przez ssh za pełnomocnika
- 28. Przykładowy kod SSH z Androidem
- 29. Korzystanie z kluczy SSH do weryfikacji użytkownika http
- 30. Przesyłanie portów SSH w pliku ~/.ssh/config?
Więc jeśli użytkownik zmienia nazwisko swojego komisarza/autora i adres e-mail i popycha jakiś zhakowany kod, zamieniając się w kolegę, nie ma nic, co mogłoby temu zapobiec na nagim poziomie repo? – pinkvoid