For the sake of the example, we'll consider that you want to commit as olduser on a host ( to which you are known as newuser.

You need a dedicated key for the Subversion connection. So, if you already use one key for general SSH access, you must generate a new one. Let's assume that the dedicated key lies in ~/.ssh/my_svn_identity.

Now, create/edit your ~/.ssh/config file and add the following:

The Host property is anything you want. In particular, it doesn't need to be a valid name. It's just an alias we'll use for our Subversion connections. The IdentitiesOnly property guaranties that, even if an SSH agent is running and knows the key for general SSH access to, the SSH connection to will use the right key.

It's now time to change the server configuration (you don't need a root access). Copy the new key to the server (ssh-copy-id -i ~/.ssh/my_svn_identity, and log on the server (with the general access key). Edit the ~/.ssh/authorized_keys file and prepend the line of your Subversion key so that it looks like the following:

command="/usr/bin/svnserve -t --tunnel-user=olduser -r /path/to/your/subversion/repository/on/the/host",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa [KEY GOES HERE] whatever@yourlocalhost

That's it! Now, you can checkout and commit on svn+ssh:// (no need to set a repository path since it's hard-coded onto the server): you will appear as olduser.