【OneTerm】开源堡垒机 — 企业级 SSH 访问控制与审计平台
轻量级零壁垒堡垒机,基于 4A 理念(认证、授权、账户、审计)实现对企业基础设施的安全访问管控。
一、引言:痛点与场景
作为企业运维负责人,你是否正在经历这些困境?
公司服务器越来越多,团队成员手里的 SSH 账户和密码散落在各自的记忆和文档里,一旦有人离职就面临"密码要不要改、谁改、改哪些"的尴尬;服务器被攻击了,日志里留下一堆陌生 IP 和可疑命令,但根本查不出来是谁在什么时间登过这台机器;云服务器直接暴露在公网,22 端口每天被无数扫描工具试探,密码稍有简单就被攻破,企业安全合规审计无法通过;紧急故障需要快速远程到生产服务器,但密钥管理混乱,临时开放权限后没有及时回收,留下安全隐患。
传统的服务器访问管理方式已经难以满足现代企业的安全合规需求——密钥共享导致责任无法明确、缺乏录屏审计使得事后追溯困难、权限控制粗粒度(只能到服务器级别,无法到命令级别)。运维安全领域迫切需要一套完整的解决方案来统一管理访问入口、记录操作行为、落实权限最小化原则。
OneTerm 正是为解决这些问题而生——一个轻量、灵活、开源的企业级堡垒机解决方案。
二、项目简介
OneTerm 是一款面向企业的开源堡垒机(Jump Server / Bastion Host)产品,基于 4A 安全理念设计——Authentication(认证)、Authorization(授权)、Account(账户)、Audit(审计),通过对访问行为的全程管控和记录,确保企业基础设施的安全与合规。
OneTerm 项目核心数据:
| 指标 | 数值 |
|---|---|
| GitHub Stars | 1.4k |
| Forks | 144 |
| License | Apache 2.0 |
| 主要语言 | Go(后端)+ Vue.js(前端) |
| 最新版本 | v25.9.1 |
| 平台支持 | Linux(后端)/ 浏览器 Web UI |
| 官方网站 | https://veops.cn |
| 产品文档 | https://veops.cn/docs/docs/oneterm/onterm_design |
OneTerm 的核心设计理念是"最小化暴露面":所有内部服务器不直接暴露在公网,运维人员必须先登录 OneTerm 堡垒机,通过堡垒机统一转发访问内部资产。堡垒机负责身份认证(支持 LDAP、OTP、密码等多因素)、访问策略控制(IP 时段、权限粒度)、会话录屏与命令审计,操作行为全程可追溯、可回放。
三、系统架构
OneTerm 采用经典的前后端分离架构:Vue.js 前端通过 RESTful API 与 Go 后端通信,WebSocket 承载实时终端会话,SSH 协议负责与目标主机的交互。整个系统由堡垒机核心、Backend API、WebSocket 服务和数据库四大组件构成。

▲ 图1:OneTerm 系统架构(用户层 → 堡垒机层 → Backend 层 → 目标资产层)

▲ 图2:OneTerm 访问控制工作流(认证 → 授权 → 连接 → 审计)
整体设计思想: OneTerm 将访问流程分为"入口管控"和"出口转发"两层——入口管控负责身份认证和权限校验,出口转发负责建立安全隧道和记录会话内容。内外网完全隔离,外部用户只能看到堡垒机的 Web 接口,内部资产对外部不可见。
核心组件分层:
(一)用户交互层 — Web Terminal 与管理后台
运维人员通过浏览器访问 OneTerm Web UI,无需在本地安装任何客户端即可完成 SSH 会话。Web Terminal 功能让用户在浏览器内直接打开一个模拟终端,通过 WebSocket 与后端通信,后端再将 SSH 会话内容实时推送回浏览器。管理员则通过管理后天的 Dashboard 查看资产列表、用户权限、在线会话和审计记录。
(二)认证授权层 — 4A 安全模块
OneTerm 的认证模块支持多种认证方式:本地密码认证、LDAP / AD 集成(企业现有账户体系直接对接)、OTP 单次密码(手机令牌或邮件验证码)。授权模块基于资产-用户-权限三元组实现细粒度访问控制,支持按目标主机、端口号、登录时段、来源 IP 等多维度限制权限。
(三)会话管理层 — SSH 跳板与会话控制
OneTerm 提供两种访问路径:Web Terminal(纯浏览器内 SSH)和 SSH 跳板机(本地终端通过 OneTerm 跳转)。两种方式均支持会话录屏(实时记录终端输出,保存为可回放文件)和命令拦截(配置高危命令黑名单,触发时直接阻断并告警)。
(四)数据持久层 — PostgreSQL + Redis
PostgreSQL 存储所有结构化数据:用户账户、资产主机、访问策略、审计日志、会话录屏元数据。Redis 承担会话状态的缓存和实时消息队列功能,WebSocket 连接信息和 JWT Token 的快速校验均依赖 Redis 完成。
数据流向: 用户浏览器 → HTTPS 登录 OneTerm → 认证 + 策略校验 → 选择目标资产 → WebSocket 建立终端会话 → 堡垒机 SSH 连接到目标主机 → 实时录屏 + 命令审计 → 会话结束生成审计记录。
四、核心特性解析
特性一:4A 统一身份认证
OneTerm 基于 4A 理念构建完整的身份管理体系——Authentication(认证,谁能进来)、Authorization(授权,能访问什么)、Account(账户,统一管理)、Audit(审计,全程记录)。企业可以将 OneTerm 对接到已有的 LDAP / Active Directory 域,实现单点登录(SSO),避免运维人员在多个系统间重复登录,密码策略也得以统一执行。
特性二:Web Terminal 浏览器内 SSH
无需在本地安装任何 SSH 客户端,打开浏览器即可对目标主机发起操作。Web Terminal 基于 WebSocket 协议实现实时双向通信,支持与本地终端一致的按键交互(包括 Vim、tmux 等终端应用的正常使用),会话内容实时录屏并存储在服务端,管理员可以随时回放任意历史会话。

