27 KiB
title, description, date, categories, tags, pin
| title | description | date | categories | tags | pin | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 全网最详细的解锁 SSH ShellCrash 搭载 mihomo 内核搭配 AdGuard Home 安装和配置教程 | 此教程使用 ShellCrash 搭载 mihomo 内核并搭配 AdGuard Home 作下游,配有详细图文 | 2024-08-21 18:29:59 +0800 |
|
|
true |
说明 {: .prompt-tip }
- 本教程基于 REDMI AX6000 官方固件 v1.0.70 版,ShellCrash v1.9.5 版,AdGuard Home v0.108.0 版编写
- 恢复 SSH,安装 ShellCrash 和 AdGuard Home 的方法也适用于其它已解锁 SSH 的路由器
- 安装 mihomo 内核和 AdGuard Home 时须注意路由器 CPU 架构,查看 CPU 架构可连接 SSH 后执行命令
uname -ms,若执行结果是“linux aarch64”,就下载 arm64 版安装包;若是其它架构请下载相匹配的安装包 - ShellCrash 和 AdGuard Home 中所有没有提到的配置保持默认即可
- 使用本教程时,不建议启用 ShellCrash 配置脚本 → 2) 功能设置 → 3) 透明路由流量过滤 → 2) 过滤局域网设备,因不经过内核的设备在访问
漏网之鱼域名时会遇到无法访问的情况 - ShellCrash 和 AdGuard Home 快速安装方法请看《ShellCrash 和 AdGuard Home 快速安装教程》
- ShellCrash 单独使用时设置 DNS 分流请看《搭载 mihomo 内核进行 DNS 分流教程-geodata 方案》或《搭载 mihomo 内核进行 DNS 分流教程-ruleset 方案》
一、 资源下载
打包下载:https://dustinwinvip.lanzoum.com/b01qd6p3a
密码:zyxz
注:
- ① 没有对文件进行任何处理,请自行操作使用
- ② 不保证实时更新,想用新版请安装后自行升级
- ③ 版本信息请查看打包文件内的 Readme.txt 文本
1. ShellCrash
官方下载:https://raw.githubusercontent.com/juewuy/ShellCrash/master/ShellCrash.tar.gz
2. mihomo 内核
官方下载:https://github.com/MetaCubeX/mihomo/releases
下载 mihomo-linux-arm64-[version].gz 文件
3. PuTTY
官方下载:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
下载 putty-64bit-[version]-installer.msi 文件
4. AdGuard Home
官方下载:https://github.com/AdguardTeam/AdGuardHome/releases
下载 AdGuardHome_linux_arm64.tar.gz 文件
5. UPX
官方下载:https://github.com/upx/upx/releases
下载 upx-[version]-win64.zip 文件
6. WinSCP
官方下载:https://winscp.net/eng/downloads.php
下载 WinSCP-[version]-Setup.exe 文件
二、 添加 SSH 支持
1. 给 Windows 操作系统添加 SSH 支持(任选一)
-
① 启用 Telnet 客户端
-
② 添加 OpenSSH 客户端和 OpenSSH 服务器
在成功完成《三、 2》后才能进行此操作 {: .prompt-warning }
- ③ 连接 Telnet
-
➊ 以管理员身份运行 PowerShell 或 CMD,执行命令
telnet 192.168.31.1- 注:首次登录不需要用户名和密码,解锁或恢复 SSH 后用户名为
root,密码为《三、 3》中设置的登录密码
- 注:首次登录不需要用户名和密码,解锁或恢复 SSH 后用户名为
-
在成功完成《三、 3》后才能进行此操作 {: .prompt-warning }
- ④ 连接 SSH
-
➊ 以管理员身份运行 PowerShell 或 CMD,执行命令
ssh -oHostKeyAlgorithms=+ssh-rsa [email protected]以允许 SSH 客户端接受“ssh-rsa”密钥,输入yes并回车- 注:若当前电脑登录过 SSH,后路由器经过重新解锁或恢复 SSH,须进入
C:\Users\[用户名]\.ssh{: .filepath} 文件夹,删除“known_hosts”文件,否则登录会报错
- 注:若当前电脑登录过 SSH,后路由器经过重新解锁或恢复 SSH,须进入
-
2. 通过 SSH 工具添加 SSH 支持(任选一)
在成功完成《三、 2》后才能进行此操作 {: .prompt-warning }
在成功完成《三、 3》后才能进行此操作 {: .prompt-warning }
- ② 连接 SSH
3. 通过 WinSCP 连接路由器文件管理
在成功完成《三、 3》后才能进行此操作 {: .prompt-warning }
配置免密码连接 SSH 和 WinSCP {: .prompt-tip }
- 配置免密码连接 SSH
- ① 打开 PuTTYgen,直接点击“Generate”(期间鼠标必须在此窗口内不停移动)

