How can I configure VNC server so that it can be accessed only via SSH tunnel?
With the default VNC server setting, there are at least two ways for someone else to login to my computer: by directly logging into my VNC server and my SSH server. Two doors to worry about.
Bind your VNC server to localhost and do an SSH proxy to your server and tunnel VNC (client) over said proxy.
All you need is explained here: Reversing an ssh connection