ollama server set api key

模型与算力

讲清 Ollama 服务端怎么设 API key 才真正生效:先分清它自带认证和网关代管的区别,再按开机自启、容器、反向代理三类场景给出可照做的配置顺序和排查点。

很多人搜「ollama server set api key」,其实卡在两件事上:一是 Ollama 本身不给你发 key,随便在环境变量里塞一个字符串并不会让接口变安全;二是 key 到底该由 Ollama 管、由前面的网关管,还是由调用方自己带,搞混了就白折腾。这篇按场景把判断标准和落地步骤讲清楚,最后给一份改完不生效的排查顺序。

搜「ollama server set api key」的人,八成卡在同一件事上:把 Ollama 当成一个会发 token 的服务,以为在环境变量里塞个字符串就完事了。实际上这层鉴权基本不是在 Ollama 内部完成的,而是在它前面加的一层网关或代理。先搞清楚钥匙该由谁管,比急着改配置重要得多。

下面按「谁管 key — key 放哪 — 改完怎么验 — 平时怎么养」四步走。每一步都给判断口径和能照着敲的动作,最后给一份不生效时的排查顺序。如果只是想确认自己有没有把服务暴露到公网,可以先到站内检测工具那类页面看一遍口径。

先想清楚:这个 key 该由谁来管

Ollama 内建鉴权
默认没有面向调用方的 key 发放与校验机制,别指望它自己拦人。
前置网关鉴权
在 Ollama 前面放一层代理,由代理校验调用方带来的令牌,再转发请求。
统一网关代管
如果已经接了对话前端或知识库工具,优先让那一层管 key。

判断口径很简单:只在 loopback 上跑、调用方就是你自己,通常不需要 key;一旦服务能被局域网其他机器或公网访问,鉴权就必须在 Ollama 之外补上。不确定自己属于哪种,先到 /tools/verify 看清检测口径,再决定要不要加鉴权层,别反过来先配一串字符再想需求。

  • 只本机自用:不需要 key,重点是别把监听地址开到全网。
  • 小团队内网共享:适合在反向代理上做一层令牌校验,Ollama 只做推理。
  • 已接统一网关:鉴权交网关,Ollama 侧保持默认,避免两处规则打架。
  • 要对外暴露:必须加鉴权层,并同时限制 Ollama 端口只在内网可见。

三种常见放 key 的位置,各自的落地做法

  1. 开机自启(systemd / launchd)鉴权相关环境变量写进服务单元或 plist,改完要重载单元再重启服务;只在当前 shell export 是不生效的,验证方式是看服务进程实际读到的变量。
  2. 容器启动令牌通过 env 或 secret 注入代理容器,别写进镜像。容器里写的 localhost 指向容器自己,指向宿主机 Ollama 必须换成宿主机在容器网络里的地址。
  3. 反向代理由代理统一校验调用方令牌,再转发给 Ollama 的本地端口;显式转发来源地址,否则访问记录里全是代理自己的地址,排障会被误导。
场景key 放哪最容易踩的坑
本机 loopback不放把监听地址改成全网可见
systemd / launchd 自启服务单元里的环境变量改完没重载单元,只重启了进程
容器env 或 secret 注入代理容器里的 localhost 指向容器自身
反向代理代理侧配置或密钥文件没转发来源地址,日志看不出来源

无论哪种方式,key 都别写进会被提交的配置文件。用临时环境变量或外部密钥文件注入,换 key 时先加新值再删旧值,避免调用方集中报错。具体接口路径和参数口径以站内页面当时展示的为准,别长期靠记忆。

改完怎么验证,不生效按这个顺序查

验证要分两步:不带令牌直接请求,应该被挡回未授权;带正确令牌请求,应该能正常拿到模型列表或补全结果。两步都过才算配置成功,只测其中一步容易得出错误结论。

  1. 查进程实际环境用系统自带方式查看服务进程的环境变量,而不是看终端里 echo 出来的值——两者经常不是同一份。
  2. 查令牌格式多数情况要求按标准请求头传递,前缀和大小写都要对;网上抄来的示例经常少了前缀。
  3. 查网络路径确认调用方打的是代理端口而不是 Ollama 直连端口,也确认服务监听地址对调用方可见。/ai-dict/category/infra 里有监听地址等术语的对照。
  4. 查推理本身本地推理慢或响应异常时别急着怀疑鉴权,按 /tools/speed-test 量一遍延迟,把网络耗时和推理耗时分开看。
环境变量改了不生效,九成是改错了地方,不是配错了值。

上线前后要养成的几个习惯

  • 给令牌设置有效期和轮换计划,轮换时先在代理侧加新值再删旧值。
  • 对外只开代理端口,Ollama 默认端口限制在本机或内网。
  • 接口地址和令牌分开存放,日志里不要打印完整令牌。
  • 定期核对模型与接口规格说明,路径与参数以站内页面当时展示的为准。

这些习惯里最容易被跳过的是第三条。排查问题时图省事把令牌打进日志,等于把钥匙贴在门上。要用就用前后几位代替,既能定位又不泄露。

另外,如果你们是通过中转站调用模型的,鉴权方式和中转站本身的资质是两回事。选之前可以到 /sites 看看各家的检测信息,再决定是自建鉴权层还是走现成的。

下一步确认完自己的暴露面之后,顺手看一眼中转站的可信度记录,能省掉很多事后排查。

常见问题

Ollama 自己能不能生成 API key?

不能。它默认不带账号体系,也不会给你发 key;你在环境变量里随便设一个字符串,接口照样是谁都能调。真要做鉴权,得在它前面放一层反向代理或网关来校验令牌,Ollama 只当后端推理服务用。

照着教程改完环境变量,为什么还是没生效?

大概率是改的位置不对。以服务方式运行时,它读的是服务单元里的环境,不是你在终端 export 的那份。改完要重载服务配置并重启服务,再确认调用方打的是代理端口而不是直连端口。

局域网里几台机器要用,key 有必要吗?

看网络信任范围。如果整个局域网都是可信设备、端口也不对外,图省事可以不配;只要有访客网络、外包同事或出口映射,就建议加一层鉴权,并顺手把 Ollama 的监听限制在内网地址上。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。