2024年2月实测仍然生效
上个月在网上看到了路由器开启SSH的方法。在家里的红米AX5上尝试了一下成功。然而今天发现连不上了:
ssh: connect to host 192.168.31.1 port 22: Connection refused
高度怀疑是固件自动更新了(现在是1.0.33),于是重新设置一下。由于网络原帖写得比较乱,所以在这里整理一下,分为两步:
第一步:开启SSH
假设路由器 IP 是 192.168.31.1,首先用浏览器正常访问自己的路由器(登录),把网址复制下来,大概是
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/web/home
注意 <STOK> 是一串长度为32(我这里如此)的字符串,例如6J2n9KvR4c3pX5gW8D7m1L0tF9aZ4qCw
然后,把上面地址中后半部分 /web/home
替换成 /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
,也就是:
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/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
此时浏览器会显示
{"code":0}
这一堆东西翻译一下实际上是这样子的
/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;
第二步:改临时密码
同样地,在浏览器地址栏输入:
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B
此时浏览器同样会显示
{"code":0}
翻译一下是这样子的:
/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h; echo -e 'admin\nadmin' | passwd root;
意思是用户名为root,密码是admin。
第三步:登录 SSH 改正式密码
然后马上用root登陆ssh,密码是admin,再修改密码。
当初写这篇文章是 2021 年,今天(2024年)我用 macOS 去尝试时发现出现了这个问题:
no matching host key type found. Their offer: ssh-rsa
想想也正常,2024年 openssh 早就废弃 ssh-rsa 了,因此我可以在 ~/.ssh/config
里面单独为这个路由器添加例外
Host router
HostName 192.168.31.1
User root
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
以后只要 ssh router
就能登录了。登录之后自己用 passwd root
修改自己的 root 密码
路由器信息
路由器登录界面搞了一个很怪的风格:
BusyBox v1.25.1 (2020-12-30 07:27:05 UTC) built-in shell (ash)
-----------------------------------------------------
Welcome to XiaoQiang!
-----------------------------------------------------
$$$$$$\ $$$$$$$\ $$$$$$$$\ $$\ $$\ $$$$$$\ $$\ $$\
$$ __$$\ $$ __$$\ $$ _____| $$ | $$ | $$ __$$\ $$ | $$ |
$$ / $$ |$$ | $$ |$$ | $$ | $$ | $$ / $$ |$$ |$$ /
$$$$$$$$ |$$$$$$$ |$$$$$\ $$ | $$ | $$ | $$ |$$$$$ /
$$ __$$ |$$ __$$< $$ __| $$ | $$ | $$ | $$ |$$ $$<
$$ | $$ |$$ | $$ |$$ | $$ | $$ | $$ | $$ |$$ |\$$\
$$ | $$ |$$ | $$ |$$$$$$$$\ $$$$$$$$$ | $$$$$$ |$$ | \$$\
\__| \__|\__| \__|\________| \_________/ \______/ \__| \__|
路由器的/etc/os-release
如下:
NAME="OpenWrt"
VERSION="18.06-SNAPSHOT"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt 18.06-SNAPSHOT"
VERSION_ID="18.06-snapshot"
HOME_URL="http://openwrt.org/"
BUG_URL="http://bugs.openwrt.org/"
SUPPORT_URL="http://forum.lede-project.org/"
BUILD_ID="unknown"
LEDE_BOARD="ipq60xx/MiWiFi"
LEDE_ARCH="arm_cortex-a7"
LEDE_TAINTS="no-all busybox"
LEDE_DEVICE_MANUFACTURER="OpenWrt"
LEDE_DEVICE_MANUFACTURER_URL="http://openwrt.org/"
LEDE_DEVICE_PRODUCT="Generic"
LEDE_DEVICE_REVISION="v0"
LEDE_RELEASE="OpenWrt 18.06-SNAPSHOT unknown"
禁止路由器自动升级固件
红米路由器很诡异,无法从web端去设置这选项。后来去Telegram群里问了一下才知道,要安装MiWiFiapp去设置。
中继模式也能用这种方法
只不过 IP 不是 192.168.31.1,而是要换成路由器自己的IP,末尾不是 1,例如 192.168.31.85 之类。
不是说小米的路由器挺水嘛 动不动就断流
用了两个月了,没有断流的
还是刷个openwrt用得比较方便
是的,以后有精力了再试试。
我是小白,开启了能干啥坏事吗?这ax5现在有什么固件刷吗?我刚入手呢。
我不刷固件,只开ssh。开启之后的好处是可以开frp内网穿透。我有公网IP(非固定),小米路由器web端可以设置ddns。所以去 http://www.noip.com 申请一个免费的 ddns,填入路由器web设置界面。最实际的用途是,假如公司的服务器无法从外网访问,则可以在公司的服务器上安装frp服务端,家里的路由器上安装frp客户端,就可以在家里访问公司服务器了
噢噢,原来还能这么玩?我只记得早几年我联通也有公网ip时在花生壳申请域名,也能在同地方访问家里路由器,无奈被砍了还申诉不回来。刚刚搜索了一下有一集客ap固件,不知道怎么样。
请问一下可以重新讲一下该怎么开启吗,第一步和第二步的连接已经失效了,纯小白想开AX5的SSH,找了很多资料都没看明白,希望您能重新讲一下,谢谢
第一步和第二步的前面部分要换成你自己的路由器的IP地址,我的是 192.168.31.1 而已。
改了自己的ip也登录不了,能加我V:cjdwmn吗,确实搞不明白
或者能说一下为什么我把连接改成自己的ip之后,显示是“网络无法连接”,是不是错过了什么步骤呢,我已经下载好了原贴里的可用固件,不知道该如何获得SSH权限
URL里面还有一个是需要替换掉的,该 需要你自己网页正常访问路由器之后从地址栏里面获得
stok= 替换这个《》里面的内容还是说明呢,试了很多次都不知道替换那一部分的内容
stok=是替换括号里的内容吗?试了几次都是显示无法连接网络,还请您有时间的时候稍微详细点解答一下,十分感谢
你先用浏览器直接访问正常的路由器,登陆进去之后在浏览器地址栏里面就能看到stok=后面的内容,每个人都是独一无二的