SSH to Warpgate targets from your terminal — interactive setup, tab completion, and optional server bootstrap.
- Python 3.10+
- pipx
- OpenSSH (
ssh,ssh-keygen)
Clone the repository and run the installer:
git clone https://github.com/YOUR_ORG/wssh.git
cd wssh
bash install.sh
wssh setupOr install with pipx only:
git clone https://github.com/YOUR_ORG/wssh.git
cd wssh
pipx install .
wssh setupOne-liner (after publishing; set WSSH_REPO if installing from a fork):
curl -fsSL https://raw.githubusercontent.com/YOUR_ORG/wssh/main/install.sh | bash
wssh setupwssh setup asks for your Warpgate host, username, SSH key, API token, and shell tab completion. Settings are saved to ~/.wssh/config.yaml.
Connect to a target:
wssh myserverRun a remote command:
wssh myserver -- systemctl status nginxConfig file: ~/.wssh/config.yaml (override with WSSH_CONFIG).
Example:
user: alice@example.com
host: bastion.example.com
port: 2222
domain: example.com
server_domain: internal.example.com
api_token: "<your-api-token>"
default_ssh_user: root
default_ssh_port: 22Environment variables override file values:
| Variable | Purpose |
|---|---|
WSSH_HOST |
Warpgate bastion hostname |
WSSH_PORT |
Warpgate SSH port (default 2222) |
WSSH_DOMAIN |
Append to usernames without @ |
WSSH_SERVER_DOMAIN |
DNS suffix for wssh setup-server short names |
WSSH_API_TOKEN |
User API token |
WSSH_ADMIN_API_TOKEN |
Admin API token (for setup-server) |
WSSH_WARPGATE_CLIENT_KEYS |
Newline-separated client public keys (offline bootstrap) |
See config.example.yaml for a full template.
Teams can ship non-secret defaults (bastion host, email domain, server DNS suffix, default SSH user) without forking wssh:
- Maintain a partial config (see
config.preset.example.yaml) — noapi_tokenor per-useruser. - Install
wsshand copy the preset to~/.wssh/config.yaml. - Run
wssh setup— connection prompts are skipped whenhostis already set; staff only complete username, SSH key, API token, and shell completion.
Distribute the preset via a private repo and bootstrap script, MDM, or internal wiki. Keep secrets and personal tokens out of shared files.
If Warpgate sign-in does not finish during setup, complete sign-in in the browser and paste an API token when prompted, or run:
wssh auth loginFor automatic API token creation after browser sign-in (optional):
pipx inject wssh browser-cookie3To paste your SSH public key in the Warpgate web UI instead of uploading via API:
wssh setup --manual-credentialsThen run wssh auth login if you still need an API token.
Check for install issues (e.g. a legacy shell function shadowing wssh):
wssh doctorMIT — see LICENSE.