Back to rankings

antoniomika/sish

Gossi.sh

HTTP(S)/WS(S)/TCP Tunnels to localhost using only SSH.

ngrokserveosshtunneltcpwebsocketshttphttps
Star Growth
Stars
4.7k
Forks
332
Weekly Growth
Issues
23
2k4k
Feb 2019Jul 2021Jan 2024Jul 2026
ArtifactsGo Modulesgo get github.com/antoniomika/sish
README

sish

Open source SSH tunneling for HTTP(S), WS(S), TCP, aliases, and SNI.

If you like the simplicity of serveo/ngrok-style sharing but want to use plain SSH and run your own infrastructure, sish is built for that.

  • No custom client required for end users
  • Public and private tunnel workflows
  • Docker and binary releases
  • Designed for production-grade self-hosting

Docs | Managed Service | Releases | Docker Images | Sponsored by pico.sh

Why sish

sish runs an SSH server focused on forwarding and multiplexing. Users connect with commands they already know, and sish handles the routing.

Typical use cases

  • Share a local web app instantly over HTTPS
  • Expose a TCP service to a fixed or random external port
  • Create private TCP aliases that are only reachable through authenticated SSH
  • Route TLS traffic by SNI to multiple backends without terminating TLS

Quick Start

1) Try the managed service

The fastest way to validate your workflow:

ssh -R 80:localhost:8080 tuns.sh

This creates a public URL for your local app running on port 8080.

2) Self-host with Docker

Pull image:

docker pull antoniomika/sish:latest

Prepare directories:

mkdir -p ~/sish/ssl ~/sish/keys ~/sish/pubkeys
cp ~/.ssh/id_ed25519.pub ~/sish/pubkeys

Run:

docker run -itd --name sish \
	-v ~/sish/ssl:/ssl \
	-v ~/sish/keys:/keys \
	-v ~/sish/pubkeys:/pubkeys \
	--net=host antoniomika/sish:latest \
	--ssh-address=:2222 \
	--http-address=:80 \
	--https-address=:443 \
	--https=true \
	--https-certificate-directory=/ssl \
	--authentication-keys-directory=/pubkeys \
	--private-keys-directory=/keys \
	--bind-random-ports=false \
	--domain=example.com

Then connect:

ssh -p 2222 -R 80:localhost:8080 example.com

Forwarding Examples

HTTP tunnel

ssh -R myapp:80:localhost:8080 tuns.sh

Your app at localhost:8080 becomes available at https://myapp.tuns.sh.

TCP tunnel

ssh -R 2222:localhost:22 tuns.sh

localhost:22 is available at tuns.sh:2222

Private TCP alias

ssh -R mylaptop:22:localhost:22 tuns.sh

Access from another client:

ssh -J tuns.sh mylaptop

Feature Highlights

  • HTTP(S), WS(S), TCP forwarding, and multiplexing
  • TCP aliases for private internal-only access patterns
  • SNI proxy support for TLS-based backend routing
  • Optional load balancing modes for HTTP/TCP/SNI aliases
  • Service console support for inspecting forwarded requests
  • Key and password authentication with dynamic key reloading
  • Restrictive binding policies for safer multi-tenant setups

Local Development

Clone:

git clone git@github.com:antoniomika/sish.git
cd sish

Start locally:

go run main.go --http-address localhost:3000 --domain testing.ssi.sh

Or use:

make dev

Test a tunnel:

ssh -p 2222 -R 80:localhost:8080 testing.ssi.sh

testing.ssi.sh is configured to point to localhost for development.

Learn More

Community

Related repositories
anderspitman/awesome-tunneling

List of ngrok, Cloudflare Tunnel, Tailscale, and ZeroTier alternatives and other tunneling software and services. Focus on self-hosting.

ngroktunneling
21.5k1.1k
rathole-org/rathole

A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok.

Rustcrates.ioApache License 2.0nattunnel
13.9k796
rapiz1/rathole

A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok.

Rustcrates.ioApache License 2.0nattunnel
10.4k532
ffay/lanproxy

lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面、http代理、https代理、socks5代理...)。技术交流QQ群 736294209

JavaMavenlanproxynat
nat.nioee.com
5.9k1.6k
jinwyp/one_click_script

install latest or LTS linux kernel and enable BBR or BBR plus

ShellMIT Licensetrojanv2ray
5.1k1.4k
abhinavsingh/proxy.py

💫 Ngrok FRP Alternative • ⚡ Fast • 🪶 Lightweight • 0️⃣ Dependency • 🔌 Pluggable • 😈 TLS interception • 🔒 DNS-over-HTTPS • 🔥 Poor Man's VPN • ⏪ Reverse & ⏩ Forward • 👮🏿 "Proxy Server" framework • 🌐 "Web Server" framework • ➵ ➶ ➷ ➠ "PubSub" framework • 👷 "Work" acceptor & executor framework

PythonPyPIBSD 3-Clause "New" or "Revised" Licensehttp-proxypython3
abhinavsingh.com/proxy-py-a-lightweight-single-file-http-proxy-server-in-python/
3.5k631
sabri-zaki/EasY_HaCk

Hack the World using Termux

PythonPyPIApache License 2.0termuxhackers
2.4k256
bubenshchykov/ngrok

Expose your localhost to the web. Node wrapper for ngrok.

JavaScriptnpmngroktunneling
ngrok.com
2.4k319
AdrMXR/KitHack

Hacking tools pack & backdoors generator.

PythonPyPIMIT Licenseandroidwindows
adrmxr.github.io/KitHack/
2.1k269
rebel0789/codexpro

Use ChatGPT Developer Mode as a local coding agent for your repo through MCP.

JavaScriptnpmMIT Licenseapps-sdkchatgpt
rebel0789.github.io/codexpro/
1.3k126
hasanfirnas/symbiote

Your target's phone's front and back cameras📸 can be accessed by sending a link🔗.

PythonPyPIMIT Licenseandroidcameracamera-hacking
1.1k127