README.md
Warpgate is a smart & fully transparent SSH, HTTPS, Kubernetes, MySQL, PostgreSQL bastion host that doesn't require a client app or an SSH wrapper.
| Warpgate | SSH jump host | VPN | Teleport |
|---|---|---|---|
| ✅ Precise 1:1 assignment between users and services | (Usually) full access to the network behind the jump host | (Usually) full access to the network | ✅ Precise 1:1 assignment between users and services |
| ✅ No custom client needed | Jump host config needed | ✅ No custom client needed | Custom client required |
| ✅ 2FA out of the box | 🟡 2FA possible with additional PAM plugins | 🟡 Depends on the provider | ✅ 2FA out of the box |
| ✅ SSO out of the box | 🟡 SSO possible with additional PAM plugins | 🟡 Depends on the provider | Paid |
| ✅ Command-level audit | 🟡 Connection-level audit on the jump host, no secure audit on the target if root access is given | No secure audit on the target if root access is given | ✅ Command-level audit |
| ✅ Full session recording | No secure recording possible on the target if root access is given | No secure recording possible on the target if root access is given | ✅ Full session recording |
| ✅ Non-interactive connections | 🟡 Non-interactive connections are possible if the clients supports jump hosts natively | ✅ Non-interactive connections | Non-interactive connections require using an SSH client wrapper or running a tunnel |
| ✅ Self-hosted, you own the data | ✅ Self-hosted, you own the data | 🟡 Depends on the provider | SaaS |
Please use GitHub's vulnerability reporting system.
The project is ready for production.
Warpgate is a service that you deploy on the bastion/DMZ host, which will accept SSH, HTTPS, Kubernetes, 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.
cargo install justjust npm installjust npm run buildcargo build (optionally --release)The binary is in target/{debug|release}.
poem-websea-orm + sqlxrusshjust openapi-all.Thanks goes to these wonderful people (emoji key):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Eugeny"> <sub><b>Eugeny</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=Eugeny" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://the-empire.systems/"> <sub><b>Spencer Heywood</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=heywoodlh" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/apiening"> <sub><b>Andreas Piening</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=apiening" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Gurkengewuerz"> <sub><b>Niklas</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=Gurkengewuerz" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/notnooblord"> <sub><b>Nooblord</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=notnooblord" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://shea.nz/"> <sub><b>Shea Smith</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=SheaSmith" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/samtoxie"> <sub><b>samtoxie</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=samtoxie" title="Code">💻</a></td> </tr> <tr> <td align="center" valign="top" width="14.28%"><a href="https://p.foundation/"> <sub><b>P Foundation</b></sub></a> <a href="#financial-pfoundation" title="Financial">💵</a></td> <td align="center" valign="top" width="14.28%"><a href="http://sixteenink.com"> <sub><b>Skyler Lewis</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=alairock" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://www.mohammednoureldin.com"> <sub><b>Mohammed Noureldin</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=MohammedNoureldin" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/mrmm"> <sub><b>Mourad Maatoug</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=mrmm" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://justinforlenza.dev"> <sub><b>Justin</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=justinforlenza" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/liebermantodd"> <sub><b>liebermantodd</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=liebermantodd" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://blog.trieoflogs.com"> <sub><b>Hariharan</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=cvhariharan" title="Code">💻</a></td> </tr> <tr> <td align="center" valign="top" width="14.28%"><a href="https://github.com/solidassassin"> <sub><b>Rokas Krivaitis</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=solidassassin" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/SachinMaharana"> <sub><b>SachinMaharana</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=SachinMaharana" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/pandeysambhi"> <sub><b>Sambhavi Pandey</b></sub></a> <a href="https://github.com/warp-tech/warpgate/commits?author=pandeysambhi" title="Code">💻</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END -->This project follows the all-contributors specification. Contributions of any kind welcome!