https://github.com/zetxtech/wsterm
A WebSocket-based terminal sharing tool that allows you to securely expose and share your terminal (TTY) over any network, even through NATs.
https://github.com/zetxtech/wsterm
Last synced: 12 months ago
JSON representation
A WebSocket-based terminal sharing tool that allows you to securely expose and share your terminal (TTY) over any network, even through NATs.
- Host: GitHub
- URL: https://github.com/zetxtech/wsterm
- Owner: zetxtech
- License: mit
- Created: 2025-04-15T15:45:47.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-16T04:54:57.000Z (about 1 year ago)
- Last Synced: 2025-06-01T02:08:18.133Z (about 1 year ago)
- Language: Go
- Size: 18.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WSTerm
A powerful WebSocket-based terminal sharing tool that allows you to securely expose and share your terminal (TTY) over any network, even through firewalls and NATs.
## Features
- Server mode: Expose your shell securely to clients through WebSockets
- Client mode: Connect to remote terminals with interactive access
- Intranet penetration via WSSocks: Share terminals through firewalls/NAT using secure tunneling
## Installation
WSTerm can be installed by:
```bash
go install github.com/zetxtech/wsterm/cmd/wsterm@latest
```
You can also download pre-built binaries for your architecture from the [releases page](https://github.com/zetxtech/wsterm/releases).
WSTerm is also available via Docker:
```bash
docker run --rm -it jackzzs/wsterm --help
```
## Usage
The application supports both direct connections and tunneled connections through WSSocks:
### Quick Start with WSSocks (Recommended)
Share your terminal through any network/firewall:
```bash
# On the server (machine sharing the terminal):
wsterm server -t YOUR_TOKEN
# On the client (machine accessing the terminal):
wsterm client -t YOUR_TOKEN
```
This method works everywhere - no port forwarding or firewall configuration needed!
You should use a complex token, as anyone holding the token can connect to your terminal.
```bash
openssl rand -hex 16
```
### Direct Connection Mode
For local network or when you have direct access:
#### Server Mode
```bash
# Basic usage
./wsterm server --port 8080 --host localhost
# Accept connections from any interface
./wsterm server --port 8080 --host 0.0.0.0
# Specify a custom shell
./wsterm server --shell /bin/zsh
```
#### Client Mode
```bash
# Connect to local server
./wsterm client --url ws://localhost:8080
# Connect to remote server
./wsterm client --url ws://example.com:8080
# Use with proxy
./wsterm client --proxy socks5://proxy.example.com:1080
```
## License
MIT