Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jamescun/switcher
Run SSH and HTTP(S) on the same port
https://github.com/jamescun/switcher
golang http https proxy ssh sslh
Last synced: 3 months ago
JSON representation
Run SSH and HTTP(S) on the same port
- Host: GitHub
- URL: https://github.com/jamescun/switcher
- Owner: jamescun
- License: other
- Created: 2015-01-20T21:37:36.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2019-03-15T13:19:58.000Z (almost 6 years ago)
- Last Synced: 2024-08-01T22:51:02.882Z (6 months ago)
- Topics: golang, http, https, proxy, ssh, sslh
- Language: Go
- Size: 187 KB
- Stars: 909
- Watchers: 34
- Forks: 73
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ssh - switcher - Run *SSH* and *HTTP(S)* on the same port. (Apps / Network)
- awesome-ssh - switcher - Run *SSH* and *HTTP(S)* on the same port. (Apps / Network)
README
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](https://github.com/jamescun/switcher/releases) 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 AddressExamples:
To serve SSH(127.0.0.1:22) and HTTP(127.0.0.1:8080) on port 80
$ switcherTo 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:443Example
-------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 OKTo test SSH
$ ssh [email protected] -p 80
Password:Why not sslh
------------Switcher is heavily influenced by [sslh](https://github.com/yrutschle/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](LICENSE)