Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nwtgck/piping-ssh-web
SSH over HTTPS via Piping Server on Web browser
https://github.com/nwtgck/piping-ssh-web
piping-server ssh ssh-client wasm web webassembly
Last synced: 10 days ago
JSON representation
SSH over HTTPS via Piping Server on Web browser
- Host: GitHub
- URL: https://github.com/nwtgck/piping-ssh-web
- Owner: nwtgck
- License: mit
- Created: 2020-11-12T15:13:58.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-17T20:38:31.000Z (about 2 months ago)
- Last Synced: 2024-10-29T12:23:34.121Z (12 days ago)
- Topics: piping-server, ssh, ssh-client, wasm, web, webassembly
- Language: Vue
- Homepage: https://piping-ssh.nwtgck.org
- Size: 14.9 MB
- Stars: 102
- Watchers: 4
- Forks: 4
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# piping-ssh
SSH over HTTPS via [Piping Server] on browser.We often want to access applications on our remote machine. But some environments have NATs or difficulties with opening a port to the public and getting a static IP. There is a way to forward a port over HTTPS with high transparency. This project aims to provide an SSH client that works on the browser and is compatible with the highly transparent way.
On the SSH server side, you can simply run the following command.
```bash
curl -sSN https://ppng.io/aaa | nc localhost 22 | curl -sSNT - https://ppng.io/bbb
```The command above consists only of `curl` and `nc`, which are widely used and trusted. These commands are likely to already be installed on your machine.
## Security
* SSH things are processed only in the browser without any server.
* Go language (`golang.org/x/crypto/ssh`) and WebAssembly are used.
* The connection between the browser and the SSH server are end-to-end encrypted.
* The connection between the browser and [Piping Server] is also encrypted in transit with HTTPS.
* The running command on the SSH server side is highly transparent, so you can easily understand what they are doing.## SSH key generation
You can generate SSH keys only in the browser without any server.
* RSA 2048 bits
* RSA 4096 bits
* Ed25519You can also manage keys generated by `ssh-keygen` command with or without a passphrase.
## URL fragment parameters
You can store the configuration in the URL. All the parameters are in the URL fragment so they are never sent to the web server.e.g.
* `user`: SSH user name
* `password`: SSH user password
* `server`: Piping Server URL
* `cs_path`: Server-to-client path
* `sc_path`: Client-to-server path
* `auto_connect`: Connect automatically
* `s_port`: SSH Server port for command hint
* `headers`: HTTP headers to Piping Server
- (e.g. `[["X-MyExtra1", "myvalue1"], ["Content-Type", "application/myapp"]]`)## Requirement
This project requires Google Chrome 105 or higher for [fetch() upload streaming](https://www.chromestatus.com/feature/5274139738767360) feature.
You can also use Chromium-based browsers.## Previous version using SSHy
This project used to highly based on [SSHy] before Go language and WebAssembly were used.
SSHy version:## Acknowledgements
The idea of tunneling over [Piping Server] was proposed by [@Cryolite](https://github.com/Cryolite) in a Japanese post, . Thanks![Piping Server]: https://github.com/nwtgck/piping-server
[SSHy]: https://github.com/stuicey/SSHy## Self-hosting Piping Server
It is easy to use Replit and fork to host Piping Server for free. You can see to get other ways.## References
*
*