The solution to this problem is to use the -i flag when connecting to the server:
ssh user@host -i ~/.ssh/id_dsa
You can also make this permanent for all servers by adding this line to your ~/.ssh/config:
IdentityFile ~/.ssh/id_dsa
The above solution is courtesy of Allan Odgaard, author of the excellent
TextMate editor.
He also has a theory about the cause of the problem:
ssh has some default search path for private keys, this string includes escape codes for user name, user folder and such.
so by default it will expand that string to find your key, and on leopard, one of these variables expands to NULL and hence you get that error.
so giving -i «private key» bypasses this search path string.