switcher

Run SSH and HTTP(S) on the same port

Github星跟踪图

Switcher

Switcher is a proxy server which accepts connections and proxies based on which protocol is detected.

Currently implemented is:

  • SSH

The use case is running HTTP(S) and SSH on the same port.

Usage

Download release or Build:

make

To get help:

$ ./switcher --help
Switcher 1.0.0
usage: switcher [options]

Options:
  --listen   <:80>            Server Listen Address
  --ssh      <127.0.0.1:22>   SSH Server Address
  --default  <127.0.0.1:8080>  Default Server Address

Examples:
  To serve SSH(127.0.0.1:22) and HTTP(127.0.0.1:8080) on port 80
  $ switcher

  To serve SSH(127.0.0.1:2222) and HTTPS(127.0.0.1:443) on port 443
  $ switcher --listen :443 --ssh 127.0.0.1:2222 --default 127.0.0.1:443

Example

Run switcher on HTTP port 80, proxy to SSH on 127.0.0.1:22 and Nginx on 127.0.0.1:8080

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

To test HTTP:

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

To test SSH

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

Why not sslh

Switcher is heavily influenced by sslh. It started out as a learning exercise to discover how sslh worked and attempt an implementation in Go.

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).

License

3-Clause "Modified" BSD Licence.

License

主要指标

概览
名称与所有者jamescun/switcher
主编程语言Go
编程语言Go (语言数: 2)
平台
许可证Other
所有者活动
创建于2015-01-20 21:37:36
推送于2019-03-15 13:19:58
最后一次提交2015-01-22 10:44:54
发布数2
最新版本名称v1.0.1 (发布于 )
第一版名称v1.0.0 (发布于 )
用户参与
星数0.9k
关注者数33
派生数72
提交数7
已启用问题?
问题数4
打开的问题数3
拉请求数1
打开的拉请求数1
关闭的拉请求数2
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?