新版固件的 Redmi AX6000 不用刷机就能开 SSH,走的还是官方后台那个 set_sys_time 接口注入命令的老路子。整个流程分两段:先用两条 URL 打开 Telnet,再在 Telnet 里把 SSH 固化下来;固化之后升级固件也不会被复位。后面接的是在路由器上装代理客户端。
一、取 stok 码
登录路由器后台,从浏览器地址栏里把 stok 后面那串复制出来。注意每次重新登录都会变,下面所有 URL 里的 stok 都必须用当前会话的,用旧的一律返回错误。

二、开启 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

然后重启路由器,浏览器直接访问这条:
http://192.168.31.1/cgi-bin/luci/;stok=对应的stok/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20

重启大约两分钟。重连 Wi-Fi 后后台要重新登录,stok 也换了新的,下一步得重新取一次。
用 bdata 把 telnet、ssh、uart 三个开关永久写进分区:

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

再执行一次上面那条重启 URL,重启完 Telnet 就通了。
三、进 Telnet 固化 SSH
PC 连上路由器的 Wi-Fi,用终端工具(这里用的 xshell)以 Telnet 协议连 192.168.31.1,端口 23。


先改 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。能登进去就说明固化成功。




四、装代理客户端并接管流量
这一段需要提前准备好订阅地址或节点连接地址。客户端用开源的 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

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




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

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

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





五、几个坑
- stok 过期是最常见的失败原因,任何一步报
err或跳登录页,先重新取 stok 再试。 - 第二次重启前不重新取 stok,
bdata那步等于没执行,重启后 Telnet 依旧不开。 - 调试模式的 payload 写进了 crash 分区,收尾的
mtd erase crash不要省。 - 改过 root 密码就把
admin换成自己的,路由器开着 SSH 又是弱口令,等于给内网留了个入口。 - 恢复出厂或刷回官方固件会清掉 nvram,整套步骤要重做。


















暂无评论内容