百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

保护你的本地DeepSeek安全,Ollama设置API Key

ahcoder 2025-06-08 18:49 1 浏览

Ollama随着部署数量的增加,Ollama 服务器的“裸奔”现象也逐渐显现,这给用户带来了潜在的安全隐患。本文将结合三个链接的内容,详细介绍如何通过设置 API Key 来保护你的本地 DeepSeek 安全。

Ollama 作为一款支持运行多个大模型的工具,默认情况下并未启用身份认证功能。很多开发者可能忽视了这个问题,导致其大模型服务暴露给了不明身份的访问者,这不仅给服务带来了风险,还可能引发大规模的资源滥用事件。因此,为 Ollama 配置身份认证,限制未授权的访问,是防止数据泄露、保护计算资源以及提升系统安全的必要措施。


通过 Caddy 反向代理添加 HTTP Basic Auth 认证



方法一:通过 Caddy 反向代理添加 HTTP Basic Auth 认证

安装 Caddy

Mac/Linux 系统:
curl https://webi.sh/caddy | sh
# linux下载目录在:~/Downloads/webi/caddy
# 如果从github下载超时,可以提前手动下载放入进去
#执行配置生效
source ~/.config/envman/PATH.env

Windows 系统:
curl.exe https://webi.ms/caddy | powershell

caddy 配置文件

#配置canddy的配置文件,如果没有文件目录,手动创建
cat <<EOF > /etc/caddy/Caddyfile
:11435 {
# Define a matcher for authorized API access
@apiAuth {
header Authorization "Bearer {env.OLLAMA_API_KEY}"
}
# Proxy authorized requests
reverse_proxy @apiAuth http://localhost:11434 {
header_up Host {http.reverse_proxy.upstream.hostport}
}
# Define a matcher for unauthorized access
@unauthorized {
not {
header Authorization "Bearer {env.OLLAMA_API_KEY}"
}
}
# Respond to unauthorized access
respond @unauthorized "Unauthorized" 401 {
close
}
}
EOF

设置API KEY

#设置新 API KEY
export OLLAMA_API_KEY=`echo "sk-ollama-$(openssl rand -hex 16)"`
echo $OLLAMA_API_KEY

# 保存 API KEY 便于后续使用
echo "export OLLAMA_API_KEY=$OLLAMA_API_KEY" > /etc/caddy/ollama_api_key

# 设置 API KEY 为已保存的 API_KEY
source /etc/caddy/ollama_api_key

启动caddy

#启动caddy服务
caddy run --config /etc/caddy/Caddyfile &
  
  #上述配置设置了 caddy 的端口是 11435,ollama的端口是11434

通过以上步骤,Caddy 会将所有对 Ollama 服务的请求进行身份验证,确保只有输入正确的用户名和密码的用户才能访问。


方法二:使用 Docker 镜像运行带有基本认证的 Ollama 服务

  • 项目开源地址:https://github.com/g1ibby/ollama-auth
  • 使用 Docker 镜像,运行以下命令启动带有基本认证的 Ollama 服务:
  • docker run -p 8200:80 -e CADDY_USERNAME=myusername -e CADDY_PASSWORD=mypassword ghcr.io/g1ibby/ollama-auth:latest
  • 这将启动一个新的 Docker 容器,将主机的 8200 端口映射到容器的 80 端口。基本认证的凭据可以通过 CADDY_USERNAME 和 CADDY_PASSWORD 环境变量设置。
  • 访问 Ollama 服务
  • Ollama 服务将自动启动,并在主机的 http://localhost:8200 上可用。

通过 iptables设置ip白名单认证

1. 清理现有规则(可选)

#为了确保没有冲突的规则影响新的配置
iptables -F
iptables -X

2. 清理可能存在的针对11434端口的旧规则(可选)

#在添加新规则之前,先删除任何可能已经存在的针对11434端口的规则:
iptables -D INPUT -p tcp --dport 11434 -j ACCEPT
iptables -D INPUT -p tcp --dport 11434 -j DROP

3.允许本地回环接口(lo)的所有流量

#这是为了确保本机上的服务能够正常通信
iptables -A INPUT -i lo -j ACCEPT

允许特定IP地址访问11434端口

# 允许本机(回环接口)访问11434端口
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 11434 -j ACCEPT

# 允许特定外部IP访问11434端口
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 11434 -j ACCEPT
iptables -A INPUT -s 192.168.1.101 -p tcp --dport 11434 -j ACCEPT
iptables -A INPUT -s 192.168.1.102 -p tcp --dport 11434 -j ACCEPT

4. 拒绝其他所有IP访问11434端口

确保现有的合法连接不会被新规则中断。

