We've written about our setup in https://www.andysayler.com/output/pdf/csvm-sigcse14-paper.pd....
The website for our current VM is at http://foundation.cs.colorado.edu/vm/.
Here's how it works: the professor prepares an Ubuntu VM with the entire development environment set up inside it, and then just provides the image link for the VM. The students can easily install VirtualBox, and then all they have to do is download the image and run off that.
I have VMs on an external hard drive that are accessible to me via Windows and Ubuntu (fairly sure I've accessed them on my MBP as well, not sure). I'm using VirtualBox, so I set up the initial connectivity stuff, point at the existing vhd, and then I'm running right along by launching the VM.
Where feasible, I think the "code locally, run remotely" concept works quite well, especially as most IDE's support at worst FTP upload.