红米AX6000开启ssh


拼多多特价搞了一台红米AX6000, 信号很好,比华硕的AC86U好多了,不过有几个功能没有: 没有静态路由选项,不能设置dhcp,没有自带的ddns。如果没有这几个功能,是没有办法替换掉家里用了三年的华硕AC86U的。

最近发现cloudflare是有免费的ddns的功能,静态路由和dhcp是可能通过ssh来实现的,所以就想着通过ssh来实现这两个功能。下面是开通红米AX6000的ssh功能的方法。

准备工作

  • 红米AX6000
  • Mac/Linux/windows(windows开启本机的telnet功能:控制面板——卸载程序——启用或关闭Windows功能——勾选telnet功能——确定)
  • 固件:Redmi AX6000 1.0.60

固件降级

  1. 下载Redmi AX6000 1.0.60固件
  2. 需要利用老版本的漏洞才能开启ssh, 所以需要手动降级到1.0.60版本,如下图上传下载的固件然后点升级

升级到1.0.60版本

在这个升级过程会报如下错误: 出于安全考虑,不允许选择低于当前版本的固件进行升级。解决方法是在地址栏的url最后一个0改成1或者1改成0,然后回车就可以直接升级了。

获取token

登陆小米路由器admin,浏览器地址栏stok=后面部分就是token, 这个token是每次登录都会变化,后面都会用到这个token。如果重新登录后,都要重新复制这个token.

获取token

开启开发者模式

更改路由器的crash分区,使其进入到开发者模式

将下面的URL里面的stok=token的token替换成上面获取路由器的token值,然后复制到到浏览器并且按enter打开

http://192.168.31.1/cgi-bin/luci/;stok=token/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

浏览器返回{“code”:0},表示成功。

通过浏览器重启路由器

在浏览器地址栏输入下面的url, 和上面的做法一样,将stok=token的token替换成上面获取路由器的token值

http://192.168.31.1/cgi-bin/luci/;stok=token/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20

设置Bdata参数

设置参数telnet_en、 ssh_en、uart_en

重启后,要重新获取token, 然后在浏览器地址栏输入下面的url, 将stok=token的token替换成上面获取路由器的token值

http://192.168.31.1/cgi-bin/luci/;stok=token/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, 和上面的做法一样,将stok=token的token替换成上面获取路由器的token值

http://192.168.31.1/cgi-bin/luci/;stok=token/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20

通过telnet开启ssh

在终端输入telnet 192.168.31.1, 可以看到Are you ok的界面,就证明telnet成功了。

telnet连接上,输入指令开启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

永久开启ssh

开启新窗口,使用ssh登录路由器,输入指令开启ssh并修改密码为admin:

ssh root@192.168.31.1

不过ssh登录的时候如果报下面的错误no matching host key type found. Their offer: ssh-rsa, 是因为OpenSSH 7.0以后的版本不再支持ssh-rsa (RSA)算法, 解决方法是手动加上

# vi ~/.ssh/config
Host redmi
  HostName 192.168.31.1
  User root
  Port 22
  HostKeyAlgorithms +ssh-rsa
  PubkeyAcceptedKeyTypes +ssh-rsa

或者

#  ssh -oHostKeyAlgorithms=+ssh-rsa  root@192.168.31.1

从telnet开启的ssh,路由器重启会失效,添加一个开启自动运行的脚本,来实现自动开启ssh。如果恢复出厂设置或重新刷机后需要重新添加.

mkdir /data/auto_ssh && cd /data/auto_ssh
touch auto_ssh.sh
chmod +x auto_ssh.sh

创建auto_ssh.sh文件,使用vi输入下面的内容并保存

#!/bin/sh

host_key=/etc/dropbear/dropbear_rsa_host_key
host_key_bk=/data/auto_ssh/dropbear_rsa_host_key

if [ -f $host_key_bk ]; then
    ln -sf $host_key_bk $host_key
fi

channel=`/sbin/uci get /usr/share/xiaoqiang/xiaoqiang_version.version.CHANNEL`
if [ "$channel" = "release" ]; then
    sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
    /etc/init.d/dropbear restart
fi

if [ ! -s $host_key_bk ]; then
    i=0
    while [ $i -le 30 ]
    do
        if [ -s $host_key ]; then
            cp -f $host_key $host_key_bk 2>/dev/null
            break
        fi
        let i++
        sleep 1s
    done
fi

将auto_ssh写入固化

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

关闭开发者模式

ssh连接上路由器后,输入指令关闭开发者模式

mtd erase crash
reboot

修复时区异常

如果路由器时区异常,ssh连接中路由器后, 输入指令修复时区异常

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

注意事项

升级固件后,可能需要通过telnet重新开启ssh. 不过目前我还没遇到过这种情况,在开启ssh后,我是直接将1.60的固件自动升级到1.67,ssh还是开启了,密码也是admin.

参考

  1. 红米 AX6000 最强 CPU 的硬路由|解锁 SSH 安装 ShellClash 教程
  2. 红米AX6000永久获取SSH权限
  3. SSH登录时”no matching host key type found. Their offer: ssh-rsa,ssh-dss”的错误解决方法

文章作者: Payne Fu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Payne Fu !
评论
  目录