Warpgate:无需客户端软件的透明 SSH/HTTPS/Kubernetes/数据库/RDP/VNC 堡垒机与 PAM
Warpgate 是一个智能且完全透明的堡垒机(Bastion Host)/特权访问管理(PAM)服务,支持 SSH、HTTPS、Kubernetes、MySQL、PostgreSQL、RDP 与 VNC,无需安装客户端程序或 SSH 包装器即可使用,内置会话录制与回放、浏览器端远程访问、2FA/SSO、防暴力破解,采用 100% 安全 Rust 编写的单二进制、无依赖部署形态。
社区作者 · zZz
它解决什么问题
Warpgate 是一个部署在 DMZ 或堡垒机主机上的服务,作为 SSH、HTTPS、Kubernetes、MySQL、PostgreSQL、RDP 和 VNC 的统一入口,不会要求用户安装客户端应用或 SSH 包装器。
核心功能与特性:
- 将服务部署在 DMZ 后,添加用户账户,并轻松把用户分配到网络内的特定主机和 URL(用户与服务之间精确的 1:1 分配)。
- 记录每一次会话,可通过内置的管理 Web UI 实时查看并事后回放。
- 内置浏览器端的 SSH、RDP 和 VNC 访问;原生客户端仍可继续使用。
- 不是跳板机(jump host)——连接被直接转发到目标,对客户端完全透明。
- 原生支持 2FA 与 SSO(TOTP 与 OpenID Connect)。
- 内置防暴力破解保护,支持 IP 封禁与用户锁定。
- 单二进制、无依赖。
- 使用 100% 安全 Rust 编写。
工作原理:Warpgate 是部署在堡垒机/DMZ 主机上的服务,接受 SSH、HTTPS、Kubernetes、MySQL、PostgreSQL、RDP 和 VNC 连接,并提供(可选的)Web 管理 UI。运行 warpgate setup 可交互式生成配置文件(包括端口绑定)。它以特定格式的凭据接收连接,在本地对用户进行认证,自行连接目标,然后把双方连接在一起,并可选地录制会话。通过 HTTPS 连接时,Warpgate 会呈现可用目标列表,随后把会话中的所有流量代理到所选目标,且可随时在目标之间切换。
目标与用户列表通过管理 UI 管理并相互分配,会话历史存储在 SQLite 数据库中(默认位于 /var/lib/warpgate)。管理 Web 界面还可用于查看实时会话列表、回放会话录像、查看日志等。
与跳板机 / VPN / Teleport 的对比要点(来源以表格形式给出):
- 用户与服务精确 1:1 分配:Warpgate、Teleport 支持;SSH 跳板机与 VPN 通常是访问跳板机/VPN 之后的整个网络。
- 无需自定义客户端:Warpgate、VPN 支持;跳板机需要配置;Teleport 需要自定义客户端。
- 开箱即用 2FA:Warpgate、Teleport 支持;跳板机与 VPN 视情况或需额外 PAM 插件。
- 开箱即用 SSO:Warpgate 支持;跳板机需额外 PAM 插件;VPN 视供应商而定;Teleport 为付费功能。
- 命令级审计:Warpgate、Teleport 支持;跳板机通常只能做连接级审计,若目标上有 root 权限则无法在目标侧安全审计;VPN 同理。
- 完整会话录制:Warpgate、Teleport 支持;跳板机与 VPN 在目标存在 root 权限时无法安全录制。
- 非交互式连接:Warpgate、VPN 支持;跳板机需客户端原生支持跳板;Teleport 需要 SSH 客户端包装器或隧道。
- 自托管、数据自有:Warpgate 与 SSH 跳板机、VPN 自建方案支持;Teleport 为 SaaS。
- 内置防暴力破解:Warpgate、Teleport 支持;跳板机通常需 fail2ban;VPN 视供应商而定。
技术栈:Rust(HTTP 使用 poem-web;数据库通过 sea-orm + sqlx 使用 SQLite;SSH 使用 russh)、TypeScript、Svelte 5、Bootstrap。后端管理与用户面向的 API 使用自动生成的 OpenAPI schema 和 SDK;修改查询/响应结构后运行 just openapi-all 更新 SDK。
项目状态与治理:Warpgate 已在企业环境中被积极使用,后续计划在公开 roadmap 中跟踪。安全问题请使用 GitHub 的漏洞报告系统提交。
AI 透明度声明:2025 年末起该项目开始接受 AI 辅助贡献,贡献者必须披露 AI 使用情况;项目对是否使用 AI 的 PR 采用同样高标准,认为无需在质量或安全上妥协,架构与安全决策 100% 由人类做出。
贡献者:README 列出大量 all-contributors 规范下的贡献者,涵盖代码(💻)与资金(💵)等贡献类型。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
一、使用官方发布方式(推荐)
- 阅读官方 Getting started 文档页面,或使用 Docker 版 Getting started 文档。
- 下载 Release / beta 二进制,或选择 Nightly 构建。
- 在堡垒机 / DMZ 主机上部署该服务。
- 运行
warpgate setup,以交互方式生成配置文件,其中包括端口绑定设置(详见 Getting started 文档)。
- 通过管理 Web UI 添加用户账户与目标主机/URL,并将用户与具体主机和 URL 进行分配。
- 会话历史默认存储在 SQLite 数据库中,路径为 /var/lib/warpgate;在管理 Web 界面中可查看实时会话列表、回放会话录像与日志。
二、从源码构建(Contributing / building from source) 准备环境:需要安装 Rust、NodeJS 和 NPM。
- 克隆仓库(clone the repo)。
- 任务运行使用 Just,安装命令:
cargo install just。
- 安装管理 UI 依赖:
just npm install。
- 构建前端:
just npm run build。
- 构建 Warpgate:
cargo build(可选加--release)。
- 构建产物二进制位于 target/{debug|release}。
三、常见问题与提示
- 如果只使用原生客户端,仍需保证客户端使用特定格式的凭据连接 Warpgate,由 Warpgate 在本地认证后转发至目标。
- 通过 HTTPS 连接时可随时在目标之间切换。
- 修改后端查询/响应结构后,需运行
just openapi-all更新自动生成的 OpenAPI SDK。 - 安全漏洞请通过 GitHub 的漏洞报告系统提交,而非公开 issue。
