文章

全网最详细的解锁 SSH ShellCrash 搭载 sing-boxp 内核搭配 AdGuard Home 安装和配置教程

此教程适用于 sing-box,ShellCrash 搭载 sing-boxp 内核,搭配 AdGuard Home 作下游,配有详细图文

全网最详细的解锁 SSH ShellCrash 搭载 sing-boxp 内核搭配 AdGuard Home 安装和配置教程

说明

  1. 本教程基于 REDMI AX6000 官方固件 v1.0.70 版,ShellCrash v1.9.2 版,AdGuard Home v0.108.0 版编写
  2. 恢复 SSH,安装 ShellCrash 和 AdGuard Home 的方法也适用于其它已解锁 SSH 的路由器
  3. 安装 sing-box PuerNya 版内核 内核和 AdGuard Home 时须注意路由器 CPU 架构,查看 CPU 架构可连接 SSH 后执行命令 uname -ms,若执行结果是“linux aarch64”,就下载 armv8 或 arm64 版安装包;若是其它架构请下载相匹配的安装包
  4. ShellCrash 和 AdGuard Home 中所有没有提到的配置保持默认即可
  5. ShellCrash 和 AdGuard Home 快速安装方法请看《ShellCrash 和 AdGuard Home 快速安装教程

一、 资源下载

打包下载:https://dustinwinvip.lanzoum.com/b01qd6p3a
密码:zyxz
注:

  • ① 没有对文件进行任何处理,请自行操作使用
  • ② 不保证实时更新,想用新版请安装后自行升级
  • ③ 版本信息请查看打包文件内的 Readme.txt 文本

1. ShellCrash

官方下载:https://raw.githubusercontent.com/juewuy/ShellCrash/master/bin/ShellCrash.tar.gz

2. sing-box PuerNya 版内核

第三方下载:https://github.com/DustinWin/proxy-tools/releases/tag/sing-box
下载 sing-box-puernya-linux-armv8.tar.gz 文件

3. Termius

官方下载:https://autoupdate.termius.com/windows/Termius.exe

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]-Portable.zip 文件

二、 添加 SSH 支持

1. 给 Windows 操作系统添加 SSH 支持(任选一)

  • ① 启用 Telnet 客户端
    • ➊ 进入设置 → 系统 → 可选功能 → 更多 Windows 功能,勾选“Telnet Client”并点击“确定”
      启用 Telnet 客户端 1

    • ➋ 点击“让 Windows 更新为你下载文件”
      启用 Telnet 客户端 2

  • ② 添加 OpenSSH 客户端和 OpenSSH 服务器
    • ➊ 进入设置 → 系统 → 可选功能 → 查看功能,搜索“ssh”,在搜索结果中勾选“OpenSSH 客户端”和“OpenSSH 服务器”并点击“下一步”
      启用 OpenSSH 服务器 1

    • ➋ 点击“添加”
      启用 OpenSSH 服务器 2

  • ③ 连接 Telnet

在成功完成《三、 2》后才能进行此操作

  • ➊ 以管理员身份运行 PowerShell 或 CMD,执行命令 telnet 192.168.31.1
    • 注:首次登录不需要用户名和密码,解锁或恢复 SSH 后用户名为 root,密码为《三、 3》中设置的登录密码

    连接 Telnet 1

  • ➋ 输入密码 12345678(输入时密码不可见,下同)并回车,显示“ARE U OK”表示成功连接 Telnet
    连接 Telnet 2

  • ④ 连接 SSH

在成功完成《三、 3》后才能进行此操作

  • ➊ 以管理员身份运行 PowerShell 或 CMD,执行命令 ssh -oHostKeyAlgorithms=+ssh-rsa [email protected] 以允许 SSH 客户端接受“ssh-rsa”密钥,输入 yes 并回车
    • 注:若当前电脑登录过 SSH,后路由器经过重新解锁或恢复 SSH,须进入 C:\Users\[用户名]\.ssh 文件夹,删除“known_hosts”文件,否则登录会报错

    连接 SSH 1

  • ➋ 输入密码 12345678 并回车
    连接 SSH 1

  • ➌ 显示“ARE U OK”表示成功登录 SSH
    连接 SSH 3

2. 通过 SSH 工具添加 SSH 支持(任选一)

  • ① 打开 Termius
    • ➊ 安装 Termius 并启动,注册并登录(登录后可一直免费试用),然后点击“Starter”
      打开 Termius 1

    • ➋ 继续点击“No, downgrade me to Starter”
      打开 Termius 2

    • ➌ 最后点击“Done”即可打开 打开 Termius
      打开 Termius 3

  • ② 连接和添加 Telnet

