This article explains how to connect to a ssh server located on the internet from a local network protected by a firewall through a HTTPS proxy.
Requirement are :
The ssh daemon need to listen on 443 port. To accomplish this, just edit this file (on debian system) /etc/ssh/sshd_config
and add this line :
Port 443
Then restart the daemon :
sudo /etc/init.d/ssh restart
I suppose you are on a Linux system (debian for example). First you have to compile the connect binary which will help your ssh client to use proxies (HTTPS in our case). Then you have to configure your ssh client to tell him to use HTTPS proxy when he tries to connect to your ssh server.
connect
software :connect-proxy
package :sudo apt-get install connect-proxy
cd /tmp/ wget http://www.meadowy.org/~gotoh/ssh/connect.c gcc connect.c -o connect sudo cp connect /usr/local/bin/ ; chmod +x /usr/local/bin/connect
~/.ssh/config
file and add these lines :## Outside of the firewall, with HTTPS proxy Host my-ssh-server-host.net ProxyCommand connect -H proxy.free.fr:3128 %h 443 ## Inside the firewall (do not use proxy) Host * ProxyCommand connect %h %p
ssh my-ssh-server-host.net
For example to connect to in ssh github.com
:
Host github.com ProxyCommand=ssh my-ssh-server-host.net "/bin/nc -w1 %h %p"
Discussion
Works damn good. Thanks.
Thanks a ton for posting this, works great behind my corporate firewall. Now I can run Ubuntu in a VM in peace.