I have a machine with a public IP. I want to remote portforward one of the
webserver port (80) to this machine. The webserver is apache with 5
virualhosts. If I forward the connection to the public IP machine, I am not
able to get the corresponding webpages from the virtualhosts. Instead I am
getting all from one virtualhost. Is there a way to distinguish the
virtualhost while forwarding. ?

There is no problem with the apache configuration as I am getting the
correct pages from the localnetwork.

ssh -g -R 8080:v1.local.com:80 publicIP
ssh -g -R 8081:v2.local.com:80 publicIP
ssh -g -R 8082:v3.local.com:80 publicIP