← 返回首页
Article

小米 BE7200 Pro 解锁 SSH 并安装 ShellCrash

更新于 2026年7月21日 10 个章节

我想在小米 BE7200 Pro 上运行 ShellCrash,又暂时不准备刷第三方固件,于是用 xmir-patcher 打开永久 SSH,再把 ShellCrash 安装到持久化分区。本文记录的设备型号标识为 RP09,其他型号和固件版本不一定适用。

解锁会利用固件漏洞并修改启动配置,可能导致设备失去保修、配置损坏或无法启动。操作期间使用网线连接,保持稳定供电,并在安装永久 SSH 前创建完整备份。

解锁 SSH

准备 xmir-patcher

xmir-patcher 在 Windows 上可以直接运行 run.bat。Linux 和 macOS 需要 Python 3.8 以上版本与 OpenSSL:

git clone https://github.com/openwrt-xiaomi/xmir-patcher.git
cd xmir-patcher
./run.sh

我在 Apple Silicon Mac 上使用 Python 3.14 时,ssh2-python 因为没有可用 wheel 转为源码编译,随后报 cmake: command not found。换成 Python 3.12 后可以正常运行:

cd xmir-patcher
python3.12 -m venv venv
source venv/bin/activate
./run.sh

这只是本次 macOS 环境的依赖问题。遇到类似报错,可以先用 ./venv/bin/python3 --version 检查虚拟环境版本,再决定是否重建 venv

按顺序完成解锁

电脑与路由器需要位于同一局域网。路由器使用默认管理地址 192.168.31.1 时无需修改;如果 LAN 地址已经变化,先在菜单中选择 1 - Set IP-address 填入实际地址。

本次操作顺序是 2 → 3 → 4 → 6 → 9

  1. 2 - Connect to device (install exploit):连接路由器并建立临时入口。
  2. 3 - Read full device info:确认设备型号和固件信息。
  3. 4 - Create full backup:创建完整备份,并保存到电脑。
  4. 6 - Install permanent SSH:安装永久 SSH。
  5. 9 - Reboot device:重启路由器。

设备信息与预期不符,或者备份没有成功生成时,应当停止操作。本次设备重启后的首次 SSH 登录账号和密码都是 root,登录后立即运行 passwd 修改密码。不要把路由器的 SSH 端口开放到 WAN。

处理 ssh-rsa 兼容问题

本次原厂系统中的 Dropbear 只提供 ssh-rsa 主机密钥,新版 OpenSSH 直接连接会报错:

Unable to negotiate with 192.168.31.1 port 22:
no matching host key type found. Their offer: ssh-rsa

~/.ssh/config 中只为这台路由器放开旧算法:

Host mi
    HostName 192.168.31.1
    Port 22
    User root
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa
    PubkeyAuthentication yes
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_rsa

之后可以用 ssh mi 登录。遇到 REMOTE HOST IDENTIFICATION HAS CHANGED 时,先确认主机密钥变化确实来自刚才的初始化,再运行 ssh-keygen -R 192.168.31.1 删除旧记录。

配置公钥登录

旧版 Dropbear 使用 RSA 密钥的兼容性较好。本机没有 RSA 密钥时先生成一把,再上传公钥:

ssh-keygen -t rsa -b 3072 -f ~/.ssh/id_rsa
scp -O ~/.ssh/id_rsa.pub mi:/tmp/id_rsa.pub

ssh mi '
  umask 077
  mkdir -p /etc/dropbear
  touch /etc/dropbear/authorized_keys
  grep -qxF -f /tmp/id_rsa.pub /etc/dropbear/authorized_keys || \
    cat /tmp/id_rsa.pub >> /etc/dropbear/authorized_keys
  chmod 600 /etc/dropbear/authorized_keys
  rm -f /tmp/id_rsa.pub
'

这里要使用 scp -O。新版 scp 默认使用 SFTP,而本次原厂系统没有 SFTP server。最后确认公钥登录已经生效:

ssh -o BatchMode=yes -o PasswordAuthentication=no mi id

命令能够直接输出 uid=0(root),SSH 部分就完成了。

安装 ShellCrash

检查环境和存储

本次 BE7200 Pro 是 aarch64 架构,内存约 895 MB,带有 ShellCrash 需要的常用命令和 TUN 设备。/data/userdisk 共用的空间只剩十几 MB,/data/other_vol 是持久化 UBIFS 分区,实测约有 194 MB 可用,因此选择后者安装 ShellCrash。

自己的设备应当重新检查:

uname -m
free -m
df -h
ls -l /dev/net/tun
command -v curl wget iptables ipset crond

安装前备份防火墙、网络、DHCP 和 crontab:

backup_dir="/data/other_vol/pre-shellcrash-backup-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$backup_dir"
uci export firewall > "$backup_dir/firewall.uci"
cp /etc/config/network /etc/config/dhcp /etc/crontabs/root "$backup_dir"/

运行安装脚本

使用 ShellCrash 官方仓库提供的路由设备安装源:

export url='https://raw.githubusercontent.com/juewuy/ShellCrash/dev'
sh -c "$(curl -kfsSl $url/install.sh)"
. /etc/profile >/dev/null 2>&1

安装位置选择 3,将文件放到 /data/other_vol,命令别名使用默认的 crash。首次运行 crash 时选择简体中文、路由设备推荐模式和 Mihomo 内核。

本次固件没有找到 TPROXY target 或相应内核模块,因此使用引导推荐的 Mix 模式。局域网 UDP 或 DNS 出现异常时,可以先退回 REDIRECT/TCP 模式排查。

导入 YAML 配置

将 Mihomo 配置上传到 /tmp/config.yaml,再进入 crash 菜单选择立即加载:

scp -O ./config.yaml mi:/tmp/config.yaml
ssh mi
crash

加载后,配置会被移到 /data/other_vol/ShellCrash/yamls/config.yaml。配置引用本地规则集时,还要保持目录关系一并上传:

scp -O -r ./ruleset mi:/data/other_vol/ShellCrash/yamls/

上传前检查订阅链接、节点地址、密码和 API secret,避免将它们提交到公开仓库。使用本地规则文件时,也要把对应 provider 改为 type: file;仍指向远程 URL 的 provider 不会自动读取刚上传的文件。

启动和检查

第一次启动时保留当前 SSH 会话,再开一个终端测试新连接:

crash -s start
crash -s stop

启动后检查 SSH、路由器管理页面、DNS 解析和实际分流。确认这些都正常,再设置开机启动并重启路由器,随后重复检查一次。出现断网时先执行 crash -s stop 恢复网络,再排查 DNS、转发模式和 YAML 配置。

参考资料:openwrt-xiaomi/xmir-patcherjuewuy/ShellCrash

评论

由 GitHub Discussions 承载,需要 GitHub 账号登录。