Ollama v0.31新版本安全配置避坑完整教程
Ollama 默认安装后监听 127.0.0.1:11434,仅限本机访问。
但很多新手为了远程使用或部署服务,会修改监听地址到 0.0.0.0,直接暴露整个 API 端口,没有任何鉴权。
Ollama v0.31 版本虽然新增了 API_KEY 支持,但默认并不启用,必须手动配置。
本文针对 v0.31 版本的安全配置,列出从准备到验证的完整步骤,以及最容易掉进去的坑。
准备工作
- 已安装 Ollama v0.31(可通过
ollama --version确认) - 操作系统:Linux(本文以 Ubuntu 22.04 为例,Windows/WSL 类似)
- 具有 sudo 权限,能修改系统环境变量和防火墙规则
- 如果在远程服务器操作,请确保你当前有替代登录方式(如 SSH),避免锁住自己
步骤一:检查当前监听状态
先看 Ollama 目前绑在哪个地址。
运行:
sudo netstat -tlnp | grep 11434
如果显示 127.0.0.1:11434 表示安全;
如果显示 0.0.0.0:11434 则已暴露。
再看环境变量:
echo $OLLAMA_HOST
如果输出 0.0.0.0 或 ::,说明你之前手动改过监听,这是风险来源。
步骤二:启用 API 密钥鉴权(v0.31 关键特性)
Ollama v0.31 新增通过环境变量 OLLAMA_API_KEY 启用秘钥验证。
设置方式:
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf <
重要:替换 your-strong-random-key 为长随机字符串。
重启后,所有 API 请求必须带上 HTTP 头 Authorization: Bearer your-strong-random-key,否则返回 401。
步骤三:限制绑定地址与防火墙规则
即使加了密钥,也不建议监听 0.0.0.0。
建议仅绑定内网 IP 或 127.0.0.1,如需外网访问应使用 nginx 反向代理 + HTTPS。
修改绑定地址(同样通过环境变量):
sudo tee -a /etc/systemd/system/ollama.service.d/override.conf <
如果需要让内网其他机器访问,可改为内网 IP,例如 192.168.1.100:11434,但配合防火墙只允许特定 IP。
配置 UFW 防火墙(示例:只允许 192.168.1.0/24 访问 11434 端口):
sudo ufw allow from 192.168.1.0/24 to any port 11434
sudo ufw deny 11434 # 先拒绝所有,再放行指定网段(顺序重要)
# 注意:先添加允许规则,再添加 deny,否则会全部拒绝
sudo ufw reload
步骤四:验证安全配置是否生效
- 本地无密钥请求应被拒绝:
curl http://127.0.0.1:11434/api/tags
返回 {"error":"unauthorized"} 说明鉴权正常。
- 带正确密钥请求应成功:
curl -H "Authorization: Bearer your-strong-random-key" http://127.0.0.1:11434/api/tags
应返回模型列表。
- 远程访问测试:从另一台机器
curl http://服务器IP:11434/api/tags,如果防火墙规则生效,连接会超时或被拒绝。
避坑说明
- 环境变量优先级:
/etc/systemd/system/ollama.service.d/override.conf中设置的变量优先于系统环境。修改后必须daemon-reload再restart。 - 客户端头名称:必须使用
Authorization: Bearer,大小写敏感,空格不能错。很多新手写成bearer小写导致 401。 - 防火墙规则顺序:UFW 规则有先后,先放行再拒绝才有效。如果先 deny all,再 allow 会被覆盖。建议使用
sudo ufw status numbered检查顺序。 - Docker 部署注意:如果使用 Docker,环境变量通过
-e OLLAMA_API_KEY=xxx传入,且端口映射 (-p) 最好映射到 127.0.0.1 或使用 Docker 网络隔离。 - 不要只用密钥就暴露端口:密钥是明文传输,建议仍结合 HTTPS 使用。
高频问题解答
Q:设置 API_KEY 后 ollama 启动失败,日志提示无效?
A:检查环境变量名称是否完全正确 OLLAMA_API_KEY(注意下划线)。另外 v0.31 以下版本不支持该变量,请升级。
Q:我明明绑定了 127.0.0.1,为什么远程还能访问?
A:如果之前通过 ufw 或 iptables 设置了端口转发或 DNAT,即使绑定 127.0.0.1 也可能被绕过。请检查 iptables -t nat -L。
Q:如何在不重启 Ollama 的情况下临时开放某个 IP?
A:修改 UFW 规则后执行 sudo ufw reload 即可,无需重启 Ollama 服务。
总结
Ollama v0.31 的 API 密钥功能为服务加了一把锁,但前提是你主动开启,并配合绑定地址和防火墙形成多层防护。
按照本文步骤:先检查监听状态 → 启用 API_KEY → 限制绑定与防火墙 → 验证鉴权与连通性,即可避开大多数新手会犯的暴露风险。
遇到问题时优先回看环境变量配置和防火墙顺序,这两块是出坑高频区。