▲ 图3:OneTerm 工作台 — 左侧资产树 + 中间资产列表 + 右侧工具栏

▲ 图4:Web Terminal 成功连接阿里云 ECS 主机
特性三:细粒度访问控制策略
相比传统堡垒机只能控制"谁能登录哪台服务器",OneTerm 支持更细粒度的策略配置:可以限制用户只能在某个时间段(工作日 9:00-18:00)访问指定主机,可以限制来源 IP(仅允许来自公司出口 IP 的访问),还可以限制该用户只能使用特定端口(禁止访问数据库的 3306 端口,只能通过特定跳板机访问)。策略匹配引擎在用户发起连接时实时校验,不符合条件的一律拒绝。

▲ 图5:访问授权 — 细粒度配置连接、上传、下载、复制、粘贴等权限
特性四:资产管理与资产树
OneTerm 提供直观的资产树导航,支持按目录层级组织服务器、数据库、网络设备等资产。点击资产左侧的"+"号可展开该资产下关联的所有系统账号,实现"资产-账号"的层级化管理。管理员可批量导入资产,支持按名称、IP、协议类型等多维度检索。

▲ 图6:资产列表 — 目录树 + 资产详情 + 在线状态

▲ 图7:新增资产 — 先选目录,再点创建按钮
特性五:会话录屏与命令审计
OneTerm 对所有通过堡垒机的会话进行实时录屏,录屏文件采用独立加密存储,只有拥有对应权限的管理员才能查看和回放。录屏之外,所有执行的命令也会被结构化记录,配合高危命令拦截规则(如 rm -rf /、drop database)实时分析,发现异常操作立即告警甚至直接阻断。
特性六:RDP 远程桌面支持
除 SSH 字符终端外,OneTerm 还支持 RDP 协议远程 Windows 桌面,用户在浏览器内即可直接操作 Windows 服务器。远程桌面同样支持会话录屏、剪贴板共享、文件传输等辅助功能。

▲ 图8:Web 浏览器内直接操作 Windows 远程桌面
特性七:批量执行与效率提升
面对多台服务器需要执行相同命令的场景(如批量查看日志、批量重启服务),OneTerm 提供批量执行功能。用户先选择目标协议类型(如 Redis、SSH),再勾选多台目标资产,确认后进入批量执行 Tab 页,输入命令一次执行,结果分屏展示,大幅提升运维效率。

▲ 图9:批量执行 — 选择协议类型和目标资产,统一发送命令
特性八:文件管理与网关集成
针对 SSH 与 RDP 协议,OneTerm 提供可视化的文件管理功能。用户在浏览器内即可浏览远程服务器目录结构,上传下载文件(支持批量),无需借助额外 SFTP 工具。网关功能则为无法直接访问的内部资产提供跳板访问能力,管理员只需配置一次网关,后续所有经网关的访问自动记录。

▲ 图10:文件管理 — 远程目录浏览、上传下载、权限查看

▲ 图11:网关管理 — 配置跳板机实现安全访问链路
特性九:密码托管与代填
企业内大量服务器的 root 密码、数据库账户密码如何管理?OneTerm 提供密码托管功能,管理员可以在后台集中存储服务器账户密码(加密存储),用户通过 OneTerm 连接目标资产时无需知道密码,OneTerm 自动代填并记录代填日志。密码可以定期自动轮换,进一步降低密码泄露风险。

