Script to start a Chrome browser with an SSH Socks5 proxy
Friday, February 27th, 2015
Socks5 proxies are great. They allow you to tunnel all traffic for applications that support Socks proxies through the proxy. One example I frequently use is starting a Chrome window that will do everthing as if it was an a remote machine. This is especially useful to bypass firewalls so you can test websites that are only available on localhost on a remote machine, or sites that can only be accessed if you’re on a remote network. Basically it’s a poor-man’s application-specific VPN over SSH.
Normally I run the following:
ssh -D 8000 -N remote.example.com & chromium-browser --temp-profile --proxy-server="socks5://localhost:8000"
However that quickly becomes tedious to type, so I wrote a script:
#!/bin/bash HOST=$1 SITE=$2 if [ -z "$HOST" ]; then echo "Usage; $0 <HOST> [SITE]
" exit 1 fi while `true`; do PORT=$(expr 8000 + $RANDOM / 32) # random port in range 8000 - 9000 if [ \! "$(netstat -lnt | awk '$6 == "LISTEN" && $4 ~ ".$PORT"')" ]; then # Port not in use ssh -D $PORT -N $HOST & PID=$! chromium-browser --temp-profile --proxy-server="socks5://localhost:$PORT" $SITE kill $PID exit 0 fi done
The script finds a random unused port in the range 8000 – 9000, starts a Socks5 proxy to it and then starts Chromium on that socks proxy.
Together with the excellent Scripts panel plugin for Cinnamon, this makes for a nice menu to easily launch a browser to access remote sites otherwise unreachable:
Update: Added a second optional parameter to specify the site you want the browser to connect too, for added convience.