2022-07-06 18:31:27 +08:00
< br / >
2022-08-08 21:22:48 +08:00
< p align = "center" >
2022-07-06 04:38:10 +08:00
< img src = "warpgate-web/public/assets/logo.svg" width = "100" / >
2022-08-08 21:22:48 +08:00
< / p >
2022-07-06 04:38:10 +08:00
< br / >
2022-08-08 21:22:48 +08:00
< p align = "center" >
< a href = "https://github.com/warp-tech/warpgate/releases/latest" > < img alt = "GitHub All Releases" src = "https://img.shields.io/github/downloads/warp-tech/warpgate/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge" > < / a > < a href = "https://nightly.link/warp-tech/warpgate/workflows/build/main" > < img src = "https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge" / > < / a > < a href = "https://twitter.com/eugeeeeny" > < img alt = "Twitter" src = "https://shields.io/badge/Subscribe-News-blue?logo=twitter&style=for-the-badge&color=blue" > < / a >
< / p >
2022-04-13 01:06:09 +08:00
2022-04-11 04:58:58 +08:00
2022-08-08 21:25:27 +08:00
< p align = "center" >
< a href = "https://ko-fi.com/J3J8KWTF" >
< img src = "https://cdn.ko-fi.com/cdn/kofi3.png?v=2" width = "150" >
< / a >
< / p >
2022-07-06 04:38:10 +08:00
---
2022-07-27 06:45:28 +08:00
Warpgate is a smart SSH, HTTPS and MySQL bastion host for Linux that doesn't need special client apps.
2022-04-11 04:58:58 +08:00
2022-07-06 04:38:10 +08:00
* Set it up in your DMZ, add user accounts and easily assign them to specific hosts and URLs within the network.
2022-07-27 06:45:28 +08:00
* Warpgate will record every session for you to view (live) and replay later through a built-in admin web UI.
2022-04-11 05:33:58 +08:00
* Not a jump host - forwards your connections straight to the target instead.
2022-08-08 21:24:29 +08:00
* Native 2FA and SSO support (TOTP & OpenID Connect)
2022-06-24 16:41:13 +08:00
* Single binary with no dependencies.
2022-04-11 04:58:58 +08:00
* Written in 100% safe Rust.
2022-08-08 22:03:35 +08:00
![](docs/banner.png)
2022-04-12 04:12:34 +08:00
## Getting started & downloads
2022-04-11 04:58:58 +08:00
2022-07-06 03:32:05 +08:00
* See the [Getting started ](https://github.com/warp-tech/warpgate/wiki/Getting-started ) wiki page (or [Getting started on Docker ](https://github.com/warp-tech/warpgate/wiki/Getting-started-on-Docker )).
2022-04-13 01:28:24 +08:00
* [Release / beta binaries ](https://github.com/warp-tech/warpgate/releases )
* [Nightly builds ](https://nightly.link/warp-tech/warpgate/workflows/build/main )
2022-04-11 04:58:58 +08:00
2022-05-30 22:35:03 +08:00
< center >
< img width = "783" alt = "image" src = "https://user-images.githubusercontent.com/161476/162640762-a91a2816-48c0-44d9-8b03-5b1e2cb42d51.png" >
< / center >
< table >
< tr >
< td >
2022-07-06 04:38:10 +08:00
< img width = "500" alt = "image" src = "https://user-images.githubusercontent.com/161476/177408495-80268a91-1a21-43bf-b171-2a563a322f5f.png" >
2022-05-30 22:35:03 +08:00
< / td >
< td >
2022-07-06 04:38:10 +08:00
< img width = "500" alt = "image" src = "https://user-images.githubusercontent.com/161476/177410749-cf029df7-223e-4c9c-827a-bb96dbe0a7c8.png" >
2022-05-30 22:35:03 +08:00
< / td >
< / tr >
< / table >
2022-04-11 04:58:58 +08:00
## Project Status
2022-05-30 16:38:14 +08:00
The project is currently in **alpha** stage and is gathering community feedback. See the [official roadmap ](https://github.com/orgs/warp-tech/projects/1/views/2 ) for the upcoming features.
2022-04-11 04:58:58 +08:00
In particular, we're working on:
2022-07-27 06:45:28 +08:00
* Requesting admin approvals for sessions
* Support for tunneling PostgreSQL connections,
2022-04-11 04:58:58 +08:00
* and much more.
2022-04-16 03:38:59 +08:00
## How it works
2022-07-27 06:45:28 +08:00
Warpgate is a service that you deploy on the bastion/DMZ host, which will accept SSH, HTTPS and MySQL connections and provide an (optional) web admin UI.
2022-04-23 18:29:56 +08:00
Run `warpgate setup` to interactively generate a config file, including port bindings. See [Getting started ](https://github.com/warp-tech/warpgate/wiki/Getting-started ) for details.
2022-04-16 03:38:59 +08:00
2022-07-27 06:45:28 +08:00
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.
2022-04-16 03:38:59 +08:00
2022-07-06 04:38:10 +08:00
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.
2024-02-21 02:02:20 +08:00
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` ).
2022-04-16 03:38:59 +08:00
2024-02-21 02:02:20 +08:00
You can also use the admin web interface to view the live session list, review session recordings, logs and more.
2022-04-16 03:38:59 +08:00
2022-04-11 04:58:58 +08:00
## Contributing / building from source
2022-06-27 02:50:04 +08:00
* You'll need Rust, NodeJS and Yarn
2022-04-11 04:58:58 +08:00
* Clone the repo
* [Just ](https://github.com/casey/just ) is used to run tasks - install it: `cargo install just`
* Install the admin UI deps: `just yarn`
* Build the frontend: `just yarn build`
* Build Warpgate: `cargo build` (optionally `--release` )
2022-04-13 00:56:13 +08:00
2022-07-06 04:38:10 +08:00
The binary is in `target/{debug|release}` .
### Tech stack
* Rust 🦀
* HTTP: `poem-web`
* Database: SQLite via `sea-orm` + `sqlx`
2022-08-08 22:05:10 +08:00
* SSH: `russh`
2022-07-06 04:38:10 +08:00
* Typescript
* Svelte
* Bootstrap
2024-03-02 02:27:48 +08:00
### 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` .
2022-04-13 00:56:13 +08:00
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL - CONTRIBUTORS - LIST:START - Do not remove or modify this section -->
<!-- prettier - ignore - start -->
<!-- markdownlint - disable -->
< table >
2024-03-24 04:59:52 +08:00
< tbody >
< tr >
< td align = "center" valign = "top" width = "14.28%" > < a href = "https://github.com/Eugeny" > < img src = "https://avatars.githubusercontent.com/u/161476?v=4?s=100" width = "100px;" alt = "Eugeny" / > < br / > < sub > < b > Eugeny< / b > < / sub > < / a > < br / > < a href = "https://github.com/Eugeny/warpgate/commits?author=Eugeny" title = "Code" > 💻< / a > < / td >
< td align = "center" valign = "top" width = "14.28%" > < a href = "https://the-empire.systems/" > < img src = "https://avatars.githubusercontent.com/u/18178614?v=4?s=100" width = "100px;" alt = "Spencer Heywood" / > < br / > < sub > < b > Spencer Heywood< / b > < / sub > < / a > < br / > < a href = "https://github.com/Eugeny/warpgate/commits?author=heywoodlh" title = "Code" > 💻< / a > < / td >
< td align = "center" valign = "top" width = "14.28%" > < a href = "https://github.com/apiening" > < img src = "https://avatars.githubusercontent.com/u/2064875?v=4?s=100" width = "100px;" alt = "Andreas Piening" / > < br / > < sub > < b > Andreas Piening< / b > < / sub > < / a > < br / > < a href = "https://github.com/Eugeny/warpgate/commits?author=apiening" title = "Code" > 💻< / a > < / td >
< td align = "center" valign = "top" width = "14.28%" > < a href = "https://github.com/Gurkengewuerz" > < img src = "https://avatars.githubusercontent.com/u/10966337?v=4?s=100" width = "100px;" alt = "Niklas" / > < br / > < sub > < b > Niklas< / b > < / sub > < / a > < br / > < a href = "https://github.com/Eugeny/warpgate/commits?author=Gurkengewuerz" title = "Code" > 💻< / a > < / td >
< td align = "center" valign = "top" width = "14.28%" > < a href = "https://github.com/notnooblord" > < img src = "https://avatars.githubusercontent.com/u/11678665?v=4?s=100" width = "100px;" alt = "Nooblord" / > < br / > < sub > < b > Nooblord< / b > < / sub > < / a > < br / > < a href = "https://github.com/Eugeny/warpgate/commits?author=notnooblord" title = "Code" > 💻< / a > < / td >
< td align = "center" valign = "top" width = "14.28%" > < a href = "https://shea.nz/" > < img src = "https://avatars.githubusercontent.com/u/51303984?v=4?s=100" width = "100px;" alt = "Shea Smith" / > < br / > < sub > < b > Shea Smith< / b > < / sub > < / a > < br / > < a href = "https://github.com/Eugeny/warpgate/commits?author=SheaSmith" title = "Code" > 💻< / a > < / td >
< / tr >
< / tbody >
2022-04-13 00:56:13 +08:00
< / table >
<!-- markdownlint - restore -->
<!-- prettier - ignore - end -->
<!-- ALL - CONTRIBUTORS - LIST:END -->
2022-04-13 01:06:09 +08:00
This project follows the [all-contributors ](https://github.com/all-contributors/all-contributors ) specification. Contributions of any kind welcome!