小米路由器开启 Shell

450次阅读
21 条评论

共计 4022 个字符,预计需要花费 11 分钟才能阅读完成。

目前国产路由器的硬件是越来越好,但诸如 shell 等功能却默认不再支持了,因此有时我们会有“刷机”的需求。目前很多刷机教程都需要使用额外的 OpenWrt 设备来支持“刷机”,笔者以自己使用的小米 AX6000 路由器为例分享下如何只用一台电脑来“刷机”。如果是小米路由器的其他型号(如 AX9000),可先在 MiWiFi 平台查看是否有对应型号的开发版 ROM,用其替换文中 AX6000 的 ROM,其余过程类似。

工具下载提示
1. 下述操作过程中的工具包在这里下载。
2. 有网友私信说下文中 OpenWrt 硬盘文件下载速度太慢,于是笔者将其放了一份到百度网盘中,提取码在微信公众号 qileq 中回复openwrt获取:
百度网盘

更新

  • 2024-09-25: 不小心升级了次路由器固件,只得重新安装,参考本文仍能成功开启 Shell。

降级路由器固件#

  1. 输入 http://192.168.31.1/ 打开小米路由器管理后台,点击右上角的下拉框,点击系统升级
    小米路由器开启 Shell
  2. 在“升级检测”中点击手动升级,点击选择文件,从这里下载 AX6000 的 1.0.55 版本的 ROM 文件,然后上传 ROM 文件,点击开始升级
  3. 跳转到“升级注意”,勾选清除当前所有用户配置,点击确定,等待路由器重启。
  4. 升级完成后,自动跳转到路由器首页,点击马上体验。若没有自动跳转,点击 xiaomi-router-xxx_xx 会跳转到路由器首页。
    小米路由器开启 Shell
  5. 在“上网向导”中,设置 Wi-Fi 名称和密码,然后点击下一步,Wi-Fi 自动重启。
  6. 在浏览器中输入 192.168.31.1,登录路由器管理后台,可以看到 ROM 版本为 1.0.55,这里也能看到 SN 号,在后面登录路由器时会用到 SN 来计算 root 密码。
    小米路由器开启 Shell
  7. 若为了防止 ROM 不小心升级时能快速恢复,可点击“常用设置”/“系统设置”,在“备份与恢复” 中点击新建备份做个备份。
  8. 关闭路由器的自动升级
    默认情况下路由器会自动更新 ROM 固件,笔者第一次配置完没关闭自动升级,睡一觉后人傻了 T_T。
    关闭自动升级过程如下:

    • 手机上安装米家 APP,绑定路由器后,在路由设置中点击升级助手
      小米路由器开启 Shell
    • 点击右上角的管理图标
      小米路由器开启 Shell
    • 关闭自动更新
      小米路由器开启 Shell

设置 OpenWrt 虚拟机#

虽然没有 OpenWrt 设备,但我们可以通过创建 OpenWrt 虚拟机,利用虚拟机的的网卡来帮助我们刷机。

安装 VMware#

如果已安装过 VMware,启动即可;否则下载 VMware Workstation Player 并安装,启动 VMware Workstation Player。

创建 OpenWrt 虚拟机#

  1. 点击创建新虚拟机
  2. 点击稍后安装操作系统
  3. 选择 Linux,版本选择其它 Linux 3.x 内核 64 位,点击下一步
    小米路由器开启 Shell
  4. 填写虚拟机名称(笔者命名为 OpenWrt)和位置,点击下一步
    小米路由器开启 Shell
  5. 选择“将虚拟磁盘存储为单个文件”,点击下一步,再点击完成

编辑 OpenWrt 虚拟机配置#

  1. 点击编辑虚拟机设置
  2. 各硬件设置如下:
    • 内存:1G
    • 处理器:1
    • 网络适配器:选择桥接模式,并勾选“复制物理网络连接状态”。
    • 移除 CD/DVD 驱动器、USB 控制器、声卡和打印机。
    • 硬盘:
      • 移除默认的硬盘
      • 点击添加按钮,选择硬盘,点击下一步来加载已下载好的 OpenWrt 虚拟机硬盘文件
      • 虚拟磁盘类型为 SCSI,点击下一步
      • 点击使用现有虚拟磁盘,点击下一步
      • 下载 OpenWrt 硬盘文件,并选择该文件,点击完成
      • 在弹出的对话框中点击保持现有格式
        小米路由器开启 Shell

配置 OpenWrt 虚拟机#

