大家好,自從去年買了小米萬兆的首發之後,這萬兆就讓我挺糾結的。雖然有著強大的硬件,但是功能太少,也不能刷第三方。我對路由器的要求其實挺簡單的,能掛個插件就行了。但是沒有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內存也可以得到充分發揮,期待這款路由器未來的玩法!
謝謝大家,我們下期再見。