A secure web-based, collaborative terminal.
Features:
Visit sshx.io to learn more.
Just run this command to get the sshx
binary for your platform.
curl -sSf https://sshx.io/get | sh
Supports Linux and MacOS on x86_64 and ARM64 architectures, as well as embedded ARMv6 and ARMv7-A systems. The Linux binaries are statically linked.
For Windows, there are binaries for x86_64 and x86, linked to MSVC for maximum compatibility.
If you just want to try it out without installing, use:
curl -sSf https://sshx.io/get | sh -s run
Inspect the script for additional options.
You can run sshx in continuous integration workflows to help debug tricky issues, like in GitHub Actions.
name: CI
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# ... other steps ...
- run: curl -sSf https://sshx.io/get | sh -s run
# ^
# └ This will open a remote terminal session and print the URL. It
# should take under a second.
We don't have a prepackaged action because it's just a single command. It works anywhere: GitLab CI, CircleCI, Buildkite, CI on your Raspberry Pi, etc.
Be careful adding this to a public GitHub repository, as any user can view the logs of a CI job while it is running.
Here's how to work on the project, if you want to contribute.
To build the latest version of the client from source, clone this repository and run, with Rust installed:
cargo install --path crates/sshx
This will compile the sshx
binary and place it in your ~/.cargo/bin
folder.
First, start service containers for development.
docker compose up -d
Install Rust 1.70+, Node v18, NPM v9, and mprocs. Then, run
npm install
mprocs
This will compile and start the server, an instance of the client, and the web frontend in parallel on your machine.
I host the application servers on Fly.io and with Redis Cloud.
Self-hosted deployments are not supported at the moment. If you want to deploy sshx, you'll need to properly implement HTTP/TCP reverse proxies, gRPC forwarding, TLS termination, private mesh networking, and graceful shutdown.
Please do not run the development commands in a public setting, as this is insecure.