跳转到主要内容
本地模型运行环境原本并未考虑多用户认证需求。Ollama 完全不具备 API 密钥机制,其维护者建议用户借助 nginx 或 Caddy 这类反向代理来弥补这一缺陷。vLLM、llama.cpp 以及 LM Studio 最多仅能提供 1 静态且非强制性的密钥。相比之下,Tokios 能为每个已注册模型分配专属的、具备权限控制功能的 sk-tok- 密钥,适用于每位用户或每项服务,且无需配置反向代理、TLS 证书或防火墙规则。

关于 Ollama API 密钥的简要说明

Ollama 并不支持 API 密钥机制。当您运行 ollama serve 后,位于 http://localhost:11434 的 API 接口会接受任何能够访问该端口的用户发来的请求。Ollama 本身既无 --api-key 相关参数,也不执行 Authorization 头部校验,更不具备按用户划分权限的功能。 若需限制能够调用 Ollama 模型的用户范围,您有以下 2 种方案可供选择:
  1. 反向代理(如 nginx、Caddy):在 Ollama 前端配置 HTTP 基础认证或令牌校验机制。此时您需要自行管理代理配置、TLS 证书以及密钥轮换事宜。
  2. Tokios 连接器:在 Ollama 旁部署连接器,随后在控制台完成部署注册并生成具备权限控制功能的 sk-tok-… 密钥即可。该方案无需配置代理、TLS 或开放任何入站端口。详情请参阅下方的 Tokios 如何生成密钥。

当前各运行环境所提供的功能情况

这些并非运行环境的缺陷;它们原本就是专为模型服务而设计,并未考虑多租户访问控制需求。而 Tokios 正是在此基础之上补充了相关功能。具体信息可参考各项目的官方文档: 上述方式均无法生成针对特定人员的令牌,也无法限定令牌仅能用于特定模型,更无法单独撤销某个调用者的权限而不影响其他用户。这正是 Tokios 能够弥补的不足。

Tokios 生成令牌的具体流程

Tokios 位于客户端与本地运行环境之间。一旦连接器完成配对且模型被注册为一次部署,所有对该模型的请求均需使用 Tokios 生成的 API 密钥进行认证——而非 Ollama、vLLM、llama.cpp 或 LM Studio 所提供的任何令牌。
1

对模型进行注册操作

配对连接器并为您的模型指定一个公开名称(即部署),操作位置在 Models 选项卡中。如果尚未完成此步骤,请参阅注册模型。
2

在“令牌”标签页创建新令牌

进入 Keys 标签页并点击 Create key。为该令牌设定一个显示名称,还可借助 model patterns 指定使用范围——输入类似 gemma*, gpt-4* 这样的以逗号分隔的匹配规则,从而限定令牌仅能用于指定部署。若留空 * 则允许该令牌访问所有已注册模型。
3

妥善保存生成的令牌

生成的令牌仅会显示一次,内容形如 sk-tok-...。请立即将其复制并存储至密码管理器或机密信息库。系统最多允许保留 50 个有效令牌,且后续均可对它们进行编辑、轮换、禁用或删除操作。
4

利用令牌完成请求认证

将 API 密钥作为 Bearer 令牌填入 Authorization 请求头中即可:
关于创建、轮换与撤销密钥的完整机制,请参阅 API 密钥。

请为每位团队成员或每项服务分别分配专属密钥。

由于共用静态密钥(甚至不使用任何密钥)无法区分不同调用方,因此对待 Tokios 密钥的方式应等同于对待任何需共享给多人的敏感凭据:
  • 每位人员或每个环境对应一个密钥。请为每位团队成员、每个持续集成任务或每项服务分别生成独立密钥。若有人离职或设备丢失,只需在 Keys 页面禁用对应密钥,其余人员仍可正常使用服务。
  • 仅允许密钥访问指定的模型。可针对各密钥设定对应的模型范围。仅被授权访问 gemma* 的密钥无法调用 gpt-4* 部署,即便两者均通过同一连接器提供服务。
  • 泄露的密钥无法被其他租户使用。所有密钥均绑定至您的账户,还可进一步限定特定部署范围,因此即便密钥外泄,也无法访问非授权范围内的模型。
快速生成受限权限密钥的最佳方式是通过 Share Key 页面中的密钥管理功能:系统会自动生成专属密钥并发送一次性查看链接至指定邮箱(密钥本身不会直接出现在邮件内),同时可自定义模型范围、访问口令及有效期,并支持一键撤销。详情参见 通过邮件分享密钥。
当密钥尝试调用超出其权限范围的部署时,Tokios 会返回 HTTP 403 状态码予以拦截:
若返回 403 则表示该密钥无权使用对应模型(或账户已被暂停使用);若返回 404 则说明所指定的部署名称不存在。完整状态码说明请查阅 API 端点说明。
轮换密钥的操作流程与普通凭据轮换一致:先生成新密钥并更新调用端配置,待流量完全切换后再停用旧密钥即可。

接下来该做些什么呢?

无法直接从 Ollama 生成 API 密钥,因为该服务本身并不具备密钥管理机制。若需在 Ollama 前端添加身份验证功能,可借助 Tokios:在 Keys 标签页创建密钥,随后复制 sk-tok-… 的值,并在 API 请求中将此值作为 Authorization: Bearer sk-tok-YOUR_KEY 发送即可。Tokios 可负责处理身份验证、权限划分以及密钥撤销等操作。
vLLM 在启动服务器时支持设置 1 静态 --api-key 参数(例如 vllm serve model --api-key my-key)。该参数生成的密钥为所有用户共用,不过 vLLM 官方安全指南指出不应仅依赖此机制。如需实现按用户分配密钥,可在 vLLM 之上部署 Tokios。
llama.cpp 服务器虽允许配置 --api-key 参数,但该参数生成的密钥同样为所有用户共用且无法按用户划分权限。而 Tokios 可为每位用户或服务生成专属的 sk-tok-… 密钥,并限定其可访问的模型范围。

API 密钥相关说明

关于创建、权限划分、轮换及撤销密钥的完整操作机制。

快速入门指南

配置连接器、注册上游模型 ID,并完成首次经过身份验证的完整请求流程。

注册上游模型 ID

为本地部署的模型设定一个便于客户端调用的公开名称。

Ollama 远程访问

无需开放入站端口即可从其他机器连接至 Ollama 实例。