Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. SSH
  3. switcher

switcher

NOASSERTIONGov1.0.1

A proxy server that runs SSH and HTTP(S) on the same port by detecting the protocol of incoming connections.

GitHubGitHub
903 stars70 forks0 contributors

What is switcher?

Switcher is a proxy server that allows SSH and HTTP(S) services to run on the same network port by detecting the protocol of incoming connections. It solves the problem of managing multiple ports for different services, simplifying firewall configurations and reducing administrative overhead.

Target Audience

System administrators, DevOps engineers, and developers who need to run both SSH and web services on servers with restricted port availability or simplified network setups.

Value Proposition

Switcher offers a lightweight, Go-based alternative to similar tools like sslh, with easier extensibility through Go interfaces and better performance under load using goroutines instead of forking processes.

Overview

Run SSH and HTTP(S) on the same port

Use Cases

Best For

  • Running SSH and web services on a single port behind restrictive firewalls
  • Simplifying server configurations when only one port is available
  • Reducing administrative overhead for multi-service deployments
  • Learning about protocol detection and proxy implementation in Go
  • Creating lightweight alternatives to more complex port-sharing solutions
  • Testing SSH and HTTP services through a unified access point

Not Ideal For

  • Environments requiring support for multiple protocols beyond SSH and HTTP(S), such as FTP or SMTP
  • High-traffic production systems needing advanced load balancing, monitoring, or clustering features
  • Teams without Go expertise who may find it difficult to extend the tool for custom protocols

Pros & Cons

Pros

Efficient Protocol Detection

Uses Go's interfaces to automatically identify SSH and HTTP(S) connections by analyzing initial bytes, enabling seamless routing without manual configuration.

Lightweight Architecture

Leverages goroutines instead of forking processes, reducing CPU overhead and improving performance under concurrent loads, as highlighted in the comparison with sslh.

Simple Command-Line Configuration

Offers straightforward setup via flags like --listen, --ssh, and --default, with clear examples in the README for common use cases.

Extensible Design

Built with clean Go interfaces, making it easy to add new protocol support by implementing matcher interfaces, though this requires coding effort.

Cons

Limited Protocol Support

Only implements SSH and HTTP(S) out of the box; adding other protocols requires Go development, which may not be feasible for all users.

Sparse Documentation and Ecosystem

The README is minimal, lacking detailed guides or troubleshooting resources, and as a niche tool, community support is limited compared to alternatives like sslh.

Learning Exercise Origins

Admitted to have started as a learning project, which might imply less focus on production-ready features or long-term maintenance stability.

Frequently Asked Questions

Quick Stats

Stars903
Forks70
Contributors0
Open Issues3
Last commit7 years ago
CreatedSince 2015

Tags

#proxy#http#proxy-server#protocol-detection#port-sharing#golang#https#network-utilities#go#server-management#ssh

Built With

G
Go

Included in

SSH2.8k
Auto-fetched 22 hours ago

Related Projects

ngrokngrok

Unified ingress for developers

Stars24,414
Forks4,246
Last commit2 years ago
sshuttlesshuttle

Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling.

Stars13,598
Forks795
Last commit1 day ago
sshfssshfs

A network filesystem client to connect to SSH servers

Stars7,693
Forks549
Last commit20 days ago
sslhsslh

Applicative Protocol Multiplexer (e.g. share SSH and HTTPS on the same port)

Stars5,120
Forks398
Last commit2 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub