Remote access

I’m trying to connect some remote phones Linksys SPA921 with my Elastix system.
I have 4 offices, 3 of them have the phones ( with 20 phones each) and another one with the elastix system running. All of them have internet access. I can’t have a server in every location because there’s only one primary access to our phone company which is in the office where the Elastix Server is installed.
I read somewhere that it’s possible to connect remote phones to our asterisk server through port forwarding. Is this the best solution? Can anyone give me some tips?
Is there a better way to solve my problem?