I want to connect my raspberry pi from outside of my home network and trying to connect from my office. I dont want to do by using port forwarding. Is there any good way to achieve this.
I use a website called weaved which allows you to connect via ssh, http, or almost any protocol for free. However, there are limitations to the session times and the remote devices. Usage with the raspberry pi is super easy assuming you are using raspbian(see their instructions on how to set it up with the raspberry pi.)
Well there are 2 solutions without using extra software.
First solution is the get your Pi to call you at the office. But you need to enable port forwarding at the office though. I am not sure if that is possible for you. You basically get your Pi to SSH to you, creating a reverse proxy so to speak.
Second solution is to get a VPS, like say digital ocean droplet. Then both your Pi and Office call the VPS (both Pi and Office PC initiate outgoing connection which then automagically opens a port in NAT for that session) This may require a bit more config on the VPS but essentially like double reverse proxying.
Otherwise, without opening a port on your router (NAT) - The router doesnt know where the packets need to go to. A bit like a firewall but dumber. When you call out the router knows where to send the replies too. If you cannot log into the router you can try doing UPNP. A home router should work fine, more commercial ones have this disabled for most ports.
You can bypass some strict firewalls by SSH'ing over port 80. Some more clever routers inspect packets to see if it is truly HTTP traffic and not some other stuff going on. Bypassing that, the only way I have done that is to have a 3G/4G connection to bypass the corporate firewall.. sneaky.. but they can't block that traffic.
What comes to mind is a 3rd party (closed source) solution called Hamachi (see Hamachi for Linux) They have a beta version for pi/arm available. Depending on office policy you may however not be allowed to do that.
With Hamachi, both ends connect to the Hamachi server and communicate via a dedicated encrypted (private) virtual network. If I remember well, up to 5 participants can take part in each network for free.
If your intent is to host a webserver then your best bet is using some sort of a reverse SSH tunnel to bypass the CGNAT, typical options to do that is using a service like Ngrok (and other paid alternatives), localtunnel (slightly buggy and reliability issues), or serveo.net (free to use with limitations).
Here's a handy guide, Access your Raspberry Pi from internet, that can walk you through the process of setting up a reverse SSH on a Raspberry Pi, but presumably it can be applied on any linux system with terminal.
I solved the same issue using PiTunnel.com. No port forwarding required.
Simple to set up and gives you a remote terminal accessible from anywhere. I can also monitor my Pi's health and access the web server running on my Pi.
(Full disclosure, I'm the creator of PiTunnel and we created it specifically to solve this problem for ourselves and others looking to do the same thing)