When I access a repository using svn+ssh, my password is not cached in ~/.subversion/auth/. How do I avoid having to type it so often?

SSH has its own passphrases and its own authentication-caching scheme that is external to Subversion. As a result, SSH must be set up independently of Subversion.

OpenSSH includes ssh-keygen to create the keys, ssh-agent to cache passphrases, and ssh-add to add passphrases to the agent's cache. A popular script to simplify usage of ssh-agent is keychain. On Windows, PuTTY is a popular alternative ssh client; see PuTTYgen to import OpenSSH keys and pageant to cache passphrases. Setting up ssh-agent is outside the scope of this document, but a Google search for "ssh-agent" will quickly get you answers. See the links below for more information.

For each user who needs svn+ssh access, generate a new ssh public-key pair that they will use only for Subversion - not for logging in normally. Have them give the keypair a distinct name, like ~/.ssh/id_dsa.subversion. Add the public part of the key to their ~/.ssh/authorized_keys file on the server machine, after first inserting a bit of magic at the beginning of the line before the word ssh-rsa or ssh-dss, like this: before ssh-dss AAAAB3Nblahblahblahblah after command="/opt/subversion/bin/svnserve -t" ssh-dss AAAAB3Nblahblahblahblah.

Obviously, replace /opt/subversion/bin/svnserve with whatever is appropriate for your system. You also might want to specify the full path to the Subversion repository in the command (by using the -r option), to save your users some typing. The command= magic causes sshd on the remote machine to invoke svnserve, even if your user tries to run some other command. See the sshd(8) man page (section AUTHORIZED_KEYS FILE FORMAT) for details. Now when your users run the Subversion client, make sure they have an SVN_SSH environment variable that "points to" the private half of their keypair, by doing something like this (for the Bourne Again shell): SVN_SSH="ssh -i $HOME/.ssh/id_dsa.subversion" export SVN_SSH.

Related information
http://mah.everybody.org/docs/ssh
http://kimmo.suominen.com/docs/ssh/