Pomoc - Multiuser SVN
Jeżeli chcesz dać dostęp kilku użytkownikom do swojego repozytorium SVN możesz to zrobić wykorzystując miły feature ssh: możliwość ograniczenia dostępu po zalogowaniu za pomocą kluczy do wybranego polecenia, w tym przypadku do wywołania svnserve.
Wygeneruj dla każdego użytkownika parę kluczy. Jeżeli korzystasz z Linuksa wydaj polecenie
ssh-keygen -t rsaPod Windows możesz skorzystac z programu PuTTYgen. Jeżeli przy generowaniu kluczy podasz hasło, użytkownik będzie je musiał wpisać przy każdym połączeniu. Jeżeli zdecydujesz się nie używać hasła, każdy kto ma dostęp do komputera z wygenerowanym kluczem będzie mógł swobodnie połączyć się do serwera. Wybór należy do Ciebie :)
Wygenerowany klucz prywatny zostaje na komputerze z którego użytkownik będzie się łączył (zapisz go na dysk), klucz publiczny wgraj na swoje konto do pliku .ssh/authorized_keys. I teraz to co najważniejsze - wpis w tym pliku powinien wyglądać tak:
command="svnserve -t --tunnel-user=USER",no-pty TYP-KLUCZA KLUCZ-PUBLICZNYOpcja --tunnel-user przekazuje do serwera SVN nazwę uwierzytelnionego użytkownika. Bez tego wszystkie commity były by widoczne jakby zostały wykonane przez jednego użytkownika. Typ klucza to np. ssh-rsa. Na końcu po spacji możesz dodać jakiś komentarz np. adres mailowy użytkownika. Pamiętaj o ustawieniu odpowiednich praw do authorized_keys
chmod 600 .ssh/authorized_keysKatalog .ssh/ powinien mieć prawa 700. Po stronie serwera to tyle co musisz zrobić, dalsza konfiguracja zależy od tego jakiego programu używasz do korzystania z SVNa. Jak skonfigurować połączenie w TortoiseSVN znajdziesz tutaj.
Jeżeli nie chcesz musieć podawać pełnej ścieżki przy połączeniu svn+ssh do wywołania svnserve dodaj opcję
-r /home/TwójLogin/www/katalog
czyli
command="svnserve -r /home/TwójLogin/www/katalog -t --tunnel-user=USER",no-pty TYP-KLUCZA KLUCZ-PUBLICZNY
W ten sposób podasz katalog z repozytoriami w którym ma być uruchomiony svnserve. W takiej konfiguracji przy połączeniu svn+ssh będziesz podawał ścieżkę względem tego katalogu.
Jeżeli chcesz użyć klucza SSH tylko do połączenia się przez SVNa (z tak skonfigurowanym kluczem już nie połączysz się do shella) ustaw zmienną środowiskową SVN_SSH
export SVN_SSH="ssh -i $HOME/.ssh/klucz_prywatny"