把 Ollama 接到自己的应用里时,多数人第一反应是去后台找一串 API Key,结果翻遍界面也没有。这篇不绕弯:先说清 Ollama 默认的鉴权机制,再给出查配置、查端口、查环境变量的具体动作,最后给一套对外暴露时的替代鉴权方案。
把 Ollama 接到自己的应用里时,多数人第一反应是去后台找一串 API Key,结果翻遍界面也没有。这很正常:Ollama 的设计定位是跑在本机上的推理服务,默认不带账号体系,也没有可复制的密钥串。所以「查看密钥」这个动作,本质上不是找一个隐藏开关,而是判断你的使用场景到底需不需要鉴权。
这篇按顺序讲三件事:默认情况下鉴权是怎么处理的,查配置时应该按什么顺序排查,以及确认要对外提供服务之后,用哪几种方式补上密钥这一层。每一步都给可执行的动作,不绕概念。
先接受一个事实:默认没有密钥这个开关
Ollama 装完就是一个监听本机回环地址的 HTTP 服务,没有登录、没有 Key 管理页面。本地开发、同一台机器上的应用调用它,本来就不需要密钥。所以你找不到那串 Key,不是配置错了,而是它压根不存在这个形态。
- 默认只对本机开放,其他机器根本连不上,鉴权在当前场景下是多余的;
- 只有在改过绑定地址、把服务放进局域网或公网之后,才需要自己补一层鉴权;
- 如果你的工具界面强制要求填 Key,可以先填一个占位值试连通性,能不能通取决于服务是否只对本机开放;
- 对外的真实防护不要指望 Ollama 自己,放在反向代理层做更稳妥。
查配置的正确顺序:先看服务在哪,再看环境变量
查配置不要一上来就翻环境变量,先确认服务本身在跑、监听哪个地址与端口。这一步决定了「别的机器能不能调」,也是后面所有鉴权判断的前提。地址、端口、回环这些说法如果不确定,可以到 /ai-dict/category/infra 看术语对照。
- 确认服务状态看进程在不在、端口有没有被占用。服务没起来,后面所有配置都是空谈。
- 确认监听地址回环地址只能本机访问;如果是通配地址,说明已经对外开放,这时候没有鉴权就是裸奔。
- 依次检查环境变量重点看绑定地址、允许访问的来源、模型存放路径这几项。改动后必须重启服务才生效。
- 区分安装方式服务方式安装和手工启动读到的变量可能不同;从容器里跑的,变量要加在容器配置里,改宿主机没用。
| 检查项 | 在哪看 | 改了要重启吗 |
|---|---|---|
| 监听地址与端口 | 服务状态或进程参数 | 需要 |
| 绑定地址变量 | 系统环境变量或容器配置 | 需要 |
| 允许来源白名单 | 同上 | 需要 |
| 模型存放路径 | 同上 | 需要 |
| 调用延迟基线 | 到 /tools/speed-test 核对自己的数字 | 不需要 |
真要对外给 Key,三条可选路子
确认必须对外提供服务之后,密钥这件事只能你自己补。下面三条路子按改动量从小到大排,选哪条取决于调用方有多少、要不要按应用区分权限。
- 反向代理加一层 Basic Auth 或固定 Header 校验,应用侧带上这个 Header 即可,改动最小;
- 用带密钥管理的网关把请求转一手,好处是能按应用发不同 Key、能吊销、能记调用量;
- 直接上专门的推理服务框架,自带密钥与多租户,适合多人共用而不是自己一个人用。
不适用的情况也要说清楚:只是本机自己调、或者只在同一台机器的容器之间调,加鉴权只是给自己添麻烦,还会多一个排查环节。
暴露之前过一遍这份清单
不管用哪种鉴权方式,对外之前先按下面这份清单走一遍。很多问题不是出在鉴权本身,而是暴露面没控制住。
| 检查项 | 风险点 | 处理动作 |
|---|---|---|
| 监听地址 | 误开到通配地址,全公网可达 | 改回回环,或只绑内网地址 |
| 跨域来源 | 默认放开,浏览器能直接打接口 | 设置来源白名单 |
| 并发与限流 | 本地机器扛不住突发请求 | 加限流或并发上限 |
| 日志来源 | 出问题无法回溯 | 记录来源与调用时间 |
| 延迟基线 | 上线才发现响应慢 | 到 /tools/speed-test 先量一遍 |
常见问题
Ollama 到底有没有 API Key?
默认没有。它是一个本机服务,不带账号和密钥体系,所以你在任何界面里都找不到一串可复制的 Key。需要鉴权的时候,是自己在外层加代理或网关来实现,不是 Ollama 提供的功能。
工具提示要填 API Key,我随便填能通吗?
能不能通取决于服务有没有对外暴露。如果服务只在同一台机器上监听,多数工具直接填地址就能连,Key 那一栏留空或填占位值都能过;如果服务已经对局域网或公网开放,就说明你已经在自己加鉴权了,这时候要填的是你代理层设的那个值。
改了绑定地址之后连不上,先查什么?
按这个顺序:一是服务有没有重启,环境变量是不是在正确的启动方式下生效;二是防火墙有没有放行对应端口;三是调用方填的地址是不是新地址而不是老的本地地址。三项都对还连不上,再看是不是容器网络的问题。