Open-AutoGLM连接被拒绝?云服务器端口放行配置教程
你兴冲冲地部署好了Open-AutoGLM服务端,本地电脑也配好了ADB,手机调试模式早已打开,可当运行python main.py那一刻——终端弹出刺眼的报错:ConnectionRefusedError: [Errno 111] Connection refused。不是模型没启动,不是ADB连不上,而是客户端根本“敲不开”云服务器的大门。
这个问题背后,90%的情况都指向同一个被忽略的环节:云服务器防火墙未放行对应端口。它像一堵看不见的墙,把你的AI指令死死拦在门外。本文不讲大道理,不堆概念,只聚焦一件事:手把手带你查清端口状态、定位放行位置、完成三步配置,让Open-AutoGLM真正跑通从指令到执行的完整链路。
1. 先搞懂:为什么是“连接被拒绝”,而不是“设备未找到”
很多人第一反应是去翻ADB日志、重装驱动、甚至怀疑手机型号不兼容。但请先停一下——ConnectionRefusedError这个错误本身,已经给出了关键线索。
它明确告诉你:你的请求确实发到了云服务器IP,但服务器上没有进程在监听你指定的端口,或者防火墙直接拦截了该端口的入站流量。换句话说,问题不在本地控制端,也不在手机端,而是在中间那台云服务器的“大门守卫”身上。
Open-AutoGLM的典型架构是“三端协同”:
- 手机端:通过ADB接收操作指令(点击、滑动、输入)
- 本地控制端:运行
main.py,负责解析自然语言、调用模型、生成动作序列 - 云服务端:部署vLLM或FastAPI服务,承载AutoGLM-Phone模型推理能力,对外暴露HTTP接口(如
http://xxx.xxx.xxx.xxx:8800/v1)
当你在本地执行命令时,--base-url参数指向的就是云服务端的地址。如果这个地址的端口(比如8800)没被放行,请求连服务进程的边都摸不到,自然就“被拒绝”。
所以,排查顺序必须是:先确认云服务端口可达 → 再检查服务是否真在运行 → 最后回溯本地配置。本教程就从第一步开始。
2. 诊断:三步快速验证云服务器端口是否开放
别急着改配置,先用最简单的方法确认问题所在。以下三个命令,每个都能帮你排除一个关键可能性。
2.1 本地测试:用curl直连云服务端口
在你的本地电脑终端(不是云服务器)中,运行:
curl -v http://<你的云服务器公网IP>:<你映射的端口>/health例如:
curl -v http://123.45.67.89:8800/health- 如果返回
HTTP/1.1 200 OK和{"status":"healthy"}—— 恭喜,端口通畅,问题可能出在服务未启动或URL路径错误。 - 如果返回
Failed to connect to ... port <端口>: Connection refused—— 这就是我们要解决的核心问题:端口被拒。
小贴士:
/health是大多数FastAPI服务默认提供的健康检查接口。如果服务没加这个路由,可以尝试访问根路径/,看是否返回404(说明服务已响应)还是直接超时/拒绝。
2.2 云服务器自查:确认服务进程与端口绑定
登录你的云服务器(SSH),执行:
# 查看所有监听中的TCP端口,过滤你关心的端口号(如8800) sudo netstat -tuln | grep :8800 # 或者用更现代的命令 sudo ss -tuln | grep :8800- 如果输出类似
tcp6 0 0 :::8800 :::* LISTEN—— 说明服务进程确实在监听该端口。 - 如果没有任何输出 —— 服务根本没起来,或者启动时指定了错误的host/port(比如只绑定了
127.0.0.1:8800,而非0.0.0.0:8800)。
再进一步确认服务是否在运行:
# 查看是否有vLLM或uvicorn进程 ps aux | grep -E "(vllm|uvicorn|fastapi)"2.3 防火墙快检:云平台安全组是否放行
这是最容易被忽视,却最常出问题的一环。云服务器的防火墙通常有两层:
- 云平台层(安全组/网络ACL):由阿里云、腾讯云、华为云等提供,是第一道网关。
- 系统层(iptables/firewalld):Linux自带的防火墙,是第二道防线。
先查云平台层:
- 登录你的云服务商控制台(如阿里云ECS管理页)
- 找到对应实例 → 点击“安全组” → 查看“入方向规则”
- 确认是否存在一条规则:协议类型 TCP,端口范围 8800/8800(或你实际使用的端口),授权对象 0.0.0.0/0(或你的本地IP)
如果没有,这就是根源。接下来我们就重点解决它。
3. 配置:三步完成云服务器端口放行(以主流云平台为例)
不同云厂商界面略有差异,但核心逻辑完全一致:添加一条入方向规则,允许外部IP访问指定端口。下面以三个最常用平台为例,步骤精简到只需截图级操作。
3.1 阿里云ECS:安全组规则添加
- 进入 ECS管理控制台
- 左侧菜单选择「安全组」→ 找到你实例绑定的安全组 → 点击「配置规则」
- 在「入方向」页签,点击「手动添加」
- 填写以下内容(其余保持默认):
- 授权策略:允许
- 协议类型:TCP
- 端口范围:
8800/8800(替换成你实际映射的端口) - 授权对象:
0.0.0.0/0(允许所有IP访问)或更安全的你的本地公网IP/32 - 优先级:100(数字越小优先级越高,100足够)
- 点击「确定」保存
完成。无需重启服务器,规则立即生效。
3.2 腾讯云CVM:安全组入站规则
- 进入 云服务器CVM控制台
- 左侧导航栏「安全组」→ 选择对应安全组 → 「安全组规则」页签
- 点击「添加规则」→ 选择「入站规则」
- 设置参数:
- 类型:自定义TCP
- 端口:
8800 - 源IP:
0.0.0.0/0或你的本地IP - 协议:TCP
- 策略:允许
- 点击「完成」
完成。同样实时生效。
3.3 华为云ECS:网络ACL与安全组双校验
华为云需同时检查两处,但设置更直观:
安全组(推荐首选):
控制台 → 「网络」→「安全组」→ 找到实例关联的安全组 → 「入方向规则」→ 「添加规则」
协议:TCP,端口:8800,源地址:0.0.0.0/0网络ACL(如已启用):
「VPC」→「网络ACL」→ 找到子网关联的ACL → 「入方向规则」→ 添加相同规则
只要安全组规则正确,网络ACL通常无需额外操作。
4. 进阶:系统级防火墙(iptables/firewalld)补充配置
如果你的云服务器是自己搭建的物理机、或使用了非标准镜像(如CentOS 7/8、Ubuntu 20.04+),系统自带防火墙可能仍在运行。即使云平台放行了,它也可能二次拦截。
4.1 Ubuntu/Debian(ufw)
# 查看ufw状态 sudo ufw status verbose # 如果是inactive,跳过;如果是active,添加规则 sudo ufw allow 8800 # 重启ufw(如有必要) sudo ufw reload4.2 CentOS/RHEL(firewalld)
# 查看状态 sudo firewall-cmd --state # 添加永久端口规则 sudo firewall-cmd --permanent --add-port=8800/tcp # 重载配置 sudo firewall-cmd --reload # 验证 sudo firewall-cmd --list-ports | grep 88004.3 通用方案(iptables,适用于所有Linux)
# 允许8800端口入站 sudo iptables -A INPUT -p tcp --dport 8800 -j ACCEPT # 保存规则(Ubuntu/Debian) sudo iptables-save > /etc/iptables/rules.v4 # 或(CentOS/RHEL) sudo service iptables save注意:修改iptables前,建议先用sudo iptables -L -n查看当前规则,避免误删SSH(22端口)规则导致失联。
5. 验证与收尾:从连接失败到指令成功
完成上述配置后,按以下顺序验证,确保每一步都走通:
5.1 云服务器端:确认服务监听0.0.0.0
很多vLLM启动命令默认只绑定127.0.0.1,这会导致外部无法访问。启动服务时,务必显式指定host:
# 错误示范(只监听本地) python -m vllm.entrypoints.api_server --model zhipu/autoglm-phone-9b --port 8800 # 正确示范(监听所有网络接口) python -m vllm.entrypoints.api_server \ --model zhipu/autoglm-phone-9b \ --port 8800 \ --host 0.0.0.0 \ --tensor-parallel-size 1再次用netstat确认输出中包含*:8800或*:*:8800,而非127.0.0.1:8800。
5.2 本地终端:curl再次测试
curl http://123.45.67.89:8800/health # 应返回 {"status":"healthy"}5.3 最终运行:Open-AutoGLM指令直达手机
回到你的本地Open-AutoGLM目录,执行完整命令:
python main.py \ --device-id 1234567890ABCDEF \ # adb devices看到的ID --base-url http://123.45.67.89:8800/v1 \ # 云服务器IP+端口 --model "autoglm-phone-9b" \ "打开小红书搜索‘川菜’并收藏第一条笔记!"你会看到:
- 终端实时打印AI解析的意图、识别的屏幕元素、规划的动作序列
- 手机屏幕自动亮起,依次执行打开App、输入关键词、点击搜索、长按收藏
- 整个过程无需人工干预,真正实现“一句话,全搞定”。
6. 总结:端口放行不是玄学,而是可复现的标准化操作
Open-AutoGLM连接被拒绝,从来不是什么疑难杂症,它只是一个清晰、可定位、可解决的网络配置问题。回顾整个过程,你只需要记住三个关键检查点:
- 第一关:云平台安全组—— 这是绝大多数人的卡点,90%的“连接被拒绝”源于此。务必登录控制台,亲手添加一条TCP入方向规则。
- 第二关:服务绑定地址—— 启动vLLM或FastAPI时,
--host 0.0.0.0是刚需,缺它不可。 - 第三关:系统防火墙—— 对于自建环境或老系统,用
ufw或firewall-cmd补上最后一道许可。
当你把这三个环节都点亮,Open-AutoGLM就不再是一个停留在GitHub上的项目,而是一个真正能听懂你说话、看懂你屏幕、替你点按滑动的手机AI助理。它让AutoGLM-Phone框架的价值,从技术Demo落地为每天可用的生产力工具。
下一次遇到类似问题,别再陷入无头苍蝇式的排查。打开这篇教程,三分钟定位,五分钟解决。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。