小米万兆路由器SSH开启教程

    大家好,自从去年买了小米万兆的首发之后,这万兆就让我挺纠结的。虽然有着强大的硬件,但是功能太少,也不能刷第三方。我对路由器的要求其实挺简单的,能挂个插件就行了。但是没有SSH和残废的docker明显无法满足我的需求,所以只能软路由继续做主路由,然后这个万兆做一个大号AP使用。就在前两天,小米万兆的SSH终于被破解了,那这款路由器也即将迎来新生。这期就教大家怎么给万兆路由器开SSH。
    首先准备好一个64GB保底的U盘,因为开启SSH需要使用到路由器本身自带的docker功能,而开启docker要求U盘最少有32GB以上空间,所以32GB的U盘就废了。我这里使用的是1TB的移动固态,记得先用diskgenius格式化成EXT4分区格式。       
图片
第二步,根据提示安装docker以及第三方管理软件。
图片
图片
安装完成后点击管理docker,打开第三方docker的控制面板,登录用户名和密码都是admin,登录即可。
图片
打开存储管理,看右侧的卷,没有就新建一个。然后点击详情,看一下USB-后面的字符,记录下来,后面有用。
镜像管理,点击拉取,拉取nginx:alpine-slim镜像
图片
点击新拉取的镜像的右侧绿色运行按钮。选择简单模式,容器名称随意。目录挂载写/mnt/usb-******/mi_docker/../../..:/real_root。星号替换成刚刚你记录下来的字符。
图片
图片
图片
容器管理=>选择刚才创建的容器,进入终端。输入以下命令
chroot /real_root
cd /etc/init.d
vi dropbear
图片
使用Ctrl+E,滚轮,以及方向键移动光标,到start_service()。按i进入编辑模式,给start_service内从flg_ssh开始到fi结束的五行分别添加#注释掉,按ESC退出编辑,输入:wq回车退出并保存
图片
退出后输入命令
/etc/init.d/dropbear start
然后就可以使用SSH工具连接SSH了。
图片
我这里用xshell为例,来对SSH进行半固化操作。因为这个SSH是临时的,重启后会消失,所以需要半固化。如果要固化,可以参考AX9000的固化过程,但是也要先做半固化。
图片
在https://miwifi.dev/ssh输入路由器的SN可以得到SSH密码,SN可以看路由器屁股,也可以进小米路由器后台看。
图片
图片
连接SSH后分别输入以下命令,一个命令一个回车。
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
mkdir /data/auto_ssh
cd /data/auto_ssh
图片
然输入
vi auto_ssh.sh
按键盘上的ins按键进入编辑模式,把以下内容复制到文件内。
#!/bin/sh
host_key=/etc/dropbear/dropbear_rsa_host_key
host_key_bk=/data/auto_ssh/dropbear_rsa_host_key
# 如果存在备份的SSH密钥,将备份的密钥链接到dropbear使用的密钥
if [ -f $host_key_bk ]; then
    ln -sf $host_key_bk $host_key
fi
# 当前固件为稳定版时,需要执行下面命令开启SSH
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
# 备份SSH密钥
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
图片
复制完成后按ESC退出编辑模式,输入:wq退出编辑保存,再依次输入以下命令。
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
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
mtd erase crash
图片
    到这里,SSH的半固化就基本完成了,重启SSH也不会消失,安装自己喜欢的插件吧。目前SC已经可以用了,lucky也可以,具体怎么安装我就不教了,不作死。
    有了SSH之后,第三方固件也是指日可待,四核A73+双万兆+2GB内存也可以得到充分发挥,期待这款路由器未来的玩法!