What does HackerNews think of sslh?
Applicative Protocol Multiplexer (e.g. share SSH and HTTPS on the same port)
It allows you to listen for https and ssh traffic on a single port.
https://github.com/yrutschle/sslh
"sslh accepts connections on specified ports, and forwards them further based on tests performed on the first data packet sent by the remote client."
There is a tool that does something similar, SSLH [1], that will route SSH, HTTPS and VPN traffic to the right daemon. Similar idea, different implementation. Perhaps you could contact the author and have them add support for Shadowsocks. Then have two daemons, the legit Shadowsocks, and a dummy daemon that is something else. Perhaps even get the devs for SS and SSLH to brainstorm together on this.
So, yeah, I can serve up DOH on my own server with a custom endpoint, custom client configuration, and generate cover traffic. But that's not exactly easy. And http doesn't help: I can do that without http, something like https://github.com/yrutschle/sslh, or using SNI (which, as of TLS 1.3, is encrypted).
And merely saying something is impossible doesn't make it so. It doesn't even make it hard.
I commit to github using ssh on port 443.
# git remote set-url origin git@:/
From ~/.ssh/config Hostname ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/.github
Consider using Dovecot on your mail server for port 443. I was not aware that Discord stopped supporting websockets over 443. I run my own Mumble voice chat server so I can put it on 443, but I understand people have a lot of friends on Discord. I am just not happy with their chat logging policy [0].You could also run a proxy or VPN on port 443. You can also use sslh [1] to have SSH+SSL+Proxy+VPN all on the same port 443. You can do similar things using HAProxy + SNI + SSL, but that is a bigger subject.
For other things that must use other ports or protocols, you can sometimes wrap them using tsocks [2] in your VPN or SSH tunnels to port 443.
[0] - https://blog.discordapp.com/how-discord-stores-billions-of-m...
[1] - https://github.com/yrutschle/sslh
[2] - https://www.redpill-linpro.com/sysadvent/2015/12/13/socks-pr...
Also you can configure haproxy to do the same.
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).