Scenario: you are creating a REST service which needs to be exposed to the public even in early stage of development due to an upstream provider which sends back feedback data from a webhook API.
You are also behind a NAT so you’d have to port forward yourself out but you can’t do that for whatever reason. Or maybe you are behind a firewall and 7 proxies.
All you need is an external server with a public IP. Then, on your machine:
ssh -R 0.0.0.0:8080:localhost:8080 server_user@public_server_ip
In the above example, I used port 8080 which my REST service uses when I develop. On your public server, make sure you have
GatewayPorts yes
in /etc/ssh/sshd_config
. If it is missing, add it.
And that’s it.. your local REST service is now publicly accessible via public_server_ip:8080.
a-m-a-z-i-n-g