The key to this method working is that subversion contains a handy component called svnserve which allows it to be tunnelled through a ssh session that authenticates with a key that only allows access to a single command tailored to set the subversion username. ssh itself supports this out of the box by setting parameters in its authorized_keys file.

Server side installation

Here is a shell script that covers the steps I used to install subversion. I recommend you run it line by line and check for later versions but if you're feeling brave then just download it to your Host Monster account, making it executable and actually launching it by entering the following commands:

wget www.sharpstep.com/Articles/HostMonster-svn/svn-install.sh
chmod a+x svn-install.sh
./svn-install.sh

Alternatively here it is:


You'll see that the end of this procedure I'm recommending downloading another small script I've written which will automate the process of creating a new key for a subversion user and adding that to the authorised list. If you want to do it by hand or want to add a pass phrase to the key or use a different encryption or whatever here's the code of the script:


Now this is set up you need to get your users to do a client install and send you the public key they've generated.

Client/user installation

Tortoise SVN (windows)


Smart SVN (cross platform java)

  • Generate a key pair
  • Download and install Smart SVN.
  • Now start the client and select the Project->Check Out... option
  • Under the Repository drop down hit the Manage... button to set up the connection

  • Client/user installation

    Xcode (OSX)