teleport 是 Teleport 开源堡垒机

teleport 代码库分析
 teleport 是 Teleport 开源堡垒机(跳板机)系统的完整源码,由 eomsoft 开发。整体工作流程:

用户浏览器访问 Web 管理界面 → 申请远程连接 → C++ 核心服务做协议代理(SSH/Telnet/RDP 中间人转发)并全程录像 → 事后回 Web 界面审计回放。

一、server/tp_core/ — C++ 核心服务(协议代理 + 录像引擎)
入口 core/main.cpp,以 Windows 服务或 Linux 守护进程方式运行。

架构 = 主进程 + 动态加载的协议插件(TPP):

core/tp_tpp_mgr.cpp:运行时动态加载 tpssh.dll、tptelnet.dll、tprdp.dll,统一调用 tpp_init/tpp_start/stop/timer/command 接口
protocol/ssh/ssh_session.cpp(43KB 核心):基于 libssh 0.7.4 监听 SSH 端口,拦截 shell/sftp 通道,过滤输入输出、记录每条命令
protocol/telnet/:Telnet 同样结构
core/ts_http_rpc.cpp:基于嵌入式 Mongoose HTTP 服务器向 Web 后台提供 JSON-RPC;ts_web_rpc.cpp 反向向 Web 报告会话 begin/update/end
录像格式(common/base_record.h):每个会话一个目录,三个文件——

文件    内容
xxx.tpr    512B 头(magic "TPPR"、用户名/账号/IP、屏幕尺寸、总时长),持续回写
xxx.dat    数据包流(type + size + 相对时间戳),4MB 或 5 秒定时刷盘
xxx-cmd.txt    命令日志(相对时间偏移 + 命令文本),与录像时间轴对齐可点击跳转
二、server/tp_web + server/www — Web 管理后台
tp_web/src/main.cpp:C++ 壳,通过自研 pyshell 库内嵌 Python 解释器,运行 www/teleport/app_bootstrap.py
Python 应用(约 50 个业务文件):Tornado 框架 + Mako 模板 + SQLite,路由在 app/controller/__init__.py
业务模块:
用户/角色/OATH 双因子:controller/user.py
资产主机/远程账号:controller/host.py、controller/account.py
运维授权策略(谁能操作哪些资产/账号,授权映射表):controller/ops.py + model/policy.py
审计回放:controller/audit.py——/audit/replay/{protocol}/{rid} 渲染回放页,JS 逐包重放终端输出;get-record-header/get-record-data 分页读 .tpr/.dat
实时监控:WebSocket(controller/ws.py)+ TP_FLAG_RECORD_REAL_TIME
三、client/ — 浏览器助手 tp_assist
tp_assist_win/(Win32 托盘程序)+ tp_assist_macos/:

本机监听 HTTP,接收 Web 页面跳转的会话指令
自动调起本地第三方客户端(PuTTY/SecureCRT/XShell/WinSCP/macOS Terminal)去连堡垒机——它是“网页与本地终端软件之间的胶水”,不是自研终端
四、common/ — C++ 公共库
libex/:自研基础库(日志、字符串/宽字符转换、线程、动态库加载、Windows 服务安装)
pyshell/:嵌入式 Python 封装,供 tp_web 用
teleport/teleport_const.h:跨模块协议常量(认证方式、协议类型 1=RDP/2=SSH/3=Telnet、会话状态、授权标志如允许录像/剪贴板/磁盘映射/SFTP、错误码 TPE_*)
五、build/ + dist/ — 构建与分发
build/builder/build-external.py(35KB):自动下载编译第三方库(openssl、jsoncpp、mongoose、mbedtls、libssh、libuv、sqlite3)
build-server.py:产出 tp_core.exe + 三个协议 dll;build-assist.py + NSIS 打客户端安装包;build-pysrt.py 生成内嵌 Python 运行时
dist/server/script/main.py:安装/升级程序(Linux 生成 /etc/init.d/teleport,Windows 注册 sc 服务)
总结:各目录作用
目录    作用
server/tp_core    堡垒机心脏:SSH/Telnet/RDP 协议中间人代理、会话录像、加密
server/www    Web 管理后台:用户/资产/授权策略/审计录像回放/命令日志
client    浏览器助手:调起本地 PuTTY/XShell 等连入堡垒机
common    C++ 公共库 + 跨模块常量定义
build/dist    全平台编译脚本 + 安装包

posted on 2026-10-03 08:01  lydstory  阅读(6)  评论(0)    收藏  举报

导航