Switcher在同一端口运行SSH和HTTP(S)

Switcher是一个代理服务器,能够基于侦测到的协议实现相应的代理,典型应用场景是在同一端口既运行SSH又能运行HTTP(s)。

jamescun/switcher · GitHub

Switcher是严重受到sslh影响. 开始之初是用来练习学习sslh工作原理,并试图使用Go语言实现。

在正确使用了Go协议匹配接口(增加一个新协议很平常轻松)后证明是非常有用的,包括使用轻量的协程goroutine,而不是使用forking, 后者在高负载下导致CPU高负担。

使用方式:


$ switcher --listen :80 --ssh 127.0.0.1:22 --default 127.0.0.1:8080

测试HTTP:
$ curl -I http://my-server.local
HTTP/1.1 200 OK

测试SSH:
$ ssh james@my-server.local -p 80
Password: