bryanpkc/corkscrew
FreeA tool for tunneling SSH through HTTP proxies
FreeFree tier
About bryanpkc/corkscrew
Corkscrew is a tool for tunneling SSH connections through HTTP proxies. It allows users to connect to SSH servers from networks that only permit HTTP traffic by encapsulating SSH within HTTP CONNECT requests. It supports proxy authentication and has been tested on various Unix-like systems (HPUX, Solaris, FreeBSD, OpenBSD, Linux) and Windows via Cygwin, as well as with multiple proxy servers including Gauntlet, CacheFlow, JunkBuster, and Apache mod_proxy. The project is hosted on GitHub as a preservation of the original code after the primary distribution site went down.
Key Features
Tunnels SSH connections through HTTP proxies using the CONNECT method
Supports HTTP proxy authentication via a credentials file
Cross-platform: compiled on HPUX, Solaris, FreeBSD, OpenBSD, Linux, and Win32 with Cygwin
Tested with Gauntlet, CacheFlow, JunkBuster, and Apache mod_proxy
Simple command-line usage integrated with SSH config
Pros & Cons
Pros
- Lightweight and simple to configure with SSH's ProxyCommand
- Open source with a permissive license (GPL)
- Supports HTTP proxy authentication for secured proxies
- Interoperable with various proxy servers on multiple operating systems
Cons
- Authentication feature has sporadic issues, especially with Microsoft Proxy Server
- Requires manual compilation from source for most users
- Project maintenance uncertain (original site defunct; this repository is an archival fork)
- Only works with HTTP proxies; does not support SOCKS or other protocols
Best For
Bypassing network firewalls that block SSH but allow HTTP trafficConnecting to remote SSH servers from restrictive corporate or public networksSecure access to internal SSH servers via an HTTP proxy
FAQ
How do I install Corkscrew?
Install development tools (e.g., build-essential on Debian/Ubuntu, 'Development tools' group on Red Hat/Fedora), clone the repository, run 'autoreconf --install', then './configure', 'make', and 'sudo make install'.
How do I use Corkscrew with SSH?
Add the line 'ProxyCommand /usr/local/bin/corkscrew proxy.example.com 8080 %h %p' to your ~/.ssh/config file, replacing proxy.example.com and 8080 with appropriate values.
How do I use HTTP authentication with Corkscrew?
Create a file containing 'username:password', set permissions to 'chmod 600', and include the file path as a fourth argument in the ProxyCommand line (e.g., 'ProxyCommand ... ~/.ssh/myauth').
Which HTTP proxies has Corkscrew been tested with?
It has been tested with Gauntlet, CacheFlow, JunkBuster, and Apache mod_proxy.
Who is the original author of Corkscrew?
The original author is Pat Padgett. The repository is maintained by Bryan Cha (bryanpkc) as a preservation of the code.