根本原因是ollama默认监听127.0.0.1:11434,拒绝外部请求;需将ollama_host设为0.0.0.0:11434并开放防火墙端口,再通过systemd持久化或直接命令启动生效。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

DeepSeek本地部署后调用API时提示“Connection refused”,根本原因是Ollama服务默认只监听127.0.0.1,外部请求(包括Docker容器、局域网设备、Python脚本直连)全部被拒。
确认Ollama是否真正监听外部地址
在终端运行:ss -tuln | grep :11434。如果只看到127.0.0.1:11434而没有*:11434或0.0.0.0:11434,说明服务未对外暴露——这不是DeepSeek的问题,是Ollama的默认安全策略。
这一步必须先做,否则后续所有配置都无效。很多用户跳过验证直接改配置,结果发现根本没生效。
方法一:修改Ollama服务启动参数(推荐)
停止当前Ollama服务:systemctl --user stop ollama(Linux)或任务管理器结束进程(Windows/macOS)。
用自定义host启动:OLLAMA_HOST=0.0.0.0:11434 ollama serve。注意:必须显式指定端口,仅写0.0.0.0会 fallback 到默认端口,但某些系统可能绑定失败。
【关键前提】确保防火墙放行11434端口。Linux执行sudo ufw allow 11434;Windows需在“高级安全防火墙”中新建入站规则;macOS执行sudo pfctl -f /etc/pf.conf前确认规则已包含该端口。
方法二:通过systemd配置持久化监听(Linux用户专属)
第一步:编辑服务文件:mkdir -p ~/.config/systemd/user && systemctl --user edit ollama。
第二步:粘贴以下内容并保存:
[Service]Environment="OLLAMA_HOST=0.0.0.0:11434"Restart=always
第三步:重载并启用:systemctl --user daemon-reload → systemctl --user restart ollama → systemctl --user enable ollama。
这一步做完后,即使重启系统,Ollama也会自动以开放模式启动。不执行enable会导致下次开机恢复默认闭合状态。
方法三:临时绕过——用SSH端口转发(无root权限场景)
如果你在服务器上无sudo权限,又必须让本地脚本访问远程Ollama,执行:ssh -L 11434:localhost:11434 user@remote-server -N。
然后本地脚本连接http://localhost:11434,流量会经SSH隧道转到远程服务器的127.0.0.1:11434。注意:此法不能解决Docker容器内访问问题,因为容器网络不走宿主机SSH隧道。
这个命令后台运行,关闭终端就会断开。需要常驻请加-f参数,但务必配合-N防止分配伪终端。