如果是使用本文提供的 OpenWrt 虚拟机镜像,则此章节可跳过;若是第三方 OpenWrt 虚拟机镜像,可参考本文配置。

  1. 启动创建好 OpenWrt 虚拟机。
  2. 回到 Windows,打开“网络连接“,点击 WLAN -> 右键属性 -> 点击 Internet 协议版本 4(TCP/IPv4) -> 点击属性 -> 点击使用下面的 IP 地址,设置 IP 地址为 192.168.5.2 -> 点击确认。
    小米路由器开启 Shell
  3. 浏览器打开 http://192.168.5.1 ,输入用户名 root,密码 openwrt,点击登录
  4. 点击网络 -> 接口 -> 点击 LAN 的修改,将 IPv4 地址修改为 169.254.31.1
    小米路由器开启 Shell
  5. 向下滑动到 DHCP 服务器,设置如下:
    • 基本调置:勾选“忽略此接口”
    • 高级设置:取消勾选“动态 DHCP” 和“强制”。
      小米路由器开启 Shell
      然后点击保存&应用
  6. 重复第 2 步的操作,不过将 IP 地址设置为 169.254.31.2,然后在浏览器中打开 http://169.254.31.1 ,此时会显示 OpenWrt 管理后台的登录页面。
  7. 使用 scp 或 WSL 1(若为 WSL 2 可执行 wsl --set-version Ubuntu-22.04 1 先切换为 WSL 1,更多 WSL 相关内容参考 Windows 使用 WSL)将工具包中的 xqsystem.lua 脚本上传到 169.254.31.1(即 OpenWrt 虚拟机)的 /usr/lib/lua/luci/controller/admin 目录下,若使用 WSL 1 的话上传命令为 scp xqsystem.lua root@169.254.31.1:/usr/lib/lua/luci/controller/admin/
  8. 重复第 2 步,将 IP 地址恢复为“自动获得 IP 地址”。

开启热点#

  1. 打开“网络和 Internet”,点击“移动热点”,点击编辑,设置如下:
    • 名称:openwrt
    • 密码:12345678
    • 频带:2.4GHz
      名称和密码可设置为其他信息,频带选择 2.4GHz,然后开启移动热点。
  2. 测试热点。
    使用手机或其它电脑连接该热点是否正常。
  3. 打开“网络连接”,可以看到多了个“本地连接* X”,此即热点网卡,右键查看其属性,知其名称为 “Microsoft Wi-Fi Direct Virtual Adapter#2”:
    小米路由器开启 Shell
  4. 配置 OpenWrt 连接热点。
    回到 VMware,点击左上角的 “Player” -> 选择管理-> 点击虚拟机设置
    小米路由器开启 Shell
    点击网络适配器 -> 点击配置适配器 -> 只勾选热点连接,即 “Microsoft Wi-Fi Direct Virtual Adapter#2”,点击确定
    小米路由器开启 Shell
    操作完成后,重启虚拟机。

开启路由器 Shell#

  1. 浏览器打开 http://miwifi.com/ 并登录,自动跳转到 http://miwifi.com/cgi-bin/luci/;stok=xxxx/web/home#router 。拷贝 stok=/web 之间的字符串。
  2. 用拷贝的字符串替换下述字符串的 <STOK>
    http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqsystem/extendwifi_connect_inited_router?ssid=openwrt&password=12345678&encryption=WPA2PSKenctype=CCMP&channel=1&band=2g&admin_username=root&admin_password=admin&admin_nonce=xxx
    

    如果热点网络名称和密码与笔者不同,则需修改该字符串中的 ssid 和 password 为自己的热点名和密码,然后再拷贝该字符串到浏览器中打开,出现如下界面表现成功:

    小米路由器开启 Shell

  3. 登录路由器终端。
    使用 iTerm2 或 Putty 等终端 ssh 登录路由器后台,输入 ssh root@192.168.31.1,此时会提示要求输入密码,可以访问 miwifi.dev 来计算密码。输入 SN 号可计算出 root 密码。SN 号在路由器背面或登录 http://192.168.31.1 后首页查看。登录后看到如下输出表示成功:
    小米路由器开启 Shell

  4. 关闭 OpenWrt 虚拟机和移动热点。

安装 ShellCrash#

如果有科学上网需求的话,可以在小米路由器终端安装 ShellCrash,过程如下:

注:笔者第一版本安装时 ShellCrash 名为 ShellClash,虽然软件改名了,但整体界面和功能并没有多少变化,因此将下图中的 clash 命令认为是 crash 命令即可。

  1. 执行如下命令下载 ShellCrash,并根据提示安装。
    export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
    

    如果下载失败的话,参考官方文档换个方式安装。

  2. 执行 crash 开始配置,如下图:
    小米路由器开启 Shell
    注:本图为 clash 修改成 crash 前的截图,两者大致操作相同,因此仍使用 clash 的操作来说明。
    然后生成配置文件,设置完成后在浏览器打开 http://192.168.31.1:9999/ui/#/ 查看 ShellCrash 情况。
    由于会重启路由器,所以最好设置 ShellCrash 开机自启动,以免每次都要登录路由器来启动 Crash。

到此整个过程终于结束,可以愉快的在手机 Pad 电视等设备上安装油管奈飞等学习啦。

如果在使用一段时间后需要更新配置文件,可以运行 ShellCrash,选择“导入配置文件” -> “更新配置文件” -> 输入“1”确认更新配置文件 -> 输入“1”重启 crash 服务,如下图:
小米路由器开启 Shell

