开源堡垒机 Warpgate:一个容器搞定 SSH、MySQL 和 Web 访问

简介

什么是 Warpgate ?

Warpgate 是一个开源的智能堡垒机(bastion host)/ 特权访问管理(PAM)平台,支持 SSHHTTPSKubernetesMySQLPostgreSQLRDPVNC 等多种协议。它可以让用户通过浏览器或原生客户端,在一个入口安全地访问内网的服务器、Web 应用和数据库。

主要特点

  • 多协议支持 :同时代理 SSHHTTPSKubernetesMySQLPostgreSQLRDPVNC,一套系统管理所有入口
  • 无需客户端 :原生 SSH 客户端、浏览器、数据库客户端均可直接使用,无需安装 agent 或专用 wrapper
  • 浏览器内置访问Web 界面内置 SSHRDPVNC 终端,浏览器即可操作内网资源
  • 会话录制与审计:所有会话自动录制,可在管理界面实时查看或回放,支持命令级审计
  • 双因素认证 :内置 TOTP2FA)与 OpenID ConnectSSO)单点登录支持
  • 暴力破解防护 :内置 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 方式安装。

WarpgateDocker 镜像托管在 ghcr.io,且需要经过 setup 初始化配置,因此使用命令行方式安装。

本文写作时, latest 版本对应为 0.27.5

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

bash 复制代码
# 新建文件夹 warpgate 和 子目录
mkdir -p /volume1/docker/warpgate/data

# 进入 warpgate 目录
cd /volume1/docker/warpgate

# 修改目录权限
chmod a+rw data

# 初始化配置(交互式,需设置 admin 密码)
docker run --rm -it -v $(pwd)/data:/data ghcr.io/warp-tech/warpgate setup

提示setup 命令为交互式初始化,会引导你设置和 admin 密码,配置会自动写入 /data

在低内核版本上会出现下面的错误

log 复制代码
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 目录

接下来执行下面的命令

bash 复制代码
# 一键启动
docker run -d \
  --name=warpgate \
  --restart=unless-stopped \
  -p 2222:2222 \
  -p 8888:8888 \
  -p 33306:33306 \
  -p 55432:55432 \
  -v $(pwd)/data:/data \
  ghcr.io/warp-tech/warpgate

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

官方 Docker Compose 配置参考:https://github.com/warp-tech/warpgate/blob/main/docker/docker-compose.yml

yaml 复制代码
version: '3.8'

services:
  warpgate:
    image: ghcr.io/warp-tech/warpgate
    container_name: warpgate
    restart: unless-stopped
    ports:
      - "2222:2222"    # SSH 端口
      - "8888:8888"    # Web 管理界面端口
      - "33306:33306"  # MySQL 代理端口
      - "55432:55432"  # PostgreSQL 代理端口
    volumes:
      - ./data:/data   # 存放配置和数据库
    stdin_open: true
    tty: true

然后通过 SSH 登录到您的群晖,执行下面的命令:

bash 复制代码
# 新建文件夹 warpgate 和 子目录
mkdir -p /volume1/docker/warpgate/data

# 进入 warpgate 目录
cd /volume1/docker/warpgate

# 修改目录权限
chmod a+rw data

# 将 docker-compose.yml 放入当前目录

# 初始化配置(交互式,需生成配置文件)
docker-compose run warpgate setup

# 一键启动
docker-compose up -d

运行

在浏览器中访问 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

接下来就可以操作了

注意事项

  1. 必须使用 HTTPS 访问 :管理界面仅通过 HTTPS 提供,首次访问会有自签名证书警告,可替换为域名证书(或放在反向代理后面)
  2. 端口冲突 :如果 2222 已被系统 SSH 占用,可改成本地端口如 10222:2222
  3. 域名/证书配置 :如果有正式域名和证书,最好在 setup 后及时替换 /data 中的自签名证书
  4. 安全建议 :如需暴露到公网,建议配合 Cloudflare Tunnel / 反向代理,并启用 Warpgate 内置的暴力破解防护(Login Protection)做安全封禁

参考文档

Warpgate --- Fully transparent SSH, HTTPS, Kubernetes, MySQL and Postgres bastion/PAM

地址:https://github.com/warp-tech/warpgate
Warpgate 官方文档

地址: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

相关推荐
童槿顏丶1 小时前
docker自动化部署脚本
docker·eureka·自动化
东东最爱敲键盘1 小时前
二阶段总结
运维
Benszen1 小时前
云计算基础-13:Linux网络管理实战-1
linux·运维·云计算
扬帆破浪2 小时前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps
zt1985q2 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
具身智能进化论3 小时前
协作机器人产业进入规模化部署期,未来几年的增长从何而来
大数据·运维·人工智能·机器人·自动化·工厂方法模式
yunyi4 小时前
改个 SSH 端口,我把自己锁在了服务器外面
运维·后端
GlueNa2SiO35 小时前
06-Docker存储与数据持久化
笔记·学习·docker
一位正在转型AI全栈的前端工程师6 小时前
前端转全栈:从 502 到 200,我的第一个 Docker+Nginx+Node.js 项目
docker·容器
jason_renyu6 小时前
Linux Docker 服务管理与排查实战指南(新手速查版)
linux·docker·新手docker学习·docker日志查询·docker服务管理