SSH access, tunneledthrough plain HTTPS.
gossh wraps your SSH traffic inside a WebSocket connection so it slips through networks that only allow HTTP and HTTPS — no changes to your SSH server required.
Built for networks that say no to raw SSH
Corporate firewalls, cloud security groups, and public Wi-Fi often block port 22 outright. gossh doesn't fight that rule — it rides on the traffic that's already allowed.
Lightweight
A small Go binary with minimal dependencies. Nothing to install on the SSH server itself.
Real-time
Full-duplex streaming over the WebSocket keeps the session responsive, not batched.
Firewall-friendly
Runs entirely over HTTPS on port 443, the one port almost every network leaves open.
Transparent
Once the tunnel is up, you connect with a standard SSH client like nothing changed.
How a connection actually travels
gossh doesn't replace SSH — it gives it a transport layer that looks like ordinary web traffic from the outside.
Getting connected
Four commands, run across two machines, get you from a blocked network to a working shell.
Install gossh
One line pulls the install script and puts the binary on your path.
Start the server on the remote machine
Run this where sshd is already active. gossh assumes SSH is on port 22 unless you tell it otherwise.
--ssh to point at a non-default SSH portExpose that port publicly
gossh speaks WebSockets over HTTP, so any HTTPS tunnel provider works. Copy the HTTPS URL it gives you.
# or
cloudflared tunnel --url http://localhost:7777
Start the client on your machine
Point it at the public URL from the previous step. This opens a local port for SSH.
--connect https://your-tunnel-url.trycloudflare.com \
--port 8888
Connect with a normal SSH client
No special flags needed — the tunnel is invisible to SSH itself.
Ready to get past the firewall?
gossh is open source, Apache-2.0 licensed, and welcomes contributions.
Get gossh on GitHub