Teleport 为基础设施提供连接、身份验证、访问控制和审计功能。
您可以使用 Teleport 来:
- 为您的所有云和本地基础设施设置单点登录 (SSO)。
- 保护对服务器、Kubernetes 集群、数据库、Windows 桌面、Web 应用程序和云 API 的访问,而无需使用长期有效的密钥或密码。
- 建立安全隧道以访问位于 NAT 和防火墙后面的资源,而无需使用 VPN 或堡垒主机。
- 记录并审计 SSH、Kubernetes、数据库、RDP 和 Web 会话中的活动。
- 在用户、机器、工作负载和资源类型之间应用一致的基于角色的访问控制和基于属性的访问控制 (RBAC/ABAC)。
- 对提升权限的角色或敏感系统实施最小权限和即时 (JIT) 访问请求。
- 为人类用户和工作负载维护单一的身份和访问层。
Teleport 支持 SSH、Kubernetes、数据库、RDP、云控制台、内部 Web 服务、Git 仓库和模型上下文协议 (MCP) 服务器。
更多信息
Teleport 入门
Teleport 架构
参考指南
常见问题解答
目录
- Introduction
- Why We Built Teleport
- Supporting and Contributing
- Installing and Running
- Docker
- Building Teleport
- License
- FAQ
引言
Teleport 包含一个身份感知访问代理、一个颁发短期证书的 CA、一个统一的访问控制系统,以及一个用于访问防火墙后资源的隧道系统。
Teleport 是一个单一的 Go 二进制文件,可与多种协议和 云服务集成,包括
- SSH 节点
- Kubernetes 集群
- PostgreSQL、MongoDB、CockroachDB 和 MySQL 数据库
- Model Context Protocol
- 内部 Web 应用
- Windows 主机
- 网络服务器
您可以将 Teleport 配置为 Linux 守护进程 或 Kubernetes 部署。
Teleport 专注于基础设施安全的最佳实践,包括:
- 无共享密钥,例如 SSH 密钥或 Kubernetes 令牌;Teleport 对所有协议均使用基于证书的认证,并支持自动过期。
- 对所有内容启用多因素认证(MFA)。
- 通过 GitHub Auth、OpenID Connect 或 SAML(配合 Okta 或 Microsoft Entra ID 等端点)对所有内容实现单点登录(SSO)。
- 会话共享,用于协作排查问题。
- 基础设施内省,通过 Teleport CLI 或 Web UI 查看每个 SSH 节点、数据库实例、Kubernetes 集群或内部 Web 应用的状态。
Teleport 使用 Go crypto。它与 OpenSSH 完全兼容,sshd 服务器和 ssh 客户端,
Kubernetes 集群等。
| 项目链接 | 描述 |
|---|---|
| Teleport 网站 | 该项目的官方网站。 |
| 文档 | 管理员指南、用户手册等。 |
| 功能 | 探索 Teleport 的完整功能列表。 |
| 博客 | 我们发布 Teleport 新闻和实用文章的博客。 |
| 论坛 | 向我们提出配置问题,或发布教程、反馈或想法。 |
| 开发者工具 | 数十个免费的基于浏览器的工具,用于代码处理、加密、数据转换等。 |
| Teleport 学院 | 操作指南、最佳实践,以及关于 SSH、Kubernetes、MCP 等主题的深入解析。 |
| Slack | 需要帮助进行设置?请在我们的 Slack 频道中联系我们。 | | Cloud & Self-Hosted | Teleport Enterprise 是为需要轻松且安全地访问其计算环境的团队提供的云托管选项。 |
我们为何构建 Teleport
在 Rackspace 共事期间,Teleport 的创建者注意到, 大多数云用户在设置和配置基础设施安全方面都面临困难。 许多为此设计的流行工具理解起来很复杂, 并且在现代分布式计算基础设施上维护起来成本高昂。
我们决定构建一个易于使用、理解和扩展的解决方案。 一个将所有服务器实时呈现给你,仿佛它们被神奇地传送到你所在的房间。 就这样,Teleport 诞生了!
如今,从爱好者到超大规模云服务商,大家都信赖 Teleport 来简化云 CLI 和控制台、Kubernetes 集群、SSH 服务器、数据库、内部 Web 应用以及 AI 代理使用的模型上下文协议(MCP)的安全。
支持与贡献
我们的目标是让 Teleport 易于采用和贡献,从清晰且全面的文档开始。
如果你有疑问、正在探索想法,或者想验证某些内容,请从 GitHub 讨论开始。讨论有助于我们回答问题、探索用例,并共同决定某件事是否应成为错误报告或功能请求。
-
在 Teleport 讨论区 发起对话
这是提问、分享想法和获取帮助的最佳场所。我们的工程师会积极参与其中,当有明确且可执行的下一步时,讨论可以升级为问题。 -
Issues 用于已确认的 bug 和定义明确的功能请求
如果某项内容已被验证为 bug 或增强功能,请随时提交 issue。如有疑问,请先发起讨论,我们将协助引导。 -
Enterprise 和 POC 支持
如果您正在评估 Teleport Enterprise,或在 POC 期间需要更及时的响应支持,我们可以为您设置专用的 Slack 频道。您可以通过我们的网站联系我们以开始。
安装和运行
要设置单实例 Teleport 集群,请遵循我们的入门 指南。 然后,您可以将您的服务器、Kubernetes 集群和其他 基础设施注册到您的 Teleport 集群中。
您也可以从 Teleport Enterprise Cloud 开始,这是一种托管的 Teleport 部署方式,可更轻松地实现对您的 基础设施的安全访问。
注册 Teleport Enterprise Cloud 的免费试用,并按照本指南注册您的第一台 服务器。
Docker
部署 Teleport
如果您希望在 Docker 容器内部署 Teleport,请参阅 安装指南。
用于本地测试和开发
要在本地运行完整的测试套件,请参阅测试依赖项 列表
构建 Teleport
teleport 仓库包含 Teleport 守护进程二进制文件(使用 Go 编写)
以及一个使用 TypeScript 编写的 Web UI。
如果你的意图是构建并部署用于生产基础设施,
应使用已发布的标签。 默认分支 master 是当前
用于即将发布的主要版本的开发分支。 获取在 https://goteleport.com/download/ 上列出的最新
发布标签,然后使用该标签在 git clone. For example git clone https://github.com/gravitational/teleport.git -b v18.5.0 获取发布
v18.5.0。
Docker 化构建
通常使用 Docker 构建最为简单,这确保了构建所需的所有 工具均可用。 要执行 Docker 化构建,请确保 已安装并正在运行 docker,然后执行:
make -C build.assets build-binaries
此命令将构建与主机架构匹配的 Linux 二进制文件。 无法交叉编译到不同的目标架构。
本地构建
依赖项
从源码构建 Teleport 需要以下依赖项。为了获得最大的兼容性,请使用
build.assets/versions.mk: 中列出的版本安装这些依赖项。
关于在 macOS 上配置开发环境的示例,请参阅这些 说明。
执行构建
重要
- Go 编译器对内存量较为敏感:编译 Teleport 需要至少 1GB 的虚拟内存。没有交换空间的 512MB 实例将无法工作。
- 这将构建 Teleport 的最新版本。
获取源代码
git clone https://github.com/gravitational/teleport.git
cd teleport
要执行构建
make full
tsh 默认情况下动态链接 libfido2,以支持开发环境,前提是能够找到该库本身:
$ brew install libfido2 pkg-config # Replace with your package manager of choice
$ make build/tsh
> libfido2 found, setting FIDO2=dynamic
> (...)
发布二进制文件是静态链接到 libfido2 的。您可以使用 FIDO2 变量切换 链接模式:
make build/tsh FIDO2=dynamic # dynamic linking
make build/tsh FIDO2=static # static linking, for an easy setup use `make enter`
# or `build.assets/macos/build-fido2-macos.sh`.
make build/tsh FIDO2=off # doesn't link libfido2 in any way
tsh 构建 Touch ID 支持需要访问 Apple Developer
账户。如果你是 Teleport 维护者,请向团队申请访问权限。
构建输出并在本地运行
如果构建成功,安装程序会将二进制文件放置在 build
目录中。
在启动之前,创建默认数据目录:
sudo mkdir -p -m0700 /var/lib/teleport
sudo chown $USER /var/lib/teleport
以热重载模式运行 Teleport
为了加快开发流程,你可以使用
CompileDaemon 来运行 Teleport。这将
构建并运行 Teleport 二进制文件,然后在任何 Go 源文件
发生变化时重新构建并重启它。
-
安装 CompileDaemon:
go install github.com/githubnemo/CompileDaemon@latest
请注意,我们使用的是 go install 而非建议的 go get,因为
我们不希望 CompileDaemon 成为项目的依赖项。
-
构建并运行 Teleport 二进制文件:
make teleport-hot-reload
默认情况下,这会运行一个 teleport start 命令。如果您想要
自定义该命令,例如通过提供自定义配置文件
位置,您可以使用 TELEPORT_ARGS 参数:
```shell
make teleport-hot-reload TELEPORT_ARGS='start --config=/path/to/config.yaml'
```
请注意,如果您修改了任何 Protocol Buffers 文件,仍然需要运行 make grpc 以重新生成生成的 Go 源代码;
重新生成这些源代码进而应导致 CompileDaemon 重新构建
并重启 Teleport。
Web UI
Teleport Web UI 位于 web 目录中。
为开发重新构建 Web UI
要重新构建 Teleport UI 包,请运行以下命令:
make docker-ui
然后你可以用新生成的 /dist 文件夹中的文件替换 Teleport Web UI 文件。
为了快速迭代 Web UI,你可以运行一个 本地 web-dev 服务器。
你还可以告诉 Teleport 从源目录加载 Web UI 资源。要启用此行为,请设置环境变量 DEBUG=1
并使用默认目标重新构建:
# Run Teleport as a single-node cluster in development mode:
DEBUG=1 ./build/teleport start -d
在此模式下保持服务器运行,并在 /dist
目录中进行 UI 更改。有关如何更新 Web UI 的说明,请阅读 web
README。
管理依赖项
所有依赖项均使用 Go modules 进行管理。以下是一些常见任务的操作说明:
添加新依赖项
最新版本:
go get github.com/new/dependency
并更新源代码以使用此依赖项。
若要获取特定版本,请改用 go get github.com/new/dependency@version。
将依赖项设置为特定版本
go get github.com/new/dependency@version
更新依赖项至最新版本
go get -u github.com/new/dependency
更新所有依赖项
go get -u all
调试依赖项
为什么导入了某个特定的包?
go mod why $pkgname
为什么导入特定的模块?
go mod why -m $modname
为什么导入了模块的特定版本?
go mod graph | grep $modname
许可证
Teleport 以多种形式分发,具有不同的许可影响。
Teleport API 模块(本仓库中 /api 下的所有代码)
在 Apache 2.0 许可证 下提供。
本仓库中其余的源代码在 GNU Affero 通用公共许可证 下提供。从源代码编译 Teleport 的用户必须遵守此许可证的条款。
在 http://goteleport.com/download 上分发的 Teleport 社区版构建 在 修改版 Apache 2.0 许可证 下提供。
常见问题
Teleport 是否可用于生产环境?
是的,Teleport 已可用于生产环境,并被用于保护当今许多领先公司 最珍贵和关键任务应用的访问。您可以在我们的网站上了解更多关于 在生产环境中使用 Teleport 的公司 在我们的网站上。
Teleport 是否安全?
是的,Teleport 已完成来自国内和国际知名技术安全公司的多项安全 审计。我们在我们的 信任页面 上公开审计结果、我们的安全 理念及相关信息。
Teleport 支持哪些资源?
Teleport 保护对 广泛的基础设施资源 的访问,包括 Linux 服务器、Windows 桌面、Kubernetes 集群、数据库、内部 Web 应用程序、云提供商 API 和控制台(如 AWS、Azure 和 GCP),以及 AI 代理使用的模型上下文协议 (MCP) 服务器。
Teleport 如何部署?
Teleport 可以部署以适应大多数 环境, 既可以作为 Linux 或 Kubernetes 上的自托管集群,也可以使用 Teleport Enterprise Cloud。在所有情况下,Teleport 代理都运行在靠近您的 资源处,并通过强制执行身份、访问控制和审计的 Auth Service 和 Proxy Service 进行连接。
Teleport 是身份提供商 (IdP) 吗?
Teleport 使用现有的 IdP(Okta、Google Workspace、Microsoft Entra ID 或 GitHub)来颁发短期证书并应用访问策略。 Teleport 也可以配置为充当 SAML IdP,在需要时 将用户身份验证到应用程序中。
Teleport 需要凭证处理或密钥管理吗?
Teleport 通过颁发短期、 自动过期的 mTLS 和 SSH 证书 绑定到人类或非人类身份,从而消除了长期密码、SSH 密钥、数据库凭证、 凭证轮换和保险库流程。
Teleport 是特权访问管理 (PAM) 解决方案吗?
Teleport 提供现代 PAM 软件功能,如强 身份验证、会话记录、基于策略的访问和无需密钥、凭证轮换或保险库依赖的 JIT 提权。 这使得使用短期证书 和基于角色的策略,能够实现对服务器、Kubernetes、数据库、云 控制台和其他特权环境的受控、可审计访问。
Teleport 是即时 (JIT) 访问解决方案吗?
Teleport 支持通过有时限的访问请求实现 JIT 访问。 用户请求其临时所需的角色或资源,策略决定是否 需要审批,且权限会自动过期。这种 方法在保持访问工作流 高效且可预测的同时,维持了最小权限原则。
Teleport 是否保护对 Kubernetes 的访问?
Teleport 可以 代理并保护 Kubernetes 访问 ,支持基于身份的认证、基于角色的访问控制,以及 对 kubectl 活动的详细审计。
Teleport 是否支持 SPIFFE?
Teleport 支持 面向工作负载的 SPIFFE 兼容身份, 使其能够参与 SPIFFE 生态系统及联合。 Teleport 颁发短期 SVID,并可与外部 PKI 层级集成。
Teleport 是否是 VPN 或堡垒机的替代方案?
是的。Teleport 常被用作传统 VPN 和堡垒机的替代方案,实现 直接、基于身份的资源 访问 ,而非广泛的网络访问。
Teleport 是否保护模型上下文协议 (MCP) 和 AI 代理?
Teleport 保护 MCP 连接 ,通过在 MCP 客户端和 服务器之间部署身份感知的策略执行。这确保了所有工具调用均经过认证、授权 和审计,无需自定义授权代码,并保护敏感系统 免受过度广泛访问的影响。