The best way to get around firewall restrictions is to implement a reverse tunnel, which would solve all of your problems.
Firewalls are built to block connections from home to workplace, but not viceversa. A reverse tunnel is a connection from work to home, which is supposed to be permanent. This connection allows a kind of piggy-back ride from home to workplace, whenever you feel like it.
You can implement reverse tunnels from both B and C (both Linux machines, no problems), provided you have an ssh server running on your Windows machine. I suggest you look up freeSSHd (as the name implies, it is free). Once you have set up on your windows machine, Google reverse tunnel linux, you will find plenty of explanations.
Another advantage of reverse tunnels is that you are not obliged to use a remote desktop connection (like ssh, which I will illustrate below), but you can use anything you want. For instance, you can use VNC instead of ssh for the piggy-back ride, and then you have a fully graphical session with your work pc from home.
If you want something quick and easy, install autossh on your Linux machines (it is a package which checks whether a given ssh connection, in your case the reverse tunnel, is up, and if it is not it automatically restarts it), then create a file called, say, auto,
make it executable, put this line in /etc/rc.local
/home/yourname/path/to/auto
and put this text into auto
#!/bin/bash
/usr/lib/autossh/autossh -M 6521 -f -p 22 -2 -N -R 8100:localhost:22 [email protected] -i /home/yourname/.ssh/yourHOMEcryptokey
Now, from home, you can connect with:
ssh -Y yourname@localhost -p 8100 -i /home/yourname/.ssh/yourWORKcryptokey
The first command uses port 6521 on your home pc to check whether the reverse tunnel works. It also instructs your home pc to send to port 22 of your work pc whatever your home pc receives on port 8100. The second command tries to open an ssh seance with itself on port 8100 but, because of what I just said, this communication attempt is automatically shipped to your work pc on port 22. Thus, you are faking to connect to your own home pc, the truth is your are connecting to your work pc.
Before setting this all up, you must make sure you can connect (just once) without autossh from your work pc to your home pc.
The use of cryptography is not mandatory, but it makes the communication much safer. There are billions of guides on how to do that on any OS on Google.