目录

  1. 原理说明
  2. 实操
    1. 下载降级版本
    2. 开启 SSH
    3. 修改 SSH 密码
    4. 连接 SSH
    5. 修改配置文件,确保永久 SSH
    6. 更新固件

原理说明

小米路由的系统是基于 OPENWRT 系统上改的,而有个地方是能够做到更新固件的时候保留配置文件,而防火墙文件/etc/config/firewall中恰好有一个配置为用户自定义配置,并且指定了位置为/etc/firewall.user,而且系统默认是有这个文件的,也就是说更新系统不会被删除,而这个防火墙自定义配置,事实上执行的是shell脚本,而且路由器启动防火墙的时候就会执行,也就是说,我们只需要把操作变更为将命令行写入这个配置文件,就能实现路由器重启后自动配置,也能让我们更新系统享受稳定的固件!

实操

下载降级版本

首先降级到 1.0.34 版本,通过小米路由管理后台,在“系统状态”中的 tab 页中,找到手动升级,并选择下载好降级包。

开启 SSH

降级后不要升级,先登录网页管理界面,登录后可以在地址栏上是这样的地址

1
http://192.168.31.1/cgi-bin/luci/;stok=XXXXXXXXXXXXXXXXXXXXXXXXXX/web/home#router

将 XXX 后面的包括斜杠”/“在内的所有文字替换成

1
/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B

回车后会返回

1
{"code": 0}

这个时候 SSH 就已经打开了。

修改 SSH 密码

开启 SSH 后,将 XXX 后面的包括斜杠”/“在内的所有文字替换成如下以修改密码为admin

1
/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B

连接 SSH

若要使用 SSH ,用以下代码接口

1
ssh -o HostKeyAlgorithms=ssh-rsa root@192.168.31.1

修改配置文件,确保永久 SSH

原理说明中,描述了有个文件是可以不被更新固件所清除的配置,现在我们对这个文件做相应脚本,确保固件升级后,也会自动执行,从而达到永久开启 SSH。

  1. 先打开文件
    1
    2

    vi /etc/firewall.user
  2. 在文件内容的最下方加入以下代码
    1
    2
    3
    4
    5
    6
    7
    #ssh
    nvram set ssh_en=1
    nvram commit
    sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
    /etc/init.d/dropbear start

    echo -e 'admin\nadmin' | passwd root
  3. 保存退出该文件
    先按 ESC退 出 VI 的 insert 或 append 模式,输入以下代码保持退出该文件
    1
    :wq

更新固件

这个时候我们就可以更新固件了。

不能恢复出厂设置,否则 SSH 将会失效!!!