- ② 生成后复制完整的“Key”值备用,点击“Save private key”(可在“Key comment”输入
[email protected] - REDMI AX6000)

- ③ “保存”文件到
C:\Users\[用户名]\.ssh\rsa_key.ppk{: .filepath} 中 - ④ 打开 PuTTY,进入 Connection → SSH → Auth → Credentials,点击“Private key file for authentication”的“Browser”,定位到
C:\Users\[用户名]\.ssh\rsa_key.ppk{: .filepath} 文件并“打开” - ⑤ 进入 Connections → Data,“Auto-login username”输入
root

- ⑥ 进入 Session,按图输入后,先点击“Default Settings”,后点击“Save”

- 配置免密码连接 WinSCP
- ① 打开 WinSCP,进入标签页 → 站点 → 站点管理器,点击“编辑”,删除密码后点击“高级”
- ② 进入 SSH → 验证,点击“密钥文件”的“...”图标,定位到
C:\Users\[用户名]\.ssh\rsa_key.ppk{: .filepath} 文件并“打开”,点击“确定”,再点击“保存”
- 导入 Key 并加入开机启动
连接 SSH,执行如下命令:
- 注:将《1. ②》中复制的 Key 值替换下面命令中的
{key}
echo "{key}" > /data/auto_ssh/authorized_keys
chmod 600 /data/auto_ssh/authorized_keys
ln -sf /data/auto_ssh/authorized_keys /etc/dropbear/
echo -e "\nln -sf /data/auto_ssh/authorized_keys /etc/dropbear/" >> /data/auto_ssh/auto_ssh.sh
三、 解锁 SSH
1. 启用调试模式
-
① 进入路由器管理页面 http://192.168.31.1,登录后复制地址栏中的 stok 值

