本文目录
配置加入 SSH 私钥文件后,启用服务模式或 TUN 却提示内核启动失败。遇到这种变化,先看最早的文件路径错误,不要把所有启动失败都当作权限不足。
加入 SSH 私钥文件后,内核为什么起不来?
官方 issue #8445 记录了 Windows 11、Clash Verge Rev v2.5.8 使用 SSH 私钥文件后无法开启 TUN 的情况。相对路径找不到文件,改成绝对路径又遇到 SAFE_PATHS 限制;后面的 code 1006 是内核未就绪的外层错误。
官方 v2.5.10 已收入服务模式 SSH 私钥文件的修复。本文处理的是这个文件交给服务内核时的问题,不承诺修好所有 TUN 故障,也不把单个 Windows 报告写成三种系统均已实测。
从首条错误判断是否适用
| 实际现象 | 处理方向 |
|---|---|
| 配置含 type: ssh 和文件形式的 private-key,随后报路径或 SAFE_PATHS 错误 | 继续核对文件位置和应用修复 |
| 只有 code 1006、IPC 未就绪,没有私钥相关错误 | 保留更早的内核日志,先定位真正原因 |
| 内核已启动,但 SSH 认证或主机密钥校验失败 | 检查 SSH 凭据、服务器和主机密钥,不当作启动修复 |
| 配置没有使用 SSH 私钥文件 | 按实际服务、网络或配置错误排查 |
相对路径的起点变了,改成绝对路径也未必有效
Mihomo 的 private-key 可以填写私钥内容或文件路径。本文只讨论文件路径;不要为了绕过路径错误,把完整私钥粘进订阅、公开配置或反馈截图。
服务内核使用独立的运行目录,不能假定它能直接读取应用目录里的相对文件。v2.5.10 会把符合条件的本地私钥暂存到服务运行目录,并改写发给服务的配置,用户不需要手工往服务目录补文件。
这个修复仍有限制:文件必须真实存在,解析后的实际位置仍在应用运行配置的父目录以内。相对路径从这个父目录开始计算;绝对路径也受同一目录限制,不能据此宣称任意磁盘文件都能读取。
顶层 proxies 和 proxy-providers 的 payload 中的 SSH 项会被处理;远端 provider 文件里的任意节点并不因此获得递归扫描保证。内联私钥、Windows UNC 或设备路径也不属于这次普通本地文件暂存的范围。
保留原配置与私钥,再核对文件实际位置
先保存当前 Profile、自定义覆写、原代理模式和可恢复的外部副本。私钥文件也要单独保留原件;只有配置 ZIP,不代表已经包含外部 SSH 文件。备份应留在自己控制的位置,求助时另做脱敏副本。
打开“设置 → Verge 高级设置 → 配置目录”。这里是应用配置目录,也是运行配置文件的父目录;不要进入 profiles 子目录作为相对路径起点,也不要到服务运行目录手工补文件。
在打开的目录内使用 ssh 子目录保留可信私钥的受限访问副本,在自己维护的 Profile 或持久覆写中写 private-key: 'ssh/id_ed25519',并按实际文件名调整。原私钥保持不动,便于撤销。
确认目标是普通文件、应用可读取,而且不是指向目录之外的符号链接;不要改扩展名冒充丢失的文件。不要直接编辑会重新生成的运行 YAML,不把私钥加入公开仓库,也不取消原有文件保护。
更新前记录
- 完整应用版本、操作系统、当前是否使用服务模式及 TUN。
- 实际运行配置的父目录、private-key 的写法与文件位置;公开反馈时隐藏用户名和敏感路径。
- 最早的文件或安全路径错误,以及后续内核启动错误的先后顺序。
- 原配置、私钥原件及原来的可用节点和接管设置。
安装 v2.5.10,让应用重新准备服务所需的文件
修复在 Clash Verge Rev 应用准备服务运行资源的代码中。只更新 Mihomo、刷新订阅或反复开关 TUN,不能代替完整应用更新。已使用有同项修复证据的后续正式版时,也无需为本文降回 v2.5.10。
从本文参考资料中的官方 v2.5.10 Release,按自己的系统、芯片架构和原安装方式更新。本站本次不替换托管安装包,不把旧包可下载当作这项修复已经到位。
按原安装方式更新并重开
保存工作后正常退出应用
在可以中断网络时,记录原设置,按应用支持的方式停止当前接管,再从托盘完整退出。保留配置和私钥,不删除数据目录,也不手工替换服务内部文件。
完成官方应用更新
使用匹配系统与架构的正式安装包,保留原有安装方式。若安装或签名检查失败,先处理具体错误,不关闭系统安全校验来继续。
重开并核对真正运行的版本
确认实际应用为 v2.5.10 或有同项修复证明的后续正式版,原 Profile 和持久覆写仍在。路径改动应保存到源配置并重新激活,再核对最终配置中的 SSH 项。
按原需求启动服务内核和 TUN
保持原来需要的接管方式,重新启动后查看最早的日志。不要同时改 DNS、节点凭据和多项开关,让结果无法比较。
内核启动后,还要验证原 SSH 节点能否通信
先确认内核已就绪、私钥路径或 SAFE_PATHS 错误不再导致退出,再选择原来需要的 SSH 节点,发起一条新的真实请求。用客户端“连接”页核对这次请求确实走到预期 SSH 出口,并确认业务结果成功。
内核能启动不等于 SSH 登录成功;延迟有数值或 TUN 开关亮起,也不能单独证明身份验证、主机密钥校验和真实流量都正常。若随后报认证失败,应按 SSH 服务器和凭据继续排查,不删除 host-key 来取消校验。
修复后的验证清单
- 实际应用版本包含服务模式私钥暂存修复,最终配置使用预期的 SSH 项。
- 私钥真实存在于允许的应用配置范围,重启后也能读取。
- 服务内核能就绪,不再因该文件路径错误退出。
- 新连接使用预期 SSH 节点,真实请求完成,原业务仍可用。
- 恢复日常模式、原选择和必要接管设置后,再核对一次结果。
本站没有在真实客户端安装或复现本题。本文依据官方用户报告、正式发布、固定源码和 SSH 配置文档;网站的翻译、源级或浏览器检查,不能替代你设备上的实际连接验证。
仍失败时按首条错误回退,保留文件保护
提示 private key is unavailable below the config root
重新核对运行配置的父目录、文件是否存在、实际解析位置及应用读取权限。目录外文件、符号链接逃逸或远端路径不属于本次自动暂存保证,不盲目改 SAFE_PATHS。
文件错误已消失,仍有 code 1006 或其他退出
保存新的首条内核错误和实际版本,按它继续定位;不要仅凭最后一条 IPC 错误重装系统服务。
更新后应用或原配置无法使用
停止叠加修改,保存当前状态。先恢复自己已知可用的配置和节点;确需回退应用时,按项目支持的方式使用匹配备份,避免新旧程序争用唯一数据目录。
暂时无法升级时,可恢复已经确认可用的非 SSH 节点或原配置,先恢复工作;这不代表旧服务模式的私钥问题已经修好。不为绕过限制开放全盘读取、给所有用户写权限,或把密钥搬进服务目录作为永久方案。
反馈时提供操作系统、完整应用版本、服务模式、private-key 使用文件还是内容、脱敏目录关系和首条错误。不上传私钥、密码、订阅令牌或完整配置包。
