Objective: run many services on the same port with sslh
sslh is a superb utility which greatly increased my satisfaction of self-hosting xmpp, www, vpn, ssh and other. Why? How? Let’s see!
Sometimes it may be neccesary to run different services that listen on the same port. Often the case is with VPN, XMPP, HTTP(s), SSH.
sslh will enable us to do so in a easy and efficient way.
There already is packed
sslh in Debian, Gentoo, FreeBSD repositories, so all we have to do is use apprioperiate package manager, on Debian it would be:
aptitude install sslh
Last step needs the most interaction: launching
sslh. All aptions are neatly described by the
sslh --help sslh 1.16-2 usage: sslh [-v] [-i] [-V] [-f] [-n] [-F <file>] [-t <timeout>] [-P <pidfile>] -u <username> -p <add> [-p <addr> ...] [--ssh <addr>] [--openvpn <addr>] [--tinc <addr>] [--xmpp <addr>] [--http <addr>] [--ssl <addr>] [--tls <addr>] [--anyprot <addr>] [--on-timeout <addr>] -v: verbose -V: version -f: foreground -n: numeric output -F: use configuration file --on-timeout: connect to specified address upon timeout (default: ssh address) -t: seconds to wait before connecting to --on-timeout address. -p: address and port to listen on. Can be used several times to bind to several addresses. --[ssh,ssl,...]: where to connect connections from corresponding protocol. -F: specify a configuration file -P: PID file. -i: Run as a inetd service.
Or you may change the default configuration in a config file:
I usually launch
sslh --listen 0.0.0.0 80 --ssh 127.0.0.1 22 --http 127.0.0.1 8880 --xmpp 127.0.0.1 5222 --user sslh --pidfile /var/run/sslh.pid
As you can see, at the moment we cay run many services on the same port with sslh, which was our objective from the beggining. Hope you like it!