Descobri que o problema era que eu chamava rsync com sudo e, portanto, estava executando como root. Portanto, ssh chamado via rsync não usou os arquivos ~/.ssh/id* do meu usuário, mas procurou /root/.ssh/id_* e não encontrou nenhum.
Eu copiei os arquivos ~/.ssh/id* para /root/.ssh/ e agora funciona.