Posted in: IT

红米路由器AX5开启SSH的方法

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 之类。

Comments (15) on "红米路由器AX5开启SSH的方法"

    1. Google Chrome 91.0.4472.124 Windows 7 x64 Edition

      我不刷固件,只开ssh。开启之后的好处是可以开frp内网穿透。我有公网IP(非固定),小米路由器web端可以设置ddns。所以去 http://www.noip.com 申请一个免费的 ddns,填入路由器web设置界面。最实际的用途是,假如公司的服务器无法从外网访问,则可以在公司的服务器上安装frp服务端,家里的路由器上安装frp客户端,就可以在家里访问公司服务器了

      1. Microsoft Edge 45.10.4.5088 Android 10

        噢噢,原来还能这么玩?我只记得早几年我联通也有公网ip时在花生壳申请域名,也能在同地方访问家里路由器,无奈被砍了还申诉不回来。刚刚搜索了一下有一集客ap固件,不知道怎么样。

  1. Google Chrome 86.0.4240.198 Windows 10 x64 Edition

    请问一下可以重新讲一下该怎么开启吗,第一步和第二步的连接已经失效了,纯小白想开AX5的SSH,找了很多资料都没看明白,希望您能重新讲一下,谢谢

    1. Safari 14.1.1 iPhone iOS 14.6

      第一步和第二步的前面部分要换成你自己的路由器的IP地址,我的是 192.168.31.1 而已。

  2. Google Chrome 86.0.4240.198 Windows 10 x64 Edition

    或者能说一下为什么我把连接改成自己的ip之后,显示是“网络无法连接”,是不是错过了什么步骤呢,我已经下载好了原贴里的可用固件,不知道该如何获得SSH权限

    1. Safari 14.1.1 Mac OS X  10.15.7

      URL里面还有一个是需要替换掉的,该需要你自己网页正常访问路由器之后从地址栏里面获得

  3. QQbrowser 10.8.4405.400 Windows 7 x64 Edition

    stok= 替换这个《》里面的内容还是说明呢,试了很多次都不知道替换那一部分的内容

  4. Google Chrome 73.0.3683.86 Windows 7 x64 Edition

    stok=是替换括号里的内容吗?试了几次都是显示无法连接网络,还请您有时间的时候稍微详细点解答一下,十分感谢

    1. Safari 14.1.1 Mac OS X  10.15.7

      你先用浏览器直接访问正常的路由器,登陆进去之后在浏览器地址栏里面就能看到stok=后面的内容,每个人都是独一无二的

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注