小米路由器开启 Shell

194次阅读
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 [email protected]:/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 [email protected],此时会提示要求输入密码,可以访问 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 -kfsSlurl/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 [email protected]
    
正文完
 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