awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
yrutschle avatar

yrutschle/sslh

0
View on GitHub↗
5,004 stars·394 forks·C·gpl-2.0·18 viewswww.rutschle.net/tech/sslh/README.html↗

Sslh

sslh is a network proxy that runs a single service listening on one port, inspects the first data packet of each incoming connection, and forwards the traffic to the appropriate backend based on the detected protocol. It acts as a protocol multiplexer, transparent TCP proxy, and UDP router, while also functioning as a privileged port manager and connection resource manager. By inspecting initial packets, sslh can distinguish protocols such as SSH, HTTP, TLS, and OpenVPN, routing each connection to the correct backend service from a single listen port.

To operate efficiently without per-connection threads, sslh uses an asynchronous event-driven I/O architecture that handles thousands of concurrent connections in a single process. It avoids running with full root permissions by binding to restricted ports using Linux capabilities or by delegating socket ownership to systemd for on-demand startup. After initial setup, sslh restricts filesystem access with Linux Landlock to limit the damage from potential exploits. Connections can be forwarded transparently so that backend services see the original client IP address, and UDP flows are managed with a hash-based table and configurable timeouts.

sslh can operate behind an SSL-terminating proxy, and it enforces host-based access control rules per service while capping concurrent connections per protocol to prevent resource exhaustion. It also supports the PROXY protocol to preserve client IP information when transparent forwarding is not available.

Features

  • Single Port Protocol Multiplexing - Inspecting the first data packet to identify and forward SSH, HTTP, TLS, and OpenVPN connections to their respective backend services from one listen port.
  • Per-Protocol Connection Limiters - Capping the number of concurrent connections per protocol or listen port to prevent resource exhaustion from denial-of-service attacks.
  • Protocol Detection Forwarders - Inspects initial packets to detect protocols and route each connection to the correct backend service.
  • Transparent TCP Proxies - Forwards connections to backend services while preserving the original client IP address using routing deflection rules.
  • UDP Protocol Routing - Forwards UDP packets based on protocol detection, maintaining a flow mapping table with configurable limits and timeouts.
  • Capability-Based Port Binding - A service that binds to restricted ports using Linux capabilities to avoid running with full root permissions.
  • Privileged Port Bindings - Binding to restricted ports using Linux capabilities or systemd socket activation to run the whole process without root permissions.
  • Event-Driven Connection Multiplexing - Manages thousands of concurrent connections in a single thread using an event loop, avoiding per-connection thread overhead.
  • Event-Driven I/O - sslh uses an asynchronous event-driven I/O model to handle many concurrent connections efficiently without dedicating a thread per connection.
  • Socket-Activated Orchestration - sslh uses systemd socket activation to bind ports without root and start on demand, with an optional generator for socket unit files.
  • Systemd Socket Activation - Delegates socket ownership to systemd to bind privileged ports and start the daemon on demand without requiring root access.
  • Connection Resource Managers - A traffic manager that limits concurrent connections per port and enforces host-based access control via TCP wrappers.
  • PROXY Protocol Forwarders - Accepts and forwards PROXY protocol headers to backends so they receive the original client IP and port.
  • OpenVPN Connection Routings - Provides a dedicated mechanism to detect and route OpenVPN connections despite their delayed initial data packet.
  • UDP Session Management - Maintains a hash-based table of UDP flows with configurable connection limits and timeouts to handle demultiplexed datagrams efficiently.
  • TCP Wrapper Integrations - Enforcing host-based access rules per service and restricting filesystem access with Linux Landlock to limit damage from exploits.
  • Host-Based Access Restrictors - Checks connecting client IPs against host-based access rules per service before forwarding connections.
  • Landlock Filesystem Sandboxing - Applies Linux Landlock to restrict filesystem access after initial setup, limiting damage from exploits.
  • Network Tunneling - Applicative protocol multiplexer for sharing ports between SSH and HTTPS.

Star history

Star history chart for yrutschle/sslhStar history chart for yrutschle/sslh

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does yrutschle/sslh do?

