When you write a code, like a web development, you would access localhost:3000 to check the progress. Or when you write an OAuth app, so localhost is needed when you test this out. How do we deal with it? The answer is SSH local port forwarding. There is a lot of software to do SSH local port forwarding but simply, you can run the below on your local terminal.
ssh -NT -o "ServerAliveInterval 60" -o TCPKeepAlive=yes -o "ServerAliveCountMax 120" -L 8000:localhost:8000 <username>@<hostname>.wazaterm.com
Using the above, the connection stops and won't automatically reconnect. For example, if you finish the work and on the next day, when you unlock the screen, the connection is gone. You need to run the process again. In order to avoid this case, use autossh which reconnects automatically when you come back.
You can search the binary on your platform.
$ bew install autossh # macOS $ sudo apt install autossh # crostini on chromeOS
Then, run
autossh -M 50000 -NT -o "ServerAliveInterval 60" -o TCPKeepAlive=yes -o "ServerAliveCountMax 120" -L 8000:localhost:8000 <username>@<hostname>.wazaterm.com
I wrote a simple bash script to run multiple local port forwarding.
$ cat autossh.sh #!/bin/bash autossh -M 50000 -NT -o "ServerAliveInterval 60" -o TCPKeepAlive=yes -o "ServerAliveCountMax 120" -L 3000:localhost:3000 username@hostname.wazaterm.com & autossh -M 50100 -NT -o "ServerAliveInterval 60" -o TCPKeepAlive=yes -o "ServerAliveCountMax 120" -L 5000:localhost:5000 username@hostname.wazaterm.com & autossh -M 50200 -NT -o "ServerAliveInterval 60" -o TCPKeepAlive=yes -o "ServerAliveCountMax 120" -L 9222:localhost:9222 username@hostname.wazaterm.com &
Ok, now you never feel these ports actually exists remotely.