-
② 将复制的 stok 值替换如下网址的
{stok}并访问:http://192.168.31.1/cgi-bin/luci/;stok={stok}/api/misystem/set_sys_time?timezone=%20%27%20%3B%20zz%3D%24%28dd%20if%3D%2Fdev%2Fzero%20bs%3D1%20count%3D2%202%3E%2Fdev%2Fnull%29%20%3B%20printf%20%27%A5%5A%25c%25c%27%20%24zz%20%24zz%20%7C%20mtd%20write%20-%20crash%20%3B%20网页内容显示
{"code":0}表示成功启用调试模式 -
③ 继续将复制的 stok 值替换如下网址的
{stok}并访问:http://192.168.31.1/cgi-bin/luci/;stok={stok}/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20网页内容显示
{"code":0},此时路由器会重启
2. 永久启用 Telnet
-
① 重启完成后进入路由器管理页面并登录,再次复制 stok 值
-
② 将复制的 stok 值替换如下网址的
{stok}并访问:http://192.168.31.1/cgi-bin/luci/;stok={stok}/api/misystem/set_sys_time?timezone=%20%27%20%3B%20bdata%20set%20telnet_en%3D1%20%3B%20bdata%20set%20ssh_en%3D1%20%3B%20bdata%20set%20uart_en%3D1%20%3B%20bdata%20commit%20%3B%20网页内容显示
{"code":0}表示成功设置 Bdata 永久启用 Telnet -
③ 继续将复制的 stok 值替换如下网址的
{stok}并访问:http://192.168.31.1/cgi-bin/luci/;stok={stok}/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20网页内容显示
{"code":0},此时路由器会再次重启
启用 Telnet 成功!
3. 永久启用并固化 SSH
-
① 连接 Telnet,执行如下命令:
- 注:第一行命令是将 Telnet 和 SSH 登录密码设置为
12345678,可自定义
echo -e '12345678\n12345678' | passwd root nvram set telnet_en=1 nvram set ssh_en=1 nvram set uart_en=1 nvram set boot_wait=on nvram commit /etc/init.d/dropbear enable & /etc/init.d/dropbear start mkdir -p /data/auto_ssh curl -sS -o /data/auto_ssh/auto_ssh.sh -L https://cdn.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh chmod +x /data/auto_ssh/auto_ssh.sh /data/auto_ssh/auto_ssh.sh install 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 reboot
- 注:第一行命令是将 Telnet 和 SSH 登录密码设置为
-
② 最后一行
reboot命令需要手动回车(下同),回车后路由器会重启
解锁 SSH 成功!
四、 恢复 SSH
若已解锁并固化过 SSH 的路由器在升级固件或恢复出厂设置后导致 SSH 丢失,可快速再次解锁 SSH {: .prompt-tip }
1. 计算 Telnet 登录密码
打开网站 https://miwifi.dev/ssh,在 SN 处输入路由器背面的 SN 号,点击“Calc”后再点击“Copy”即可复制密码
- 注:复制的密码即 Telnet 和 SSH 登录密码
2. 永久启用并固化 SSH
连接 Telnet,执行如下命令:
- 注:最后一行命令是将 Telnet 或 SSH 登录密码设置为
12345678,可自定义
mkdir -p /data/auto_ssh
curl -sS -o /data/auto_ssh/auto_ssh.sh -L https://cdn.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh
chmod +x /data/auto_ssh/auto_ssh.sh
/data/auto_ssh/auto_ssh.sh install
echo -e '12345678\n12345678' | passwd root
3. 更改 Telnet 和 SSH 登录密码(可选)
执行命令 passwd root,输入密码如:12341234,回车后输入同样的密码,再次回车即可
恢复 SSH 成功!
五、 ShellCrash 安装和配置
1. ShellCrash 安装
-
① 打开 WinSCP,将下载的 ShellCrash.tar.gz 文件移动到路由器的
/tmp{: .filepath} 目录中

-
② 连接 SSH 后执行如下命令:
mkdir -p /tmp/SC_tmp && tar -zxf '/tmp/ShellCrash.tar.gz' -C /tmp/SC_tmp/ && source /tmp/SC_tmp/init.sh -
③ 选择 1 安装到 /data 目录,剩余空间:*.*M
-
④ 根据需要自定义别名(此处选择“2) 【 sc 】”)
-
⑤ 将下载的 mihomo-linux-arm64-[version].gz 文件解压,得到 mihomo-linux-arm64 文件
安装 ShellCrash 成功!
2. ShellCrash 配置
-
① 连接 SSH 后执行命令
sc即可打开 ShellCrash 配置脚本 -
② 新手引导
-
③ 功能设置
-
➊ 进入 ShellCrash 配置脚本 → 2) 功能设置 → 1) 路由模式设置(推荐“混合模式”,其次“Tproxy 模式”,宽带在 300M 内推荐“Tun 模式”)
- 注:使用“Tun 模式”前须进入主菜单 → 8) 工具与优化,启用“8) 小米设备 Tun 模块修复”
-
➋ 进入 2) 功能设置 → 2) DNS 设置(推荐“MIX 模式”)
-
➌ 进入 2) DNS 设置 → 7) DNS 劫持端口,设置为“5353”(须完成《六、 1》后才可设置)
-
➍ 进入 2) DNS 设置 → 9) 修改 DNS 服务器,选择“4) 一键配置加密 DNS”
- 注:推荐设置 DNS 分流(单独使用 ShellCrash 以及 ShellCrash 搭配 AdGuard Home 都适用),请看《搭载 mihomo 内核进行 DNS 分流教程-geodata 方案》或《搭载 mihomo 内核进行 DNS 分流教程-ruleset 方案》
-
➎ 进入 2) 功能设置 → 5) 启用域名嗅探,选择“1) 是”
-
-
④ 进入主菜单 → 4 启动设置,启用“1) 开机自启动”,然后选择“3) 设置自启延时”为“10 秒”
-
⑤ 进入主菜单 → 5) 自动任务 → 1) 添加自动任务,输入对应的数字并回车后可设置执行条件
-
⑥ 进入主菜单 → 8) 工具与优化,选择“6) 小米设备软固化 SSH”(无需输入需要还原的 SSH 密码)
-
⑦ 进入主菜单 → 9) 更新与支持 → 4) 安装/更新本地 Dashboard 面板,推荐安装“1) 安装 zashboard 面板”
注:- ➊ 启动服务后,面板 Dashboard 访问链接为:http://192.168.31.1:9999/ui/
- ➋ 初次打开需要添加“主机”和“端口”,分别填入
192.168.31.1和9999并点击“添加”即可访问 Dashboard 面板
-
⑧ 导入配置文件
- ➊ 进入主菜单 → 6) 配置文件管理 → a) 添加提供者 → 1) 设置名称或代号,如输入“mihomo”;后进入 2) 设置链接或路径,粘贴你的订阅链接,选择“a) 保存此提供者”
- ➋ 进入 6) 配置文件管理 → c) 在线生成配置文件 → 6) 自定义浏览器 UA,根据需要设置 UA(此处选择“2) 不使用 UA”)
- ➌ 进入 6) 配置文件管理 → 1) mihomo,根据需要选择“b) 本地生成仅包含此提供者的配置文件”或“c) 在线生成仅包含此提供者的配置文件”;选择“e) 在线获取此配置文件”需要一定的 mihomo 知识储备,请查看《生成带有自定义策略组和规则的 mihomo 配置文件直链-geodata 方案》或《生成带有自定义策略组和规则的 mihomo 配置文件直链-ruleset 方案》
导入配置文件完成后,选择 1 启动/重启服务
配置 ShellCrash 成功!
ShellCrash 常用命令:
- 打开配置:
sc - 启动服务:
$CRASHDIR/start.sh start - 停止服务:
$CRASHDIR/start.sh stop - 重启服务:
$CRASHDIR/start.sh restart - 更新订阅:
$CRASHDIR/task/task.sh update_config - 查看帮助和说明:
sc -h
3. ShellCrash 升级
进入主菜单 → 9) 更新与支持,查看“管理脚本”、“内核文件”和“本地数据库文件”有无新版本,有则选择对应的数字进行升级即可

