先说结论这条“25 万 OpenClaw 实例暴露”的安全提醒不是危言耸听更不是在制造流量焦虑。我自己的判断很直接OpenClaw 这类开源 AI Agent 现在确实火但太多人只是照着“openclaw 安装教程”把服务跑起来完全没有想过它背后开着的端口、监听地址和密钥文件意味着什么。这篇文章不打算复述那些公开的统计数据我只想从一个常年做服务部署和自动化落地的人的角度讲清楚三件事你的 OpenClaw 为什么一部署就会暴露、怎么自查自己是不是在“名单”里、以及从本地算力到技能扩展再到安全加固一套完整的正确玩法应该是什么样的。文章比较长既适合刚接触 OpenClaw、准备在安卓 Termux 或云服务器上部署的新手也适合想把 OpenClaw 接到电商、ROS 2 等实际场景里用的老手。我会尽量说人话把参数逻辑讲透保证你照着能落地。1. 25 万这个数字背后为什么 OpenClaw 一部署就会“裸奔”到公网1.1 一个“实例”从启动到暴露通常只差几步先解释一下“实例”是什么。OpenClaw 这类开源 AI Agent 本质是一个运行时它负责接收任务、调度大模型推理、调用浏览器或工具技能、最后把事情做完并返回结果。为了让外部程序或者聊天界面能跟它对话OpenClaw 启动后一定会开一个本地服务端口这个端口既是网页操作入口也是 API 调用通道。问题出在大多数快速开始文档都只教你“跑起来”没教你“怎么安全地只给自己用”。你在云服务器上执行启动命令或者用 Docker 映射端口如果配置文件里没有显式把服务绑定到127.0.0.1它默认就会监听0.0.0.0。这句话换成大白话就是你的服务在向整个互联网打招呼端口一开谁都能来敲你的门。拿 Docker 举个例子最典型的错误启动方式是这样docker run -p 3000:3000 openclaw-image这条命令把容器里的 3000 端口直接映射到了宿主机的公网端口。如果宿主机是云服务器就等于把 OpenClaw 的入口堂而皇之地贴上了公网。正确姿势应该至少先绑回环地址后面我会专门讲。“实例暴露”和“被入侵”还不一样。暴露是被动状态入侵是主动行为。25 万个实例暴露不等于 25 万个都被打穿了但它意味着这 25 万个实例在互联网扫描工具眼里都是可访问目标。你的电脑、你的云主机只要开着 OpenClaw 端口且没有访问控制就随时可能出现在这种“名单”里。1.2 为什么会有这么多人“裸奔”我观察到的原因大致有三类。第一类是“快速体验心态”。很多人刷到 OpenClaw 相关视频或文章马上在云主机上安装、启动、点开网页试一下试完就放着不管了。这类服务没有身份认证没有密钥校验日志里还可能躺着大模型的 API Key属于最典型的暴露。第二类是“只有服务器条件”。想远程访问但不懂内网穿透也不理解防火墙策略索性把端口全部放行。安全组规则常见配成0.0.0.0/0这等于在云厂商防火墙上挂了个说明牌所有端口所有来源都能进。第三类最隐蔽是“日志和配置文件泄漏”。OpenClaw 部署时经常要用环境变量写入大模型厂家的 API Key。有些教程要求你把.env文件放在工作目录如果服务监听了公网而且开启了目录浏览或者调试模式打印了环境变量密钥就直接暴露了。不少人以为“只要模型走的是官方 API就轮不到本地算力”这个认知本身没错但把 API Key 放在裸奔的服务里问题就大了。1.3 暴露之后真正危险的是什么经常有人问我就跑个 AI Agent 玩也不存什么值钱数据暴露了会怎样问题比你想的严重。第一OpenClaw 能调用工具、能操作浏览器、能执行代码攻击者拿到入口之后可以用你的 Agent 去跑任务、消耗你的 API 额度账单上会出现莫名其妙的费用。第二如果宿主机的权限设置不当攻击者能通过接口执行命令进而把服务器变成挖矿或发消息的肉鸡。第三日志里残留的密钥会被自动化脚本捞走用于调用你的 OpenAI、Anthropic 等账号。很多人在部署 OpenClaw 时用的都是自己的主账号 Key一旦被捞走损失的可就不只是这台机器了。所以说暴露名单之所以会滚到 25 万这个量级不是攻击手段有多高明而是太多人把“能用”当成了“安全”。2. 先照镜子怎么确认你的电脑在没在“名单”里2.1 三种典型的暴露“信号”在动手加固之前先判断自己的部署到底是否安全。我总结过三种典型的暴露信号对号入座就行。第一种监听地址显示0.0.0.0或::。这说明 OpenClaw 服务对所有网络接口开放。如果你的服务器有公网 IP那基本等于裸奔。如果监听的是127.0.0.1那至少只有本机能访问问题不大。第二种云厂商控制台的“安全组”或“防火墙”里存在入站规则0.0.0.0/0并且放行了 OpenClaw 对应的端口。很多新手为了方便直接把所有端口都开放了这是最容易自查也最容易修复的一项。第三种日志里出现频繁的外部连接记录。如果你发现日志里有很多来源 IP 不是你自己家宽带的连接尝试那就说明已经被外部扫描器盯上了。典型表现是短时间内大量请求甚至带有一堆奇怪的路径探测字符串。2.2 一条命令记住你的“服务面”最简单的方法是查本机端口监听状态。Linux 和 macOS 上可以用ss -tlnp | grep -E 3000|8000|3501把后面的端口换成你自己的服务端口就行。ss输出的最后一列如果是0.0.0.0:3000那就说明服务对所有网卡开放如果看到127.0.0.1:3000说明只对本机开放。Windows 用户可以用netstat -ano | findstr LISTENING再配合“资源监视器”或 PowerShell 的Get-NetTCPConnection查看对应 PID 的监听地址。查完之后还要确认出口 IP。如果你想知道“这台机器从公网看来是什么样的”在服务器上跑一条curl ifconfig.me拿到公网 IP 之后再对照刚才查到的监听端口。只要监听地址包含0.0.0.0并且云防火墙或本地防火墙没有阻止入站那恭喜你基本就在“名单”里了。我是个比较老派的人平时自测还会用公网测绘平台查一下自己的 IP 和端口状态看能不能直接定位到服务指纹。这类工具只用来查自己的资产不要拿它去扫别人的网段这个边界心里要有数。3. 本地算力方案OpenClaw 配 Ollama不再把密钥交给第三方 API3.1 先破除一个误解“只能用 API 接入跑算力”是错的很多搜索 OpenClaw 相关热词的人都在问同一个问题是不是只能用接入 API 的方式调用大模型本地算力行不行答案是完全可以在本地跑。OpenClaw 的模型接入层一般兼容 OpenAI 格式的 API而 Ollama 启动之后本来就提供一个本地 OpenAI 兼容接口。也就是说你完全可以把 OpenClaw 的模型后端指向 Ollama让所有推理都发生在你自己的电脑上。这样不仅省去了申请外部 API 的繁琐还不用担心 Key 泄漏导致账单被刷爆。本地方案最大的价值是“闭环”。OpenClaw 跑在你自己机器上Ollama 跑在你自己机器上请求全走内网回环地址不经过第三方服务器钥匙根本不会出现在公网链路里。3.2 实际操作Ollama 部署与 OpenClaw 指向本机先说通用步骤。当前版本项目文档里的环境变量名可能略有差异但逻辑是一样的OpenClaw 需要一个模型服务地址你把地址填成 Ollama 的本地地址即可。第一步安装并启动 Ollamacurl -fsSL https://ollama.com/install.sh | sh ollama pull qwen3:14b ollama serveollama serve默认监听127.0.0.1:11434这就已经限定了只能本机访问。这个默认行为其实很安全也是我一直推荐在本地跑的原因。第二步在 OpenClaw 配置里把模型供应商设为 Ollama 或 OpenAI 兼容模式把 Base URL 指向http://127.0.0.1:11434/v1并填入一个随便写的本地 Key多数兼容模式只是做一个格式校验不强制真实验证。第三步验证连通性。最简单的做法是跑一条普通任务观察 Ollama 的模型加载日志是否出现请求记录。如果 Ollama 终端里能看到 prompt 输入并且 OpenClaw 能返回结果就说明闭环成功。这里给一个重要的实践注释本地模型的效果和参数量直接相关。如果电脑配置一般不要盲目拉 70B 级别的大模型选 7B 到 14B 的量化版本更稳定。做代码任务可以选专门针对代码训练的模型做普通 Agent 任务则选通用对话模型。每台机器情况不一样建议先拉一个小模型做流程验证再根据响应速度决定是否升级。3.3 安卓部署和 Termux 的真相“openclaw 安卓部署”“如何用 termux 安装 openclaw 手机版”这类搜索热度很高我也被问过很多次。我的看法是能装但要分清你装的是什么。Termux 本质是一个安卓上的 Linux 终端环境。它里面确实可以安装 Node.js LTS 版本也可以下载 OpenClaw 的运行时依赖跑命令本身没有问题。但你要清楚手机上的瓶颈不在安装而在算力。即使手机内存达到 12G跑 Ollama 大模型也远比不上一台桌面电脑更别说长时间运行导致的发热和电池损耗。我比较推荐的“安卓玩法”是把手机当作远程控制端而不是算力端。你在自己的高性能 PC 或服务器上运行 OpenClaw Ollama手机上通过浏览器或 SSH 访问同一局域网内地址这样既体验了移动控制的便捷又规避了手机算力不足的尴尬。如果你坚持要在 Termux 里跑完整部署至少要做好三件事安装 Termux 后先换可用软件源用pkg install nodejs-lts git python装好基础环境启动时用termux-wake-lock防止手机休眠把进程杀掉。即便如此我也建议只跑轻量演示任务不要把手机部署当成生产主力。4. 从部署到能用技能、电商与 ROS 2 场景里的正确姿势4.1 Skill 机制让 OpenClaw 从“聊天机器人”变成“干活员工”部署完模型后端很多人就停在了“能对话”这一步。但 OpenClaw 这类 Agent 真正有价值的地方是技能扩展也就是社区里经常听到的openclaw skill。Skill 的例子很好理解假设你有一个“查商品价格”的任务没有技能时你只能口头命令 OpenClaw 打开浏览器逐个操作有了技能后你可以把一个脚本封装给它命令变成一句“用价格查询技能处理这个链接”OpenClaw 就会按照脚本逻辑去抓取、解析并返回结构化结果。一个最小可用的 Skill 通常包含一个描述文件和一个执行脚本。描述文件用 YAML 声明技能的名称、用途、参数和入口命令执行脚本则是普通的 Python 或 Node.js 文件。下面是一个非常基础和通用的结构示意name: price_checker description: 给定商品链接返回当前价格和库存状态 input: - name: url type: string required: true run: python3 scripts/price_check.py对应的price_check.py从标准输入读取参数然后执行请求、解析页面并输出 JSON。OpenClaw 拿到输出后会把它作为下一次决策的上下文。这个机制说穿了并不复杂但它把“能力边界”从自然语言提示词硬约束到了可运行的代码里这就是 Agent 从“能聊天”到“能干活”的关键分水岭。4.2 电商场景为什么这么热以及怎么落地在搜索热词里openclaw 电商反复出现。原因是电商领域有大量可自动化的重复劳动查价格、比库存、同步订单状态、整理商品参数、库存盘点。这些事用传统脚本写起来繁琐用 Agent 加技能的方式去调度就顺滑很多。我建议从三个步骤开始落地第一步把每个重复任务拆成一个 Skill。不要试图做一个“万能电商助手”要做一个“查价助手”再做一个“对账助手”拆分得越细越容易调试和验证。第二步给 Skill 设计清晰的输入输出。比如查价技能输入是商品链接输出是价格、库存、上架状态结构化字段。这样 OpenClaw 后续可以把这些结果拼到邮件、表格或者企业聊天工具里。第三步注意电商平台的反自动化策略。很多商城有登录风控、滑块验证、IP 频控。你部署 OpenClaw 的时候一定不要在电商页面频繁快速点击也不要让技能脚本里的并发请求数过高。这个不是 OpenClaw 本身的问题是任何自动化工具在真实互联网环境里都要面对的规则问题。4.3 ROS 2 与 Gazeborosclaw 是什么能做什么搜索热词里还有一条很有意思rosclaw openclaw ros2 humble gazebo。这是最近社区里把 OpenClaw 接到机器人仿真环境的玩法本质上是用 ROS 2 作为 OpenClaw 与机器人交互的“关节”。ROS 2 Humble 是目前很常见的机器人操作系统版本Gazebo 是配套的仿真环境。正常流程是在 Ubuntu 22.04 上安装 ROS 2 Humble启动一个带差速机器人的 Gazebo 场景然后通过技能把 OpenClaw 接到 ROS 2 的话题发布端上。这样 OpenClaw 生成“前进一米”的指令技能脚本调用ros2 topic pub /cmd_vel给仿真机器人机器人就在仿真环境里动了。这里面最容易犯的错是环境变量混乱。ROS 2 的source /opt/ros/humble/setup.bash必须在你执行任何 ros2 命令之前做好技能脚本也要先检查ROS_DOMAIN_ID和RMW_IMPLEMENTATION是否一致否则最常见的结果就是“Agent 说走了一米Gazebo 里纹丝不动”。对着机器人仿真场景我再提醒一句当 OpenClaw 能控制实体机器人时“实例暴露”的风险就从信息泄露升级成了物理风险。这种场景下端口加固、身份认证和操作审计就比单纯聊天部署重要得多一定不要图方便把控制端裸挂在公网上。5. 防“裸奔”加固四件事缺一件都别说是安全的5.1 把监听地址改回127.0.0.1这是成本最低、效果最明显的加固动作。OpenClaw 部署在本地电脑或内网服务器上时优先把它绑定到回环地址只允许本机访问需要远程访问时再通过反向代理转发。Docker 部署情况下最安全的写法是docker run -p 127.0.0.1:3000:3000 openclaw-image这样容器端口 3000 通过宿主机 127.0.0.1 映射公网根本访问不到只有本机能连。云服务器用户不要嫌这一步多事本地服务挂公网端口等于在办公室里贴了一张“欢迎进来坐坐”的告示。5.2 用反向代理加访问控制而不是直连端口如果你确实需要在公司或家里远程使用 OpenClaw不要直接暴露原始端口应该加一层反向代理。推荐 Caddy 或 Nginx配合基本身份验证和 HTTPS。Caddy 的优势是自动申请证书配置更短Nginx 则更通用适合和已有服务共存。用 Nginx 做一个最基本的转发示例server { listen 443 ssl; server_name agent.example.com; ssl_certificate /etc/nginx/ssl/agent.crt; ssl_certificate_key /etc/nginx/ssl/agent.key; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }这一步解决两件事一是把 OpenClaw 从公网上隐藏到代理后面二是让所有外部流量都走 HTTPS避免参数在网络上明文传输。如果你不想搞域名证书也可以用带auth_basic的 Nginx 配置效果一样是把陌生人挡在门外。5.3 云安全组与本地防火墙做最小白名单云服务器用户一定要养成“仅放行必要端口”的习惯。不要为了省事把入站规则配成0.0.0.0/0的全开状态更不要所有端口全放。正确做法是安全组只放行 80/443 这类对外服务的端口OpenClaw 的原始端口只允许来自你自己 IP 或内网。本地防火墙也可以做同样的事Ubuntu 上可以这样sudo ufw allow from 你的固定IP to any port 3000 sudo ufw enable只把自己的办公网 IP 放进白名单其他的外部访问一律拒绝。写脚本或配置时别用ufw allow 3000这种形式那等于对全网开放配了等于没配。5.4 密钥轮换与日志清理不管模型后端是 Ollama 还是外部 API都要管好密钥。建议在配置里使用环境变量而不是硬编码并且不要把.env文件提交到 Git。如果你曾经在裸奔状态下部署过 OpenClaw不管有没有被扫描记录都建议立刻去对应的大模型平台把 API Key 吊销然后重新生成。生成新密钥的时候可以用系统自带工具openssl rand -hex 32另外要检查日志配置避免把请求里的密钥、密码等敏感字段打出来。我见过不少服务默认打印完整请求头结果 Authorization 字段里的 Key 全在日志里躺了一整晚。把日志输出等级调到 WARN 或 ERROR日常运行没必要留太多 DEBUG。6. “暴露”这件事没有一次性解只有默认姿势回到开头那个 25 万的数字。为什么会有这么多实例“裸奔”核心原因是很多部署者把“服务能跑起来”当成终点而不是把“服务能安全地跑很久”当成目标。对 OpenClaw 这种自带代码执行和工具调用能力的 Agent 来说安全不是加分项是默认项。我在实际部署中形成的习惯是每次启动 OpenClaw 之前先检查监听地址启动之后跑一次端口自检退出之前看一眼日志里有没有异常的外部来源 IP。这套动作加起来不到三分钟却能避免绝大部分的“裸奔”事故。最后再分享一个小技巧把端口自检写成一个 alias比如在.bashrc里加一行alias portsafess -tlnp | grep -E LISTEN以后部署任何新服务都能先照一眼。OpenClaw 确实是个好用的 Agent 项目但前提是你能控制住它往公网伸出去的每一条网线。把这篇文章里的四件事做完再谈把它应用到电商、ROS 2 或者其他场景里才踏实得多。
阅读完成 · 觉得有帮助?