开源堡垒机 Warpgate:一个容器搞定 SSH、MySQL 和 Web 访问
简介
什么是 Warpgate ?
Warpgate是一个开源的智能堡垒机(bastion host)/ 特权访问管理(PAM)平台,支持SSH、HTTPS、Kubernetes、MySQL、PostgreSQL、RDP和VNC等多种协议。它可以让用户通过浏览器或原生客户端,在一个入口安全地访问内网的服务器、Web应用和数据库。
主要特点
- 多协议支持:同时代理
SSH、HTTPS、Kubernetes、MySQL、PostgreSQL、RDP和VNC,一套系统管理所有入口 - 无需客户端:原生
SSH客户端、浏览器、数据库客户端均可直接使用,无需安装agent或专用wrapper - 浏览器内置访问:
Web界面内置SSH、RDP、VNC终端,浏览器即可操作内网资源 - 会话录制与审计:所有会话自动录制,可在管理界面实时查看或回放,支持命令级审计
- 双因素认证:内置
TOTP(2FA)与OpenID Connect(SSO)单点登录支持 - 暴力破解防护:内置
IP封禁与用户锁定机制,无需额外配置fail2ban - 细粒度授权:用户与目标服务
1:1精确授权,通过角色(Roles)管理访问权限 - 单一二进制:
100%安全Rust编写,单文件运行,零外部依赖 - 自托管:数据完全由自己掌控,配置与数据库都存放在本地
SQLite中 - 开源免费:基于
Apache-2.0协议开源,可免费使用和修改
应用场景
- 服务器统一入口:将多台服务器置于
Warpgate之后,运维人员通过一个2222端口访问所有机器,并统一记录所有操作 - HomeLab 远程访问:家庭实验室多台设备,通过一个
HTTPS入口即可访问全部SSH目标和Web应用,配合Cloudflare Tunnel可安全暴露到公网 - 数据库安全代理:通过
MySQL/PostgreSQL代理端口访问内网数据库,无需将数据库直接暴露在公网 - 企业合规审计:满足等保等合规要求,精确记录所有
SSH会话,支持会话回放和操作审计 - Kubernetes 集群管理:作为
Kubernetes代理,安全地管理多个K8s集群 - Web 应用集中入口:通过
HTTPS域名绑定,在一个入口代理内网多个Web应用,可按用户授权访问不同的应用

Warpgate 是一个强调”精确授权 + 完整审计”的开源堡垒机平台,是传统跳板机和商用 PAM 系统的轻量级替代方案。
安装
在群晖上以 Docker 方式安装。
Warpgate 的 Docker 镜像托管在 ghcr.io,且需要经过 setup 初始化配置,因此使用命令行方式安装。
本文写作时,
latest版本对应为0.27.5;

docker cli 安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 warpgate 和 子目录 |
提示:
setup命令为交互式初始化,会引导你设置和admin密码,配置会自动写入/data。
在低内核版本上会出现下面的错误
1 | RNDGETENTCNT on /dev/urandom indicates that the entropy pool does not have enough entropy. Rather than continue with poor entropy, this process will block until entropy is available. |
如果你看到上面👆这个错误,建议换机器安装
? Do you want to record user sessions? (y/n) › 默认就是 yes,只要回车就行

接下来设置 admin 的密码
注意:密码不会回显,千万不要输错了

设置完成

配置会写入到 /data 目录

接下来执行下面的命令
1 | # 一键启动 |
docker-compose 安装
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
官方
Docker Compose配置参考:https://github.com/warp-tech/warpgate/blob/main/docker/docker-compose.yml
1 | version: '3.8' |
然后通过 SSH 登录到您的群晖,执行下面的命令:
1 | # 新建文件夹 warpgate 和 子目录 |

运行
在浏览器中访问 https://<群晖IP>:8888/@warpgate/admin
注意是 https 协议,使用 http 会提示错误

https 也会有错误提示

点 高级 –> 继续前往

现在可以看到登录界面了

用 admin 和我们设置的密码登录

添加主机
点 Add a target 添加主机

在 Targets 中添加要访问的目标(SSH / HTTP / MySQL / PostgreSQL / RDP / VNC / Kubernetes)

以群晖主机自身为例,选 SSH

输入主机IP 、端口等信息

普通用户访问 https://<群晖IP>:8888 后会看到可用的目标列表,点击即可通过浏览器建立连接。

第一次需要点 Accept and connect

接下来就可以操作了

注意事项
- 必须使用 HTTPS 访问:管理界面仅通过
HTTPS提供,首次访问会有自签名证书警告,可替换为域名证书(或放在反向代理后面) - 端口冲突:如果
2222已被系统SSH占用,可改成本地端口如10222:2222 - 域名/证书配置:如果有正式域名和证书,最好在
setup后及时替换/data中的自签名证书 - 安全建议:如需暴露到公网,建议配合
Cloudflare Tunnel/ 反向代理,并启用Warpgate内置的暴力破解防护(Login Protection)做安全封禁
参考文档
Warpgate — Fully transparent SSH, HTTPS, Kubernetes, MySQL and Postgres bastion/PAM
地址:https://github.com/warp-tech/warpgateWarpgate 官方文档
地址:https://warpgate.null.page/Docker 快速入门
地址:https://warpgate.null.page/getting-started-on-docker/warp-tech/warpgate 容器镜像(GHCR)
地址:https://github.com/warp-tech/warpgate/pkgs/container/warpgate