SSH解锁
写在前面
该教程写于2023.06,可能会有版本和时效问题导致失败,不过小米路由修复工具还是很万能的,大部分情况能救回去。
0 准备工作
https://miwifi.dev/ssh 根据sn得到password
获取stok,登录路由器后台即可获取,这里的stok每次重启都会变化。自行将后续地址中的stok进行替换。
以此开始举例,初始为:stok=f1d9f700677058f35570a91f8f744d53
1 改crash分区,{“code”:0}代表成功。
http://192.168.31.1/cgi-bin/luci/;stok=f1d9f700677058f35570a91f8f744d53/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
2 重启
http://192.168.31.1/cgi-bin/luci/;stok=f1d9f700677058f35570a91f8f744d53/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
3 注意这一步会重启路由器,重新获取token
http://192.168.31.1/cgi-bin/luci/;stok=59b003a9e8ff063ed1db57d25f0948ed/web/home#router
stok=59b003a9e8ff063ed1db57d25f0948ed
4 设置Bdata参数
http://192.168.31.1/cgi-bin/luci/;stok=59b003a9e8ff063ed1db57d25f0948ed/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
5 重启
http://192.168.31.1/cgi-bin/luci/;stok=59b003a9e8ff063ed1db57d25f0948ed/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
6 重新获取stok
http://192.168.31.1/cgi-bin/luci/;stok=8584ecd9afc1842c06cf7977224be312/web/home#router
stok=8584ecd9afc1842c06cf7977224be312
7 通过telnet开启ssh
用任意SSH工具,以Xshell举例:
进入后,输入指令开启SSH,设置密码为admin。
bdata set boot_wait=on
bdata commit
nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
echo -e 'admin\nadmin' | passwd root
8 永久开启SSH
方法1、在telnet连接中使用该指令
cd /tmp && curl --silent -O https://fastly.jsdelivr.net/gh/miaoermua/unlock-redmi-ax6000@main/setup.sh && chmod +x setup.sh && ./setup.sh
方法2、
新开一个窗口(不要关闭原来的),输入指令ssh root@192.168.31.1
,输入密码admin进入。
引用论坛大佬的备注:目前从telnet开启的ssh,路由器重启会失效,因此添加一个开启自动运行的脚本,来实现自动开启 ssh。缺点就是恢复出厂设置或重新刷机后需要重新添加。注:此处需要路由器联网才可以执行成功。
脚本:
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
关闭开发者模式
再次New一个窗口,输入ssh root@192.168.31.1
,密码admin,进入后输入指令清除crash分区,重启。
mtd erase crash
reboot
清除时区异常状态
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
9 安装UBoot
用SSH 连接上后输入该指令。
cd /tmp && curl --silent -O https://fastly.jsdelivr.net/gh/miaoermua/unlock-redmi-ax6000@main/uboot.sh && chmod +x uboot.sh && ./uboot.sh