▲ 图12:账号管理 — 集中创建和管理资产关联账号
特性十:Docker Compose 一键部署
生产环境部署只需一条命令:
git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
docker compose up -d
系统自动启动后端 API、Web UI、PostgreSQL、Redis 所有组件,无需手动配置数据库连接和端口映射,安全部署模式还提供密码初始化向导,引导管理员配置生产级密码。
五、快速上手
环境要求: Linux(Ubuntu 20.04+ / CentOS 7+),Docker + Docker Compose
(一)快速部署(默认密码)
git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
docker compose up -d
(二)安全部署(自定义密码)
生产环境建议使用安全部署模式,运行初始化向导配置密码:
git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
./setup.sh # 交互式配置:数据库密码、JWT 密钥、管理员密码
docker compose up -d
(三)启动与验证
# 查看容器状态
docker compose ps
# 查看日志确认启动正常
docker compose logs -f
(四)访问控制台
# 浏览器访问 Web UI
open http://127.0.0.1:8666
# 默认账户:admin / 123456
# 建议首次登录后立即修改默认密码
(五)仪表盘概览
登录后映入眼帘的是仪表盘页面,直观展示当前系统关键指标:在线资产数、会话数、连接用户数、网关状态,以及资产活跃趋势图和账号登录柱状图,帮助管理员快速掌握全局安全态势。

▲ 图13:仪表盘 — 实时展示连接数、资产数、用户数及活跃趋势
六、实战演示
场景:配置新员工访问权限,从入职到首次登录目标服务器
Step 1: 管理员登录 OneTerm Web UI(http://127.0.0.1:8666),使用管理员账户进入后台管理系统。
Step 2: 添加部门与用户。依次点击「系统管理」→「用户管理」→「新建用户」,填写新员工姓名、邮箱、登录账户,选择所属部门(部门继承权限策略)。
Step 3: 导入目标资产。如果已接入 Veops CMDB,资产数据会自动同步;否则手动添加:点击「资产管理」→「新建资产」,填写主机名、IP、SSH 端口(默认 22)、操作系统类型(如图 7 操作)。
Step 4: 建立访问授权策略。点击「权限管理」→「新建策略」,将新员工用户绑定到目标资产,配置允许访问的时间段(如工作日 9:00-18:00)和来源 IP 限制。
Step 5: 配置密码托管。管理员在资产详情中填写该台服务器的登录密码(加密存储),新员工无需知道密码即可通过 OneTerm 代填登录。
Step 6: 新员工用自己的账户登录 OneTerm,在资产列表中找到对应主机,点击「连接」直接进入 Web Terminal,开始远程运维操作。整个会话过程自动录屏并记录命令日志。
七、技术亮点深度解析
亮点一:WebSocket 实时终端的工程实现
OneTerm 的 Web Terminal 不同于普通 Web SSH 工具,其核心在于 WebSocket 与 SSH 协议的桥接:浏览器侧使用 JavaScript 的 WebSocket API 与 OneTerm 后端建立持久连接,后端复用 SSH 连接与目标主机通信,同时将 SSH 会话流(输入+输出)通过 WebSocket 实时推送回浏览器。难点在于如何正确处理 SSH 的 PTY(伪终端)分配——OneTerm 在后端为每个 WebSocket 会话分配一个 PTY,确保 vim、tmux、less 等需要终端特性的工具正常运行。录屏实现则是对 PTY 输出流做全量镜像,一帧不漏地写入录屏文件。
亮点二:基于策略引擎的细粒度权限控制
OneTerm 的权限模型以"用户-资产-权限"三元组为基础,策略引擎在用户发起连接请求时实时查询 PostgreSQL 中的策略记录做匹配。策略条件支持 AND/OR 逻辑组合(时间段 AND 来源 IP AND 用户组),且支持通配符和正则表达式(如允许访问所有以 prod- 开头的资产)。这种设计比传统堡垒机的黑白名单更灵活,也更易于维护——新增一台服务器只需在 CMDB 录入,授权策略自动继承,无需逐个配置。
亮点三:会话录屏与高危命令拦截的闭环设计
录屏解决了"看到了什么"的问题,但实时告警和阻断才能真正控制风险。OneTerm 在 PTY 输出流上串联了一个命令解析器,每次用户按下回车就解析当前命令文本,匹配高危命令规则库(可配置,支持 rm -rf /* 等模式)。匹配成功时,命令不发送给目标主机,而是直接向管理员推送告警消息,并根据策略决定是否阻断会话。这套"录屏+命令解析+实时阻断"的闭环设计,使 OneTerm 不仅是审计工具,更是主动防御系统。
八、相关资源
- GitHub:https://github.com/veops/oneterm
- 官方网站:https://veops.cn
- 产品文档:https://veops.cn/docs/docs/oneterm/onterm_design
- Veops CMDB(资产配置管理):https://github.com/veops/cmdb
- Veops ACL(通用权限控制):https://github.com/veops/acl
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)