Smart SSH, HTTPS and MySQL bastion that needs no client-side software
Find a file
2025-05-23 17:02:20 +02:00
.cargo reproducible build test 2025-03-21 23:47:06 +01:00
.github Update build.yml 2025-04-10 22:51:51 -07:00
.well-known Create funding-manifest-urls 2024-10-17 11:21:22 +02:00
docker reproducible build test 2025-03-21 23:47:06 +01:00
docs added readme banner 2022-08-08 16:03:35 +02:00
src/models #1281 - added description fields (#1294) 2025-03-22 12:00:20 +01:00
tests test fixes 2025-05-23 17:02:20 +02:00
warpgate added Postgres OOB auth test 2025-05-21 22:25:18 +02:00
warpgate-admin fixed #1337 - automatically strip the public key comment when setting via the API 2025-05-21 19:32:43 +02:00
warpgate-common lint 2025-05-21 20:23:15 +02:00
warpgate-core fixed #972 - SSH server not offering keyboard-interactive when only OOB or SSO auth is enabled for a user 2025-05-21 20:20:10 +02:00
warpgate-database-protocols Bump version: 0.13.1 → 0.13.2 2025-02-26 10:40:54 +01:00
warpgate-db-entities Offer checking and accepting SSH host keys in the admin UI (#1307) 2025-04-05 04:05:21 +02:00
warpgate-db-migrations #1281 - added description fields (#1294) 2025-03-22 12:00:20 +01:00
warpgate-protocol-http added Postgres OOB auth test 2025-05-21 22:25:18 +02:00
warpgate-protocol-mysql Bump version: 0.13.1 → 0.13.2 2025-02-26 10:40:54 +01:00
warpgate-protocol-postgres lint 2025-05-21 20:23:15 +02:00
warpgate-protocol-ssh fixed #972 - SSH server not offering keyboard-interactive when only OOB or SSO auth is enabled for a user 2025-05-21 20:20:10 +02:00
warpgate-sso SBOMs (#1289) 2025-03-20 16:11:14 +01:00
warpgate-web remove duplicate "v" from version number 2025-05-23 13:10:36 +02:00
.all-contributorsrc Add @samtoxie as a contributor 2025-02-13 16:01:22 +01:00
.bumpversion.cfg Bump version: 0.13.1 → 0.13.2 2025-02-26 10:40:54 +01:00
.dockerignore Updated Dockerfile & setup 2022-07-05 21:32:05 +02:00
.env import 2022-04-10 22:58:58 +02:00
.flake8 added e2e tests 2022-08-14 12:36:49 +02:00
.gitignore SBOMs (#1289) 2025-03-20 16:11:14 +01:00
Cargo.lock fixed #1320 - JDBC based Postgres clients not connecting 2025-05-19 20:39:20 +02:00
Cargo.toml fixed migrations tool 2025-05-12 17:27:00 +02:00
clippy.toml added cranky and removed all .unwrap() usages 2022-07-23 21:31:35 +02:00
Cranky.toml Offer checking and accepting SSH host keys in the admin UI (#1307) 2025-04-05 04:05:21 +02:00
Cross.toml build updates 2022-11-22 00:52:43 +01:00
deny.toml mark dev builds in the version number (#1315) 2025-04-11 08:18:03 +02:00
justfile SBOMs (#1289) 2025-03-20 16:11:14 +01:00
LICENSE Update LICENSE 2022-04-14 11:14:56 +02:00
README.md Update README.md 2025-04-17 08:18:36 +02:00
rust-toolchain reproducible build test 2025-03-21 23:47:06 +01:00
rustfmt.toml sorted imports 2022-07-15 20:27:33 +02:00
SECURITY.md Update SECURITY.md 2025-04-10 22:17:40 -07:00
sonar-project.properties added e2e tests 2022-08-14 12:36:49 +02:00


Shows a black logo in light color mode and a white one in dark color mode.


GitHub All Releases     Discord


Warpgate is a smart SSH, HTTPS, MySQL and PostgreSQL bastion host for Linux that doesn't need special client apps.

  • Set it up in your DMZ, add user accounts and easily assign them to specific hosts and URLs within the network.
  • Warpgate will record every session for you to view (live) and replay later through a built-in admin web UI.
  • Not a jump host - forwards your connections straight to the target instead.
  • Native 2FA and SSO support (TOTP & OpenID Connect)
  • Single binary with no dependencies.
  • Written in 100% safe Rust.

Getting started & downloads

image

Reporting security issues

Please use GitHub's vulnerability reporting system.

Project Status

The project is ready for production.

How it works

Warpgate is a service that you deploy on the bastion/DMZ host, which will accept SSH, HTTPS, MySQL and PostgreSQL connections and provide an (optional) web admin UI.

Run warpgate setup to interactively generate a config file, including port bindings. See Getting started for details.

It receives connections with specifically formatted credentials, authenticates the user locally, connects to the target itself, and then connects both parties together while (optionally) recording the session.

When connecting through HTTPS, Warpgate presents a selection of available targets, and will then proxy all traffic in a session to the selected target. You can switch between targets at any time.

You manage the target and user lists and assign them to each other through the admin UI, and the session history is stored in an SQLite database (default: in /var/lib/warpgate).

You can also use the admin web interface to view the live session list, review session recordings, logs and more.

Contributing / building from source

  • You'll need Rust, NodeJS and NPM
  • Clone the repo
  • Just is used to run tasks - install it: cargo install just
  • Install the admin UI deps: just npm
  • Build the frontend: just npm run build
  • Build Warpgate: cargo build (optionally --release)

The binary is in target/{debug|release}.

Tech stack

  • Rust 🦀
    • HTTP: poem-web
    • Database: SQLite via sea-orm + sqlx
    • SSH: russh
  • Typescript
    • Svelte
    • Bootstrap

Backend API

  • Warpgate admin and user facing APIs use autogenerated OpenAPI schemas and SDKs. To update the SDKs after changing the query/response structures, run just openapi-all.

Contributors

Thanks goes to these wonderful people (emoji key):

Eugeny
Eugeny

💻
Spencer Heywood
Spencer Heywood

💻
Andreas Piening
Andreas Piening

💻
Niklas
Niklas

💻
Nooblord
Nooblord

💻
Shea Smith
Shea Smith

💻
samtoxie
samtoxie

💻

This project follows the all-contributors specification. Contributions of any kind welcome!