#最后一步是添加一个通用规则,拒绝所有其他未明确允许的IP地址访问11434端口
iptables -A INPUT -p tcp --dport 11434 -j DROP

总结

通过以上方法,你可以为 Ollama 服务添加身份认证,避免“裸奔”带来的安全隐患。无论是使用 Caddy 反向代理,使用继承caddy与ollama的 Docker 镜像、使用IP白名单,都能有效提升 Ollama 服务的安全性,保护你的本地 DeepSeek 安全。

相关推荐

Linux 常用命令之 - ls 命令(linux命令ls -lh)

命令介绍英文原意:listdirectorycontents功能描述:用来显示指定目录内的文件列表,可通过选项控制显示内容的详细程度和颜色高亮等命令格式所在路径:/bin/ls(RedHat7之...

超级好玩的Linux命令之跑火车sl命令

之前《超级好玩的Linux命令之cowsay与xcowsay》有跟大家讲解了cowsay命令,这里再讲解一下sl命令的好玩之处。看到sl,有人一定会认为打错了,应该是ls。其实不然,sl命令也是存在的...

Linux无法通过上翻获取history解决办法

1、首先通过set-o查看本机系统的shell定制情况,是否开启了history,如已经开启,转至步骤22、查看/etc/profile的配置,查看HISTSIZE字段的值可以直接使用命令:cat...

Linux ip命令用法(linux ip 命令)

ip命令是一个用于配置和管理网络接口的命令行工具,它在Linux系统中非常常见。通过ip命令,可以实现IP地址配置、路由表配置、网络性能监测、IP隧道配置等功能,它提供许多参数和选项,可以实现各种不同...

推荐20个常用的Linux Vim快捷键及详细说明

:w功能:保存当前文件。示例:编辑后输入:w并回车,文件即被保存。:q功能:退出Vim。示例:输入:q退出(若文件未保存会提示需强制退出)。:wq或:x功能:保存并退出。示例:输入:wq...

Ubuntu 22.04 Tesla V100s显卡驱动,CUDA,cuDNN,MiniCONDA3 环境的安装

今天来将由《蓝创精英团队》带来一个Ubuntu显卡环境的安装,主要是想记录下来,方便以后快捷使用。主要的基础环境1.显卡驱动(nvidia-smi)2.CUDA(nvidia-smi可查看...

一文读懂Linux操作系统的架构和原理

Linux操作系统介绍:Linux操作系统是一个自由和开放源代码的操作系统,由内核、文件系统、应用程序框架和用户空间组成。它可以在多种计算机硬件上运行,包括个人电脑、服务器、嵌入式设备等。Linux操...

linux基础命令之ls命令(ls -l命令linux)

ls命令主要用于查看目录下的文件和文件属性。语法格式:ls参数文件名;参数和文件名可为空,则查看当前目录下的文件操作1:单独执行ls命令,则显示当前目录下的文件(不包含隐藏文件)操作2:ls-l...

Mongodb在Linux上安装教程(mongodb linux安装)

正文开始:系统环境:linuxcentos7mongodb版本:4.4.0一、下载为了保证各处版本一致性及便捷性,使用官网下载安装包安装官网传送门:https://www.mongodb.com/t...

DevOps—Linux命令行进阶(linux dev/zero)

作为DevOps工程师,我每天都使用Linux。在本文中,我想介绍一些我日常使用的Linux命令,帮助我更高效地工作或排除故障。xargsxargs看似非常简单,之前使用方式都是肌肉记忆,后...

15 个实用 Linux 命令(linux常用命令 知乎)

Linux命令行是系统管理员、开发者和技术爱好者的强大工具。掌握实用命令不仅能提高效率,还能解锁Linux系统的无限潜力,本文将深入介绍15个实用Linux命令。ls-列出目录内容l...

Linux lscpu命令用法(linux lspci命令)

lscpu命令是用来显示CPU(CentralProcessingUnit)架构相关信息的命令。lscpu命令的用法如下:1.命令格式:lscpu[选项]2.命令选项:-`-a`显示所有...

linux之ls详解及常用选项组合(linux ls -s)

===ls--help====用法:ls[选项]...[文件]...列出<文件>的信息(默认为目前的目录)。如果不指定-cftuSUX或--sort任何一个选项,则根...

Linux strace、pstack 命令 使用详解

strace简介按照strace官网的描述,strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等...

linux常见面试题及参考答案(linux常见面试题及参考答案及解析)

1.Linux下常用的DNS服务软件是什么,举出集中常用的DNS记录,如果域名是abc.com配置好了一台邮件服务器,IP地址为202.10.0.20,该如何做解析。是否了解bind的智能解析,如...