Yves Rutschle

rutschle.net · Personal blog · on HN since 2010

Yves Rutschle writes about his small tools, mainly sslh, which lets HTTPS, SSH and other protocols share one port.

What HN saysHN commenters recommend sslh as a port multiplexer, though one notes that its use is visible to anyone watching the connection.
21HN people shared it
17linked it in comments
4stories submitted
129story points
3 years agolast shared
2010people per year2026

Most-shared posts

  1. 1
    SSLH – Access https and ssh from the same port
    15 people · 10 points · first shared 2010 · 2 comments on HN
  2. 2
    README
    4 people · first shared 2019
  3. 3
    The truth about C and Unix history
    1 people · 119 points · first shared 2015 · 77 comments on HN
  4. 4
    Sslh
    1 people · first shared 2021
  5. 5
    2012 April 000202
    1 people · first shared 2012

What HN people wrote when they linked it

28304283409234 · 2023-12-24
No love for sslh? “ Probes for HTTP, TLS/SSL (including SNI and ALPN), SSH, OpenVPN, tinc, XMPP, SOCKS5, are implemented, and any other protocol that can be tested using a regular expression, can be recognised. A typical use case is to allow serving several services on port 443 (e.g. to connect to SSH from inside a corporate firewall, which almost never block port 443) while still serving HTTPS on that port.” https://www.rutschle.net/tech/sslh/README.html
ph4te · 2016-05-23
I have been using sslh (http://www.rutschle.net/tech/sslh.shtml) on my servers where it is just myself logging in for a while and it works great for me!
eichin · 2023-12-16
That already has a (brutal) solution now - sslh https://www.rutschle.net/tech/sslh/README.html - the current version is more sophisticated, but it was originally just a perl script that would send the connection to sshd or the https web server, based on regex matching on an initial string (and I probably timing out and going to sshd if it didn't see one? Something like that, I haven't dug out the old code to check.)
fluential · 2021-08-31
You will like this one as well “SSL/SSH Multiplexer” http://www.rutschle.net/tech/sslh/
kej · 2021-08-31
Fixed link: https://www.rutschle.net/tech/sslh/README.html Note that while this is a handy tool, its use is apparent to anyone observing the connection.
icebraining · 2019-01-10
> if the server is also hosting some https website, then put it on an alternate ipv6 address (they are free if not cheap) and ssh into that. There's also sslh, which can multiplex the same port by detecting whether the incoming connection is TLS or SSH, and forwarding appropriately. It's pretty cool: https://www.rutschle.net/tech/sslh/README.html That said, I think this service is for people who need to use computers without ssh clients installed locally.
DDub · 2016-05-02
Sslh would give you this ability, if you're prepared to shim an extra program infront of your daemon; http://www.rutschle.net/tech/sslh.shtml
sschueller · 2015-08-02
Or use the good old sslh: http://www.rutschle.net/tech/sslh.shtml
blueskin_ · 2015-01-22
It's a nice idea, but far from the only implementation. sslh is nice as it doesn't need go, and is packaged for most distros: http://www.rutschle.net/tech/sslh.shtml
fluidcruft · 2015-01-21
sslh [1] (which is packaged and included in may linux and BSD distributions) has grown to support HTTP, SSL, SSH, OpenVPN, tinc, XMPP from the same port. It claims it can be extended to filter anything that can match with a regex. What I find lacking lately is I've mostly wanted to extend the forwarding/routing of ssh connections based on username (or better by identity) to different VMs or hosts, but I have no idea how to achieve that at the moment (without creating dummy users on the sshd server). [1] http://www.rutschle.net/tech/sslh.shtml Github: https://github.com/yrutschle/sslh
AceJohnny2 · 2015-01-21
> apt-cache search ssh http [...] sslh - ssl/ssh multiplexer http://www.rutschle.net/tech/sslh.shtml I mean, it's cool that you got the exercise of implementing this in Go and all, but I don't see what's new and interesting about it. (and another implementation in Perl almost 4 years ago: https://news.ycombinator.com/item?id=2395787) Edit: oh whoops, didn't get to OP's "Why not sslh" section :\ "The result is useful in its own right through use of Go's interfaces for protocol matching (making adding new protocols trivial), and lightweight goroutines (instead of forking, which is more CPU intensive under load)." Well alright, the first point I'll concede, though I'm wary of the "reinvented wheel" scent, the second point I'm even more uncomfortable with as I think it makes wild assumptions of the kind of environment this tool could be useful in.
spindritf · 2013-10-02
sslh[1] usually allows you to reach it even through fairly restrictive firewalls. At least unless they have their certs installed and inspect ssl traffic. [1] http://www.rutschle.net/tech/sslh.shtml
rd0 · 2012-08-30
Here is a better idea. If it looks like a duck, walks like a duck and quacks like a duck, is it a duck? Run ssh on port 443 at the same time you run a web server on the same port. http://www.rutschle.net/tech/sslh.shtml I've seen implementatios in about a page of C, which I can vet.
lmz · 2011-04-01
Something similar, written in C is sslh[1]. [1]: http://www.rutschle.net/tech/sslh.shtml
evaryont · 2010-07-22
Even better: Use SSLH[1], so you can still have an HTTPS server, but also connect to ssh on port 443. Set it up myself and my boss still doesn't know.. :) [1]: http://www.rutschle.net/tech/sslh.shtml
guylhem · 2012-08-21
This is interesting but incomplete. It may not survive to deep packet inspection or rate limiting. Even worse - your only S3 machine could get blacklisted, and I don't see why operators wouldn't share blacklist the way it's done to fight spam. So my suggestion is to have multiple alternatives instead, as in lines of defense. First, a simple SSH server also running a socks and a http proxy is useful. Easy to reach and configure - some browser work better with http proxy (or was it sock? Opera only supports one but I can't remember which at the moment) In the second line, you want to run the SSH server on a nonstandard port as the author does. I suggest multiplexing the port : simply run SSLH on both port 80 and 443, with the patch published on http://rutschle.net/pipermail/sslh/2012-April/000202.html But that will not look like a standard SSL connection. Even worse, if you use your own certificate - operators could deny all self-signed certificates. So get stunnel running on port 443 with a "usual" certificate instead, and pass the traffic on port 80 where you'll be happy to have SSLH or whatever you prefer - like Openvpn which can do port sharing or which can be put "behind" stunnel and sslh, so that you will use a standard 443 port, and do a genuine SSL connection on that port. Much better. Have some fun with burst.net - they offer you 2 IP for like $7/month : you can do some routing and give the 2nd IP address to your laptop on the other end of the tunnel. Now that is…
peterwwillis · 2012-09-24
If they're proxying HTTP traffic usually they'll block SSH and other protocols. To work around this use an HTTPS/SSH multiplexer[1][2][3] or a simple reverse proxy to accept HTTP[S] connections and connect them to an SSH server on the backend. For the ssh client use a ProxyCommand tunneling app[4][5][6] to turn an HTTP[S] proxy request into a two-way socket, and you have an SSH connection over HTTP proxies. [1] http://www.rutschle.net/tech/sslh.shtml [2] http://www.pond-weed.com/multiplex/ [3] https://github.com/stealth/sshttp [4] http://zwitterion.org/software/ssh-https-tunnel/ssh-https-tunnel [5] http://proxytunnel.sourceforge.net/ [6] http://www.agroman.net/corkscrew/

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close