I'm pretty happy with VNC
with JPEG compression (which not all VNC implementations support). Depending on the use-case, I either use TigerVNC `vncserver` (creates a virtual X11 display, in my experience OpenGL performs very poorly), or TigerVNC `x0vncserver` (which attaches to a real/existing X11 display and polls it to serve it over VNC; OpenGL performed normally).
TurboVNC is a fork of TigerVNC that has improved OpenGL performance. I can't comment on it too much.
I either connect to VNC directly on :5900 if I'm on the same LAN, or I `ssh -L5901:localhost:5900 server-box`, then `vncviewer localhost:5901`.