rsync from one remote to another
You should be able to set up an SSH tunnel from A->B and from A-C, and then rsync directly from B->C by going across that tunnel.
It's going to be a bit complicated, but basically you do the following:
- Set up an rsync daemon on a high port (say 20000) on B
- Set up a LocalForward A:20000 to B:20000 with ssh
- Set up a RemoteForward from C:20000 to A:20000 with ssh
- On C, rsync -av /path rsync://localhost:20000/path
Bear in mind that all this traffic will be going both in and out the network on A and being encrypted, so it will probably be pretty slow. it might be worth seeing if B is actually firewalled from C, you might be able to run the rsync server on a high port and connect directly.