在成功完成《三、 2》后才能进行此操作

  • ➊ 点击“NEW HOST”,按图输入,点击“…”图标后再点击“Remove Protocol”
    连接和添加 Telnet 1

  • ➋ 点击“Add protocol”后再点击“Telnet”
    连接和添加 Telnet 2

  • ➌ 最后点击“Connect”即可成功连接和添加 Telnet
    • 注:首次登录不需要输入用户名和密码,解锁或恢复 SSH 后用户名为 root,密码为 SSH 登录密码

    连接和添加 Telnet 3

  • ➍ 显示“ARE U OK”表示成功登录 Telnet
    连接和添加 Telnet 4

  • ③ 连接和添加 SSH

在成功完成《三、 3》后才能进行此操作

  • ➊ 同样先按照第 ② 步操作,然后按图输入,“Password”为解锁或恢复 SSH 时设置的密码,点击“Connect”
    连接和添加 SSH 1

  • ➋ 首次连接 SSH 需要点击“Add and continue”即可成功连接和添加 SSH
    连接和添加 SSH 2

  • ➌ 显示“ARE U OK”表示成功连接 SSH
    连接和添加 SSH 3

3. 通过 WinSCP 连接路由器文件管理

在成功完成《三、 3》后才能进行此操作

  • ① 将下载的 WinSCP-[version]-Portable.zip 文件解压,路径随意,打开 WinSCP,“文件协议”选择“SCP”,其它按图输入,“密码”为 SSH 登录密码,完成后点击登录
    通过 WinSCP 连接路由器文件管理 1

  • ② 左侧为电脑本地文件,右侧为路由器文件
    通过 WinSCP 连接路由器文件管理 2

三、 解锁 SSH

1. 开启调试模式

  • ① 进入路由器管理页面 http://192.168.31.1,登录后复制地址栏中的 stok 值
    复制 stok 值

  • ② 将复制的 stok 值替换如下网址的 {stok} 并访问:

    1
    
    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} 并访问:

    1
    
    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} 并访问:

    1
    
    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} 并访问:

    1
    
    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,可自定义
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    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 -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
    

    永久开启并固化 SSH

  • ② 最后一行 reboot 命令需要手动回车(下同),回车后路由器会重启

解锁 SSH 成功!

四、 恢复 SSH

若已解锁并固化过 SSH 的路由器在升级固件或恢复出厂设置后导致 SSH 丢失,可快速再次解锁 SSH

1. 计算 Telnet 登录密码

打开网站 https://miwifi.dev/ssh,在 SN 处输入路由器背面的 SN 号,点击“Calc”后再点击“Copy”即可复制密码

  • 注:复制的密码即 Telnet 和 SSH 登录密码

计算 Telnet 登录密码

2. 永久开启并固化 SSH

连接 Telnet,执行如下命令:

  • 注:最后一行命令是将 Telnet 或 SSH 登录密码设置为 12345678,可自定义
1
2
3
4
5
mkdir -p /data/auto_ssh
curl -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 目录中
    ShellCrash 安装 1

  • ② 连接 SSH 后执行如下命令:

    1
    
    mkdir -p /tmp/SC_tmp && tar -zxf '/tmp/ShellCrash.tar.gz' -C /tmp/SC_tmp/ && source /tmp/SC_tmp/init.sh
    
  • ③ 选择 1 安装到 /data 目录(推荐,支持软固化功能)
  • ④ 将下载的 sing-box-puernya-linux-armv8.tar.gz 文件复制到桌面,以管理员身份运行 PowerShell,依次执行如下命令:

    1
    2
    
    cd C:\Users\[用户名]\Desktop
    tar -zxvf sing-box-puernya-linux-armv8.tar.gz
    

    .tar.gz 压缩文件成功解压到桌面上,目录结构为 C:\Users\[用户名]\Desktop\CrashCore

  • ⑤ 将 CrashCore 文件移动到路由器的 /tmp 目录中
    ShellCrash 安装 2

安装 ShellCrash 成功!

