Why would I want to open a tunnel through my firewall?
Suppose you have one service (HTTP, SSH, etc) in one specific computer (Laptop, RPi, etc) that is behind a firewall that prevents anyone from the Internet to get access to it and you need to share it with another device from outside the network.
Go to NGROK [Link] and create one account.
Find the version of the system you want to share the service from.
Copy the link and download the NGROK in the host machine.
For a Linux 64 bits would be:
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
For a Raspberry Pi would be:
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip
In the host device, extract the zip content and insert the ‘authtoken‘ from your account:
unzip ngrok*.zip ./ngrok authtoken 1nGTE96CoM7lXK8A0e7FNvg4NiD_6FCzSWB6fV9pgjAHQafoh
Now just run the NGROK setting the method and the port of the service. Follow the example for an HTTP server running in the localhost:
./ngrok http 80
One window will open with the public address that redirects the traffic through the tunnel to the host device.
Copy and paste the generated address into a browser on any client computer to get access. As long as the NGROK still running the tunneled service will be available. Press CTRL + C to stop at any time.
If you want to tunnel the SSH port issue the command:
./ngrok tcp 22
For help:
./ngrok help