Clienții Subversion accesează repository-urile HostX prin SSH. Un cont de găzduire shared are o singură autentificare SSH, ceea ce ridică o problemă: nu vrei să comunici parola contului altor utilizatori (le-ar da acces total), iar commit-urile ar apărea toate de la același utilizator.
Soluția: creează o pereche de chei SSH separată pentru fiecare utilizator. Astfel poți urmări cine face modificări și poți revoca ușor accesul unui utilizator, fără a-i afecta pe ceilalți.
Pași generali
- Fiecare utilizator generează o pereche de chei SSH și trimite cheia publică proprietarului contului.
- Proprietarul adaugă cheia publică în
~/.ssh/authorized_keyspe server. - Fiecare utilizator configurează clientul SVN să folosească cheia privată.
SVN tunneling (restricționarea accesului)
Pentru a restrânge accesul unei chei doar la un repository și a atribui un nume de utilizator SVN, editează ~/.ssh/authorized_keys și adaugă la începutul liniei cheii respective:
command="svnserve -t --tunnel-user=SVNNAME -r /home/USERNAME/REPOSITORY",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...
Înlocuiește SVNNAME (numele SVN atribuit — toate commit-urile îi vor fi asociate), USERNAME (utilizatorul cPanel) și REPOSITORY (directorul repository-ului). Opțiunea -r setează directorul root virtual, împiedicând accesul în alte directoare.
Listarea unui repository:
svn list svn+ssh://username@example.com/project