I'm one of those people who don't like having a private key without a passphrase.
To get around this without too much trouble, on my local box (the one I'm backing up to) I have a perl wrapper that does the following:
1. Asks for the ssh key passphrase.
2. Use Schedule::Cron to set up a schedule to run rsnapshot and then detach so it's running in the background.
3. Each time Schedule::Cron runs the backup loop, it takes the saved passphrase, runs ssh-agent to get the right credentials for the backup user, runs rsnapshot, then kills the agent.
This solves the following concerns for me:
1. Remote machine (the one being backed up) still has a passphrase on the ssh key.
2. Local machine (the one being backed up to) doesn't have a passphrase sitting on disk somewhere.
3. The ssh-agent only has the credentials when needed.
Downsides are:
1. Need to manually restart the backup wrapper if the local machine goes down or is rebooted.
2. Passphrase is stored in memory somewhere all the time. This is only an issue if someone gets root access on my local box, and if that happens, I have bigger problems to worry about.
--John