在 Windows 上装完 Ollama,很多人第一反应是「api key 填哪儿」,翻遍设置面板也找不到输入框,于是以为漏装了组件。其实 Ollama 本机监听默认不做密钥校验,能填 key 的地方在反向代理、隧道或上层应用那一侧。这篇按你实际会遇到的三种场景分头讲:纯本机、局域网共享、对外暴露,各给一套能照着做的步骤和验证方法。
在 Windows 上装完 Ollama,很多人第一反应是「api key 填哪儿」,把设置面板翻了个底朝天也没找到输入框,于是怀疑自己是不是漏装了组件。其实这个疑惑本身就是答案:Ollama 本机监听默认不做密钥校验,能填 key 的地方根本不在它自己身上,而在反向代理、隧道或者上层应用那一侧。
这篇按你实际会遇到的三种场景分头讲:纯本机自用、局域网共享、对外暴露。每种场景给一套能照着做的步骤和验证方法,最后再给一个固定的排查顺序,改完不用瞎试。
先搞清:Ollama 本身有没有 key 这个东西
先把概念理顺,后面才不会白折腾。Ollama 的服务只绑定回环地址,能连上就等于有权限,它默认不区分调用方是谁。你找不到「API Key」输入框不是装错了,是这个配置项压根不存在。需要密钥的场景,几乎都来自「不是从本机访问」这个前提。
- 服务默认只监听本机回环地址,本机调用天然通行,没有校验环节
- 设置界面里没有密钥字段是设计如此,不是版本问题,也不是安装残缺
- 局域网其它机器来连、走公网隧道、上层应用要做多租户隔离,这三类才会催生鉴权需求
- 判断顺序固定:先确认调用方是不是本机,再看是不是经过反代或隧道,最后才决定要不要自己加鉴权
只在自己电脑上用:什么都不用配,但把变量钉死
如果你就是本机跑跑脚本、本地工具里填一下地址,那真的没什么可配的。要做的是把「只监听本机」这件事确认死,再顺手把容易变的环境变量固定下来,省得以后升级或者换 Windows 账号时模型全部重下。
- 确认监听范围用 netstat 或资源监视器看 Ollama 占用的端口,确认监听地址是回环而不是全部网卡;如果发现是对外可访问,说明有东西改过它的启动配置,先改回来再谈别的
- 固定模型存储路径把模型目录这类环境变量设成绝对路径,写进系统环境变量而不是临时终端会话;Windows 上注意路径里的空格要处理,改完重启一次服务再验证旧模型还在不在
- 应付上层工具的必填字段有些客户端把密钥字段设成必填,纯本机场景随便填一个非空字符串通常就能过,因为服务端不校验;但这招只在纯本机成立,一旦监听放开立刻作废
什么情况下不适用:只要你把监听地址放开到局域网或公网,这一节所有结论都不算数,必须往下走反代那条路。
局域网共享或对外暴露:在反代那一层加 key
思路很简单:让 Ollama 继续只监听本机,前面挂一个反向代理,所有外部请求先到代理,代理校验请求头里的密钥,匹配才转发给 Ollama,不匹配直接拒绝。这样鉴权逻辑集中在一处,Ollama 本身不用动。
| 环节 | 要做的判断 | 常见坑 |
|---|---|---|
| 密钥存放 | 放在代理的环境变量或独立配置里,不要写进会被提交的文件 | 密钥进了仓库,等于没设 |
| 校验方式 | 比对自定义请求头的值,不匹配返回未授权状态码 | 只校验路径不校验头,等于没拦 |
| 进程方式 | 把代理注册成 Windows 服务,配好开机自启 | 关掉终端就断,半夜挂掉没人知道 |
| 日志 | 代理日志和 Ollama 日志分开落盘 | 只看一边,出错时找不到是谁拒的 |
客户端侧就是把 base url 指向代理地址,并在请求头里带上你约定的那个字段和对应的值。如果你不确定自己这套组合的实际延迟水平,改完先量一遍,再到 /tools/speed-test 对比,别把代理引入的开销当成模型变慢。
什么情况下不适用:代理和 Ollama 装在同一台机器、也只有你自己用,加这层属于纯多余,维护成本大于收益,老老实实回到上一节更省心。
改完怎么验:三步排查顺序
配完别急着高兴,按下面三步依次验证,每步都要拿到明确结果再往下走,跳步最容易把问题越查越乱。
- 第一步验连通不带密钥直接请求一次。如果照样返回结果,说明鉴权根本没生效,问题出在代理没拦到请求,而不是密钥写错
- 第二步验拦截带上一个故意写错的密钥再请求,应当被明确拒绝。如果仍然通过,回去检查代理匹配的路径前缀对不对,多数情况是前缀没盖住你实际调用的接口
- 第三步验客户端把客户端的 base url 和请求头字段名逐字核对一遍。大量「连不上」其实是地址末尾多了或少了一个斜杠,或者头字段名大小写对不上
整个排查顺序固定为「服务是否在跑 → 端口是否可达 → 鉴权是否生效 → 客户端字段是否一致」,不要跳步,也不要在没确认前一步的情况下怀疑后一步。另外,密钥别用弱口令,也别和别的服务复用同一个值;轮换密钥时记得代理和客户端一起改,只改一边就是自己给自己制造故障。
如果你还想顺带了解各家官方接口的鉴权方式和字段习惯,作为设计自己这套代理的参考,可以到 /sites 看当时的资料整理;想对比不同接入方案的实际连通表现,/rankings 里也有对应入口。
下一步把三种场景对照一遍,确认自己属于哪一种再动手;顺手到工具目录看有没有现成的连通性检测工具,能省掉手工请求的功夫→常见问题
Ollama 有没有自带的 api key 可以生成?
没有。它本机接口默认不做密钥校验,也没有生成密钥的命令或界面。你在别处见到的 key 基本来自三层:上层应用自己发的、反向代理约定的、或者某个聚合平台的,跟 Ollama 本身无关。
上层工具里 key 那一栏是空的就保存不了,怎么办?
先确认你调的是本机地址。如果是本机,填任意非空字符串一般就能过,因为服务端不校验。但一旦你要把服务开放给别的机器,这个随手填的值必须换成反代里真正校验的那一个,否则等于没设。
设置完还要不要重启 Ollama?
改环境变量通常要重启服务才生效,改反向代理配置则重启代理即可。建议改完先确认进程确实起来了,再做连通性验证。具体某个变量当前是否被识别,可以去 /ai-dict/category/infra 对照术语口径。