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 rsa

Pod 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-PUBLICZNY

Opcja --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_keys

Katalog .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"