4. ShellCrash 卸载
- ① 通过脚本命令进行卸载(任选一)
连接 SSH 后执行命令$CRASHDIR/start.sh stop && sc -u - ② 通过 ShellCrash 配置进行卸载(任选一)
进入主菜单 → 9) 更新与支持,选择“8) 卸载 ShellCrash”
六 、 AdGuard Home 安装和配置
1. AdGuard Home 安装
-
① 将下载的 upx-[version]-win64.zip 文件解压到桌面,目录结构为
C:\Users\[用户名]\Desktop\upx{: .filepath} -
② 将下载的 AdGuardHome_linux_arm64.tar.gz 文件复制到桌面,以管理员身份运行 PowerShell,依次执行如下命令:
cd C:\Users\[用户名]\Desktop tar -zxvf AdGuardHome_linux_arm64.tar.gz.tar.gz 压缩文件成功解压到桌面的
AdGuardHome{: .filepath} 文件夹内,目录结构为C:\Users\[用户名]\Desktop\AdGuardHome{: .filepath} -
③ 进入
AdGuardHome{: .filepath} 文件夹,将里面的“AdGuardHome”文件移动到C:\Users\[用户名]\Desktop\upx{: .filepath} 文件夹中
依次执行如下命令:cd C:\Users\[用户名]\Desktop\upx .\upx AdGuardHome -
④ 将压缩后的“AdGuardHome”文件移动到路由器的
/data/AdGuardHome{: .filepath} 目录(没有此目录就新建)中

