Accessing your RaspberryPi ( or even laptops/servers) from outside your home network (meaning, from the internet) is not an easy task, because your home laptop or RaspberryPi has only local IP address ( in the 10.x.x.x range or 192.168.x.x range). It doesn't have a Public IP address that is visible from the Internet.
The simple answer to your question is use free online services like SocketXP which provides a secure public tunnel endpoint to SSH into your RaspberryPi from outside the home network.
Full disclosure: I am the founder of SocketXP.
The reason I recommend, SocketXP ( a third party service and not a self-hosted service) is that when you use SSH over the internet, it is highly secure. No one could decrypt your data without knowing your private key. Why go through the pain of hosting your own VM in the cloud just for the sake of getting a Public IP ( to act like a fulcrum to login to your RPi.)
SocketXP provides a simple, secure and easy way to access your home RaspberryPi from the outside network. It give you a free public IP. With SSH your data is encrypted end-to-end. Even SocketXP cannot decrypt your data connection.
SocketXP doesn't require you to hack any settings in your WiFi router. It works out of the box. To know how to setup your RaspberryPi to SSH from outside, read this blog on how to remote SSH into your RaspberryPi using SocketXP.
How to setup SocketXP:
Step1: Install SocketXP client on your RaspberryPi using the following command.
$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin
Step2: Connect SocketXP client with SocketXP Cloud Service using the following command. You need to register at https://portal.socketxp.com to get your unique auth-token.
$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"
Step3: Get a public tunnel endpoint to access your RaspberryPi from the internet.
$ socketxp -connect tcp://localhost:22
Tunnel Access -> tunnel.socketxp.com:35277
Step4: SSH into your RaspberryPi from the internet using the following command.
$ ssh email@example.com -p 35277
where "raspberry-username" is the username/password you use to SSH login to your RaspberryPi.