Redmi AX6000 解锁并固化 SSH,再部署 Clash 的完整步骤

新版固件的 Redmi AX6000 不用刷机就能开 SSH,走的还是官方后台那个 set_sys_time 接口注入命令的老路子。整个流程分两段:先用两条 URL 打开 Telnet,再在 Telnet 里把 SSH 固化下来;固化之后升级固件也不会被复位。后面接的是在路由器上装代理客户端。

一、取 stok 码

登录路由器后台,从浏览器地址栏里把 stok 后面那串复制出来。注意每次重新登录都会变,下面所有 URL 里的 stok 都必须用当前会话的,用旧的一律返回错误。

redmi_AX6000-01

二、开启 Telnet

第一步把 payload 写进 crash 分区,打开开发/调试模式。把 URL 里的 对应的stok 换成自己刚拿到的值:

http://192.168.31.1/cgi-bin/luci/;stok=对应的stok/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
redmi_AX6000-02

然后重启路由器,浏览器直接访问这条:

http://192.168.31.1/cgi-bin/luci/;stok=对应的stok/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
redmi_AX6000-03

重启大约两分钟。重连 Wi-Fi 后后台要重新登录,stok 也换了新的,下一步得重新取一次。

用 bdata 把 telnet、ssh、uart 三个开关永久写进分区:

redmi_AX6000-04
http://192.168.31.1/cgi-bin/luci/;stok=对应的stok/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
redmi_AX6000-05

再执行一次上面那条重启 URL,重启完 Telnet 就通了。

三、进 Telnet 固化 SSH

PC 连上路由器的 Wi-Fi,用终端工具(这里用的 xshell)以 Telnet 协议连 192.168.31.1,端口 23。

redmi_AX6000-06
redmi_AX6000-07

先改 root 密码,这里改成 admin,后面 SSH 用的就是它:

echo -e 'adminnadmin' | passwd root

把开关写进 nvram,这样以后升级固件 SSH 也还在:

nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit

再挂一个开机脚本,让 SSH 每次启动都被拉起来(脚本来自开源项目 lemoeo/AX6S 的 auto_ssh.sh,通过防火墙 include 的方式注册):

mkdir /data/auto_ssh && cd /data/auto_ssh
curl -O https://cdn.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh
chmod +x auto_ssh.sh
uci set firewall.auto_ssh=include
uci set firewall.auto_ssh.type='script'
uci set firewall.auto_ssh.path='/data/auto_ssh/auto_ssh.sh'
uci set firewall.auto_ssh.enabled='1'
uci commit firewall

顺手把时区修正,不然日志和界面上的时间差八小时:

cd
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

最后擦掉调试模式留下的 crash 分区内容并重启:

mtd erase crash
reboot

重启完成后改用 SSH 协议连 192.168.31.1,账号 root、密码就是前面设的 admin。能登进去就说明固化成功。

redmi_AX6000-08
redmi_AX6000-09
redmi_AX6000-10
redmi_AX6000-11

四、装代理客户端并接管流量

这一段需要提前准备好订阅地址或节点连接地址。客户端用开源的 ShellClash(juewuy/ShellClash),主源不通就换备用源:

## Clash安装源:
export url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
## 备用安装源:
(1)export url='https://raw.fastgit.org/juewuy/ShellClash/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
(2)export url='https://fastly.jsdelivr.net/gh/juewuy/ShellClash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null

SSH 登进路由器执行安装脚本(PC 必须连着这台路由器的 Wi-Fi,否则装完取不到配置):

export url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
redmi_AX6000-12

装完执行 clash 进菜单,按提示选模式、填订阅地址,红黄绿的状态点表示插件是否正常:

root@XiaoQiang:~# clash
redmi_AX6000-13
redmi_AX6000-14
redmi_AX6000-15
redmi_AX6000-16

管理面板在 http://192.168.31.1:9999/ui/,切换节点、看流量和连接都在这里做,不用一直挂着 SSH。

redmi_AX6000-17

验证要看的是走没走代理:面板里看连接列表有没有目标流量,再从连了 Wi-Fi 的设备上访问一次外网地址。

redmi_AX6000-18

菜单里其余几项按需打开:模式切换(全局/规则/绕过)、DNS 设置、开机自启、插件管理。

redmi_AX6000-19
redmi_AX6000-20
redmi_AX6000-21
redmi_AX6000-22
redmi_AX6000-23

五、几个坑

  • stok 过期是最常见的失败原因,任何一步报 err 或跳登录页,先重新取 stok 再试。
  • 第二次重启前不重新取 stok,bdata 那步等于没执行,重启后 Telnet 依旧不开。
  • 调试模式的 payload 写进了 crash 分区,收尾的 mtd erase crash 不要省。
  • 改过 root 密码就把 admin 换成自己的,路由器开着 SSH 又是弱口令,等于给内网留了个入口。
  • 恢复出厂或刷回官方固件会清掉 nvram,整套步骤要重做。
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容