-
⑤ 进入路由器文件管理的
/data/AdGuardHome{: .filepath} 目录,右击空白处并选择“新建”,点击“文件”,“输入文件名”AdGuardHome.sh,添加如下内容并保存:#!/bin/sh /etc/rc.common START=95 STOP=01 USE_PROCD=1 WORK_DIR="/data/AdGuardHome" CONFIG_FILE="$WORK_DIR/AdGuardHome.yaml" start_service() { echo "AdGuard Home 正在启动..." procd_open_instance procd_set_param command "$WORK_DIR/AdGuardHome" -s run procd_append_param command -c "$CONFIG_FILE" procd_append_param command -w "$WORK_DIR" procd_set_param pidfile /var/run/AdGuardHome.pid procd_close_instance echo "AdGuard Home 启动成功!" } stop_service() { echo "AdGuard Home 正在停止..." sleep 3 echo "AdGuard Home 停止成功!" } -
⑥ 进入路由器文件管理的
/data/auto_ssh{: .filepath} 目录,右击“auto_ssh.sh”文件并点击“编辑”- 注:若没有此目录和文件,可新建,且须连接 SSH 后执行命令
chmod +x /data/auto_ssh/auto_ssh.sh
- 注:若没有此目录和文件,可新建,且须连接 SSH 后执行命令
AdGuard Home 的“DNS 服务器端口”须设置为“5353” {: .prompt-warning }
-
⑦ 在最下方添加如下内容并保存:
sleep 20s cp -f /data/AdGuardHome/AdGuardHome.sh /etc/init.d/AdGuardHome chmod +x /etc/init.d/AdGuardHome && /etc/init.d/AdGuardHome start iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5353 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5353 ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5353 ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5353 -
⑧ 连接 SSH 后直接粘贴如下所有命令:
chmod +x /data/AdGuardHome/AdGuardHome cp -f /data/AdGuardHome/AdGuardHome.sh /etc/init.d/AdGuardHome chmod +x /etc/init.d/AdGuardHome && /etc/init.d/AdGuardHome start iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5353 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5353 ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5353 ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5353
安装 AdGuard Home 成功!
2. AdGuard Home 配置
-
① 引导设置
- ➊ 打开网页 http://192.168.31.1:3000 后点击“开始配置”
- ➋ “网页管理界面端口”输入
3000,“DNS 服务器端口”输入“5353”,点击“下一步” - ➌ “身份认证”设置用户名和密码
- ➍ 点击“打开仪表盘”后输入刚才设置的用户名和密码“登入”,就可以进入 AdGuard Home 管理页面
-
② 进入设置 → 常规设置,取消勾选“启用日志”并点击“保存”(日志非常占用空间)
-
③ DNS 设置
-
➊ 进入设置 → DNS 设置,“上游 DNS 服务器”设置为
localhost:1053,并选择“并行请求”- 注:此时页面右下角可能会弹出报错信息,但不用理会
-
➋ “后备 DNS 服务器”设置为:
quic://dns.alidns.com:853 https://doh.pub/dns-query- ➌ “Bootstrap DNS 服务器”设置为:
223.5.5.5 119.29.29.29 -
-
④ 进入过滤器 → DNS 黑名单 → 添加黑名单 → 从列表中选择,推荐勾选“区域”里的“CHN: anti-AD”,然后点击“保存”
- 注:若等待 10 分钟仍下载失败,可手动将下载地址 URL 更改为
https://anti-ad.net/easylist.txt
- 注:若等待 10 分钟仍下载失败,可手动将下载地址 URL 更改为
配置 AdGuard Home 成功!
AdGuard Home 常用命令:
- 启动服务:
/etc/init.d/AdGuardHome start - 停止服务:
/etc/init.d/AdGuardHome stop - 重启服务:
/data/AdGuardHome/AdGuardHome -s restart - 显示当前服务状态:
/data/AdGuardHome/AdGuardHome -s status
3. AdGuard Home 升级
为了节约路由器内存,请按照如下步骤进行操作:
- ① 执行《六、 1. ① ② ③ ④(替换)》的操作步骤
- ② 连接 SSH 后执行命令
/data/AdGuardHome/AdGuardHome -s restart
4. AdGuard Home 卸载
-
① 删除开机启动项 执行《六、 1. ⑥》的操作步骤,删除添加的内容:
sleep 20s cp -f /data/AdGuardHome/AdGuardHome.sh /etc/init.d/AdGuardHome chmod +x /etc/init.d/AdGuardHome && /etc/init.d/AdGuardHome start iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5353 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5353 ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5353 ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5353并保存
-
② 卸载 AdGuard Home 连接 SSH 后直接粘贴如下所有命令:
/etc/init.d/AdGuardHome stop && /data/AdGuardHome/AdGuardHome -s uninstall && rm -rf /data/AdGuardHome iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53 ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 -
③ 重启路由器
七、 效果图
1. IPv6 效果
2. BT 下载效果
3. ShellCrash 效果
4. AdGuard Home 效果






















