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 全平台编译脚本 + 安装包
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 全平台编译脚本 + 安装包
浙公网安备 33010602011771号