ShellCrash 安装与配置踩坑与解决日志
本文档基于 Debian/Ubuntu 系统,记录了 ShellCrash 的安装、配置,以及解决“配置后无法代理”和“端口冲突”等关键问题的详细过程。
一、准备与安装(初次安装的坑)
1. 目标: 下载并运行安装脚本。
2. 遇到的问题:
-
问题 A: 运行
bash /tmp/init.sh提示权限不够 (Permission denied)。
3. 原因分析:
-
运行了错误的脚本 (
/tmp/init.sh),并且没有使用sudo,导致它没有权限写入系统目录。
4. 解决方案(正确的安装流程):
# 1. 进入 /tmp 目录
cd /tmp# 2. (如果存在) 清理上次失败留下的旧文件和下载包
# 这是我执行的清理命令,确保环境干净
sudo rm -rf /tmp/SC_tmp /tmp/ShellCrash.tar.gz /tmp/clash_providers.list /tmp/Country.mmdb /tmp/fake_ip_filter.list /tmp/fallback_filter.list /tmp/misnap_init.sh /tmp/servers.list /tmp/shellcrash.procd /tmp/shellcrash.service /tmp/singbox_providers.list /tmp/task.list# 3. 下载安装包
wget https://pub-0b4691e6622f48f6aa74aeee15782ebd.r2.dev/Linux/ShellCrash.tar.gz# 4. 创建正确的临时目录
mkdir -p /tmp/SC_tmp# 5. 将安装包解压到 *指定* 目录
tar -zxf ShellCrash.tar.gz -C /tmp/SC_tmp/# 6. 【关键】使用 sudo (管理员权限) 运行 SC_tmp 目录内的正确脚本
sudo bash /tmp/SC_tmp/init.sh
二、配置向导(全程使用 Sudo)
1. 目标: 完成 ShellCrash 的基础设置。
2. 关键原则:
-
由于我们将 ShellCrash 安装到了系统目录 (
/usr/share),因此之后每一次运行管理命令crash,都必须使用sudo。 -
正确命令:
sudo crash -
错误命令:
crash(会导致各种“权限不够”的错误)
3. 正确的配置流程:
# 1. 使用 sudo 启动配置向导
sudo crash
-
安装位置选择:
-
选择:
2(在/usr/share目录下安装) -
提示:
确认安装?(1/0) > -
选择:
1
-
-
新手引导(
sudo crash自动触发):-
提示:
请先选择你的使用环境: -
选择:
2(Linux设备仅配置本机代理) -
提示:
是否开启公网访问...? -
选择:
0(不开启,更安全) -
提示:
是否启用自动任务...? -
选择:
1(启用) -
提示:
是否导入配置文件? -
选择:
1(是)
-
-
导入订阅链接:
-
提示:
ShellCrash配置文件管理 -
选择:
2(在线获取完整配置文件) -
提示:
我确认遇到问题可以自行解决[1/0] > -
选择:
1 -
提示:
请输入完整链接 > -
粘贴:
https://...(你自己的订阅链接) -
提示:
确认导入配置文件?...[1/0] > -
选择:
1 -
注意: 如果提示“配置文件获取失败!”,重新按
2再试一次,通常是网络临时问题。 -
成功后: 它会提示“已成功获取配置文件!”并询问是否启动,选择
1(是)。
-
三、关键调试(解决“能连接但无法代理”)
这是我遇到的最核心的问题。
1. 症状:
-
ShellCrash服务显示“已启动”。 -
浏览器访问
http://127.0.0.1:9999(Yacd 面板) 可以打开。 -
在 Yacd 面板里设置了“全局”(Global) 模式。
-
但是,浏览器(Firefox)无法访问任何网页,显示“代理服务器拒绝连接”。
-
诡异的是,当我打开另外一个图形界面的 Clash 软件 (Clash-A) 时,它又突然能用了。
2. 原理(“端口冲突”的地盘争夺战):
-
比喻: 我的电脑是公寓,
7890是一个房门号。 -
住户A: 我的“Clash 软件” (
Clash-A)。 -
住户B:
ShellCrash(Clash-B)。 -
规则: 一个房门 (
7890) 只能被一个住户(服务)占用。 -
问题:
-
Clash-A启动时,抢先占用了7890房门。 -
我的 Firefox 设置了去找
7890房门,找到了Clash-A,所以能用。 -
当我关闭
Clash-A,7890房门就空了。 -
此时
ShellCrash(Clash-B) 并没有成功上岗(可能它启动时因为Clash-A占着而失败了)。 -
Firefox 再去敲
7890的门,发现没人开门,所以“拒绝连接”。
-
3. 解决方案(清场与交接): 这是确保 ShellCrash (Clash-B) 成为 7890 唯一主人的正确流程。
-
【清场】 彻底退出“Clash 软件” (
Clash-A)。确保它完全退出,释放7890端口。 -
【交接】 回到终端,运行
sudo crash进入主菜单。 -
【确保A已走】 在
sudo crash菜单中,输入3(停止内核服务)。这确保Clash-B也完全停止了。 -
【B上岗】 在同一个菜单里,输入
1(启动/重启服务)。此时7890端口是干净的,ShellCrash(Clash-B) 会成功抢占并在此端口上开始工作。
四、收尾工作(客户端设置)
1. 检查 ShellCrash 代理端口 (7890)
-
回到终端,运行
sudo crash进入主菜单。 -
输入
7(内核进阶设置) 并回车。 -
输入
5(自定义端口及秘钥) 并回车。 -
检查第一项:
1. 修改Http/Sock5端口:后面是不是7890。-
如果是 0: 请输入
1,然后输入7890并回车,将其设置为7890。 -
如果是 7890: 直接按
0返回。
-
2. 设置开机自启:
-
sudo crash->4. 内核启动设置。 -
选择
1. 允许/禁止开机启动。 -
看到提示“已启用开机启动!”即可。
3. 设置 Firefox(或系统)代理: 我的ShellCrash (Clash-B) 现在正在 127.0.0.1:7890 上工作。需要告诉我的应用程序去找它。
-
打开 Firefox -> 设置 -> 常规 -> 网络设置 -> 设置
-
选择:
手动配置代理(M) -
HTTP 代理:
127.0.0.1端口7890 -
勾选:
也将其代理用于 HTTPS(S) -
SOCKS 主机:
127.0.0.1端口7890 -
点击“确定”。
五、日常使用 —— 使用 Yacd 面板切换节点
ShellCrash 已经在后台运行了,但需要一个“遥控器”来切换节点或模式(比如“全局”或“规则”)。这个遥控器就是 Yacd 面板。
1. 在哪里访问面板?
-
在 Firefox 浏览器中,打开网址:
https://yacd.metacubex.one
2. 如何连接?
-
在 Yacd 页面上,找到
API BASE URL输入框。 -
在框里输入
ShellCrash的管理地址:http://127.0.0.1:9999 -
Secret(秘钥) 留空。 -
点击 "Add" 或 "Connect" 按钮。
3. 如何使用面板?
-
切换节点: 连接成功后,点击左侧菜单的 “代理 (Proxies)”。在这里你可以看到所有节点分组,点击你想要的节点即可立即切换。
-
切换模式: 点击左侧菜单的 “配置 (Settings)”。在
Mode下拉菜单中,你可以选择Global(全局)、Rule(规则) 或Direct(直连)。