遇到的问题#

  1. 开启路由器 Shell 时提示:“对端路由器不支持此功能”
    如果出现 {"msg":"对端路由器不支持此功能","code":1646} 提示,检查热点是否开启了动态 DHCP 功能。参考配置 OpenWrt 虚拟机关于 DHCP 功能后再重试。
  2. no matching host key type found. Their offer: ssh-rsa
    在通过 WSL 1 或 Ubuntu 虚拟机登录路由器后台时报错:”Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa”,可按如下操作解决:

    ❯ cd
    ❯ cat << EOF > .ssh/config
    Host *
       HostKeyAlgorithms +ssh-rsa
    EOF
    ❯ ssh root@192.168.31.1
    
正文完
 0
管理员
版权声明:本站原创文章,由 管理员 于2022-08-21发表,共计4022字。
转载说明:除特殊说明外本站文章皆由 CC-4.0 协议发布,转载请注明出处。
评论(21 条评论)
rshousou
2023-11-05 07:35:41 回复

请教个问题:必须装载openwrt的虚拟机才能开启ssh吗?我已经有了一个fedora的虚拟机,因此跳过了“设置openwrt虚拟机”这一步,到后面开启ssh时一直报”wifi connect failed” , code : 1616的错误。

 Windows  Chrome
匿名
2023-09-12 08:07:12 回复

请问博主在开启路由器shell第二步遇到{“code”:401,”msg”:”Invalid token”}这样的问题该怎么解决

 Windows  Chrome
    2024-08-26 17:18:20 回复

    @匿名 看起来是路由器 token 有问题。

    注意登录 miwifi.com 登录后就不要再次登录了,每次登录 stok 值都会变化,导致 token 异常。拿到 token 后在浏览器中输入 http://192.168.31.1/cgi-bin/luci/;stok=/api/xqsystem/token (替换为你的 token 值),若正常后返回路由器信息和 code 为 0 的状态。

     Macintosh  Chrome
匿名
2023-08-09 12:25:39 回复

尝试降级好几次都还是原来的版本,可能新的固件不让降级到那个版本了

 iPhone  Safari
    匿名
    2023-08-28 13:02:14 回复

    @匿名 碰到跟你一样的情况

     Windows  Edge
      2024-08-26 17:01:04 回复

      @匿名 我今天试了下仍能降级,是不是自动更新没关?

       Macintosh  Chrome
匿名
2023-08-02 18:43:23 回复

msg wifi connect faild,code=1616怎么办?

 Android  Chrome
    2023-08-04 13:50:39 回复

    @匿名 看报错是 wifi 连接失败,检查下链接中 ssid 值和开启的热点名是否匹配(如拼错或大小写不同),没问题的话再看下密码是否输错了。

     Macintosh  Chrome
匿名
2023-07-22 14:47:50 回复

操作过程中可能会踩到的坑,和大家分享下:
1. 192.168.5.1打不开,是因为作者的镜像已经配置好了,此时它的地址是169.254.31.1,你把自己的ip改为169.254.31.2就能打开169.254.31.1了,但不要做修改,作者已经改完了,直接到“开启热点”这一步即可,注意要先把自己的ip改为自动获取;
2. 169.254.31.1也打不开,说明你网络有问题,检查虚拟网络编辑器,除了桥接网络其他都删了,桥接网络由自动改为ax200的那个就行了;
3. {“msg”:“对端路由器不支持此功能”,“code”:1646},请检查下你的openwrt热点的信道,iPhone可以用airport检查,安卓工具自己找,找到后把链接里的信道改为你的,比如我的是6,则channel=6
4. 这里有视频教程,可以参考:https://www.youtube.com/watch?v=cLSEmZ6ufE4

 Macintosh  Chrome
匿名
2023-04-16 09:10:06 回复

{“msg”:”对端路由器不支持此功能”,”code”:1646}

 Windows  Edge
    2023-04-26 16:40:48 回复

    @匿名 见文章中“遇到的问题”这块的描述,检查浏览器和电脑是否开了代理

     Macintosh  Chrome
    2024-08-26 17:06:14 回复

    @匿名 研究了下这个问题,发现把热点的 ipv4 取消能解决这个问题,具体操作我再更新到文章中。

     Macintosh  Chrome
匿名
2023-03-15 11:24:31 回复

小米ax6000按教程开启了ssh,如何固化呢

 Windows  Chrome
匿名
2023-03-09 13:51:08 回复

谢谢,已经成功了,有个问题,ssh以后可以安装什么软件吗

 iPad  Safari
    2023-03-21 16:32:04 回复

    @匿名 一般都会安装代理软件吧。

    除了文章中提到的 ShellClash 外,还有 v2ray、SS/SSR 等,针对小米路由器的话,有网友弄了个工具 MIXBOX 可以试下,不过这些工具,我只试过 v2ray,其他未试用,酌情安装,以免路由器发热太厉害了 :idea:

     Macintosh  Chrome
匿名
2023-01-19 03:10:24 回复

打开192.168.5.1这一步打不开

 Windows  Chrome
匿名
2023-01-09 18:09:59 回复

截至1月7日, 如果openWrt用的是博主提供的硬盘文件, 可以跳过配置虚拟机章节的2-8步

由于博主提供的硬盘文件已经走完了全部流程, 所以到第3步就会卡死

 Windows  Chrome