sslh is a network proxy that runs a single service listening on one port, inspects the first data packet of each incoming connection, and forwards the traffic to the appropriate backend based on the detected protocol. It acts as a protocol multiplexer, transparent TCP proxy, and UDP router, while also functioning as a privileged port manager and connection resource manager. By inspecting initial packets, sslh can distinguish protocols such as SSH, HTTP, TLS, and OpenVPN,…

What are the main features of yrutschle/sslh?

The main features of yrutschle/sslh are: Single Port Protocol Multiplexing, Per-Protocol Connection Limiters, Protocol Detection Forwarders, Transparent TCP Proxies, UDP Protocol Routing, Capability-Based Port Binding, Privileged Port Bindings, Event-Driven Connection Multiplexing.

Which projects share features with yrutschle/sslh?

Projects with overlapping indexed features include: haproxy/haproxy — HAProxy is a high-performance TCP and HTTP proxy that distributes traffic across multiple backend servers to ensure… nikivdev/flow — Flow is an orchestration framework for designing and executing complex workflows using autonomous agents powered by… line/armeria — Armeria is a Netty-based microservice framework used for building high-performance asynchronous services. It functions… connectrpc/connect-go — Connect-go is a library for building type-safe remote procedure call services that are wire-compatible with gRPC and… ithewei/libhv — libhv is a high-performance C/C++ network library and event-driven I/O framework used to build TCP, UDP, SSL, HTTP,… apache/brpc — brpc is a high-performance C++ RPC framework and network programming library designed for building distributed…

Projects sharing features with Sslh

These projects share indexed features with Sslh. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • haproxy/haproxyhaproxy avatar

    haproxy/haproxy

    6,344View on GitHub↗

    HAProxy is a high-performance TCP and HTTP proxy that distributes traffic across multiple backend servers to ensure availability and fault tolerance for critical services. It operates in either TCP or HTTP mode, with an event-driven, single-threaded reactor that handles tens of thousands of connections without context switching, and supports kernel-level data transfer to minimize memory usage and latency. What distinguishes HAProxy is its configuration-file-first design, where all load-balancing rules and runtime behavior are defined in a declarative text file parsed at startup. It embeds a L

    Ccachecachingddos-mitigation
    View on GitHub↗6,344
  • nikivdev/flownikivdev avatar

    nikivdev/flow

    21,136View on GitHub↗

    Flow is an orchestration framework for designing and executing complex workflows using autonomous agents powered by large language models. It serves as a toolkit for constructing agentic pipelines and a runtime for managing agent lifecycles, session states, and tool execution. The project is distinguished by its support for hierarchical swarm management, where director agents decompose large projects into smaller tasks for specialized worker agents. It enables multiple coordination patterns, including sequential linear pipelines and concurrent execution where agents analyze tasks from differe

    Rustagentsautonomymoonbit
    View on GitHub↗21,136
  • apache/brpcapache avatar

    apache/brpc

    17,545View on GitHub↗

    brpc is a high-performance C++ RPC framework and network programming library designed for building distributed systems. It functions as a multi-protocol RPC server capable of hosting and detecting multiple communication protocols, including gRPC, Thrift, HTTP, Redis, and Memcached, on a single TCP port. The project distinguishes itself through high-throughput data transport and memory efficiency, utilizing RDMA-based transport to bypass the kernel TCP stack and zero-copy memory management to eliminate data duplication. It also implements the Raft algorithm for consensus-based state replicatio

    C++rpc
    View on GitHub↗17,545
  • connectrpc/connect-goconnectrpc avatar

    connectrpc/connect-go

    3,963View on GitHub↗

    Connect-go is a library for building type-safe remote procedure call services that are wire-compatible with gRPC and HTTP. It provides a Go implementation of Protocol Buffers for structured data exchange, enabling the creation of multi-protocol RPC servers and generated type-safe clients. The framework is distinguished by its polyglot protocol support, allowing a single server handler to serve requests using several different protocols simultaneously over HTTP. This includes the ability to toggle between different transport protocols for the same service and the use of pluggable content negot

    Go
    View on GitHub↗3,963
Compare all 30 related projects→