2. ShellCrash 配置

  • ① 连接 SSH 后执行命令 crash 即可打开 ShellCrash 配置脚本
  • ② 新手引导
    • ➊ 选择 1 路由设备配置局域网透明代理
    • ➋ 启用推荐的自动任务配置
    • ➌ 根据需要是否启用软固化(此处选择 1,解锁 SSH 时已成功启用软固化)
    • ➍ 根据需要是否选择 1 确认导入配置文件(此处选择 0
    • ➎ 根据需要是否选择 1 立即启动服务(此处选择 0
      • 注:强烈建议选择 0,待以下配置完成后,最后一步启动服务
    • ➏ 此时脚本会自动“发现可用的内核文件”,选择 1 加载,后选择 3 Sing-Box-Puer 内核
      ShellCrash 配置 1

    • ➐ 内核加载完成后根据需要是否保留相关数据库文件(此处选择 0
  • ③ 模式设置
    • ➊ 进入主菜单 → 2 内核功能设置 → 1 切换防火墙运行模式,选择 3 Tproxy 模式(有“Tproxy 模式”就选“Tproxy 模式”,否则推荐选“混合模式”,宽带在 300M 内推荐 Tun 模式)
    • ➋ 进入 1 切换防火墙运行模式 → 9 ipv6 设置,若机场节点支持 IPv6,可开启 1 ipv6 透明代理;根据自身需要开启 3 CNV6 绕过内核
      ShellCrash 配置 2

    • ➌ 进入 2 切换 DNS 运行模式,选择 3 mix 混合模式
    • ➍ 进入 4 DNS 进阶设置,选择 4 一键配置加密 DNS,选择 7 禁用 DNS 劫持

      ShellCrash 配置 3

    • ➎ 返回到 2 内核功能设置,根据自身需要开启 8 CN_IP 绕过内核
      ShellCrash 配置 4
  • ④ 进入主菜单 → 4 内核启动设置,选择 1 允许 ShellCrash 开机启动(若重启路由器后服务没有自动运行,可“设置自启延时”为 30 秒,然后在《六、 1. ⑥》,将 sleep 10s 改为 sleep 40s
  • ⑤ 进入主菜单 → 5 配置自动任务 → 1 添加自动任务,输入对应的数字并回车后可设置执行条件
  • ⑥ 进入主菜单 → 9 更新/卸载 → 7 切换安装源及安装版本,选择 b 切换至公测版-master → 1 Jsdelivr_CDN源,追求新版可选择 c 切换至开发版(可能不稳定)
    ShellCrash 配置 5

  • ⑦ 进入主菜单 → 9 更新/卸载 → 4 安装本地 Dashboard 面板,选择 3 安装 MetaXD 面板
    注:
    • ➊ 启动服务后,面板 Dashboard 访问链接为:http://192.168.31.1:9999/ui/
    • ➋ 初次打开需要添加“后端地址”:http://192.168.31.1:9999

    ShellCrash 配置 6

  • ⑧ 进入主菜单 → 6 导入配置文件
    注:

    导入配置文件完成后,选择 1 启动/重启服务

配置 ShellCrash 成功!

ShellCrash 常用命令:

  1. 打开配置:crash
  2. 启动服务:$CRASHDIR/start.sh start
  3. 停止服务:$CRASHDIR/start.sh stop
  4. 重启服务:$CRASHDIR/start.sh restart
  5. 更新订阅:$CRASHDIR/start.sh update_config
  6. 查看帮助和说明:crash -h

3. ShellCrash 升级

进入主菜单 → 9 更新/卸载,查看“管理脚本”、“内核文件”和“数据库文件”有无新版本,有则选择对应的数字进行升级即可
ShellCrash 升级

4. ShellCrash 卸载

  • ① 通过脚本命令进行卸载(任选一)
    连接 SSH 后执行命令 $CRASHDIR/start.sh stop && crash -u
  • ② 通过 ShellCrash 配置进行卸载(任选一)
    进入主菜单 → 9 更新/卸载,选择 9 卸载 ShellCrash

六 、 AdGuard Home 安装和配置

1. AdGuard Home 安装

  • ① 将下载的 upx-[version]-win64.zip 文件解压到桌面,目录结构为 C:\Users\[用户名]\Desktop\upx
  • ② 将下载的 AdGuardHome_linux_arm64.tar.gz 文件复制到桌面,以管理员身份运行 PowerShell,依次执行如下命令:

    1
    2
    
    cd C:\Users\[用户名]\Desktop
    tar -zxvf AdGuardHome_linux_arm64.tar.gz
    

    .tar.gz 压缩文件成功解压到桌面的 AdGuardHome 文件夹内,目录结构为 C:\Users\[用户名]\Desktop\AdGuardHome

  • ③ 进入 AdGuardHome 文件夹,将里面的“AdGuardHome”文件移动到 C:\Users\[用户名]\Desktop\upx 文件夹中
    依次执行如下命令:

    1
    2
    
    cd C:\Users\[用户名]\Desktop\upx
    .\upx AdGuardHome
    
  • ④ 将压缩后的“AdGuardHome”文件移动到路由器的 /data/AdGuardHome 目录(没有此目录就新建)中
    AdGuard Home 安装 1

  • ⑤ 进入路由器文件管理的 /data/auto_ssh 目录,右击“auto_ssh.sh”文件并点击“编辑”
    • 注:若没有此目录和文件,可新建,且须连接 SSH 后执行命令 chmod +x /data/auto_ssh/auto_ssh.sh

    AdGuard Home 安装 2

AdGuard Home 的“DNS 服务器端口”须设置为 5353

  • ⑥ 在最下方添加如下内容并保存:
    • 注: 若 ShellCrash 设置了自启延时如 30 秒,须将 sleep 10s 修改为 sleep 40s(即 +10s)
    1
    2
    3
    4
    5
    6
    7
    
    sleep 10s
    /data/AdGuardHome/AdGuardHome -s install
    /data/AdGuardHome/AdGuardHome -s 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 后直接粘贴如下所有命令:

    1
    2
    3
    4
    5
    6
    7
    
    chmod +x /data/AdGuardHome/AdGuardHome
    /data/AdGuardHome/AdGuardHome -s install
    /data/AdGuardHome/AdGuardHome -s 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 服务器”设置为 127.0.0.1:1053,并选择“并行请求”
      • 注:此时页面右下角可能会弹出报错信息,但不用理会

      AdGuard Home 配置 1

    • ➋ “后备 DNS 服务器”设置为:

      1
      2
      
      https://doh.pub/dns-query
      https://dns.alidns.com/dns-query
      
    • ➌ “Bootstrap DNS 服务器”设置为:

      1
      2
      
      119.29.29.29
      223.5.5.5
      
    • ➍ 直接点击“应用”即可
      AdGuard Home 配置 2

    • ➎ “速度限制”输入 0,勾选“启用 EDNS 客户端子网”,然后点击下方的“保存”
      AdGuard Home 配置 3

    • ➏ 勾选“乐观缓存”,并点击“保存”
      AdGuard Home 配置 4
  • ④ 进入过滤器 → DNS 黑名单 → 添加黑名单 → 从列表中选择,推荐勾选“区域”里的“CHN: anti-AD”,然后点击“保存”
    • 注:若等待 10 分钟仍下载失败,可手动将下载地址 URL 更改为 https://anti-ad.net/easylist.txt

    AdGuard Home 配置 5

    添加成功
    AdGuard Home 配置 6

  • ⑤ 进入过滤器 → DNS 重写 → 添加 DNS 重写,“输入域”填写 miwifi.com,“输入 IP 地址或域名”填写 192.168.31.1,然后点击“保存”
    注:
    • ➊ 此步骤可解决访问 http://miwifi.com 时无法打开小米或红米路由器管理页面的问题,其它型号路由器请根据自身需要填写
    • ➋ 若已在 ShellCrash 配置文件自行添加了此域名相关 hosts,可跳过此步骤

    添加成功
    AdGuard Home 配置 7

配置 AdGuard Home 成功!

AdGuard Home 常用命令:

  1. 启动服务:/data/AdGuardHome/AdGuardHome -s start
  2. 停止服务:/data/AdGuardHome/AdGuardHome -s stop
  3. 重启服务:/data/AdGuardHome/AdGuardHome -s restart
  4. 显示当前服务状态:/data/AdGuardHome/AdGuardHome -s status

3. AdGuard Home 升级

为了节约路由器内存,请按照如下步骤进行操作:

4. AdGuard Home 卸载

  • ① 删除开机启动项 执行《六、 1. ⑥》的操作步骤,删除添加的内容:

    1
    2
    3
    4
    5
    6
    7
    
    sleep 10s
    /data/AdGuardHome/AdGuardHome -s install
    /data/AdGuardHome/AdGuardHome -s 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 后直接粘贴如下所有命令:

    1
    2
    3
    4
    5
    
    /data/AdGuardHome/AdGuardHome -s 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 效果

IPv6 效果 1IPv6 效果 2

2. BT 下载效果

UDP 连接正常,使用的是移动 1000M 带宽
BT 下载效果

3. ShellCrash 效果

使用的是移动 1000M 带宽
ShellCrash 效果

4. AdGuard Home 效果

AdGuard Home 效果

本文由作者按照 CC BY 4.0 进行授权