This is a fun little trick I learned while traveling this weekend. When I’m not on my home network, I often use ssh -D to dynamically forward all of my traffic via SOCKS proxy to a remote server. This weekend though, I found myself trapped in a network with only an HTTP proxy to access the internet, so I couldn’t even check my email via HTTPS. The solution was to use connect.c to relay SSH through the HTTP proxy. I temporarily added two lines to my SSH config that proxied all host connections through the HTTP proxy.
ProxyCommand connect -H xxx.xx.xxx.x:80 %h %p
Then I set up my SSH SOCKS proxy as usual.
ssh -ND 8822 email@example.com
I used connect.c, but a friend had success with corkscrew.