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?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?