最近在服务器部署 Hysteria2 时,遇到了一个非常奇怪的问题。
安装完成后,发现 宝塔面板的文件管理突然没有权限了,AI 开发环境一直部署失败,各种提示权限不足。当时一直以为是目录权限、SELinux 或者宝塔自身的问题,折腾了半天都没解决。
后来仔细排查才发现,宝塔终端登录用户竟然不知道什么时候从 root 变成了 hysteria。
最后借助 Codex 分析了很久,终于找到原因并修复成功。
如果你和我一样是小白,其实不用完全理解原理。可以直接在服务器安装一个 Codex,把本文的原因和解决方案发给它,让 AI 帮你执行即可。我自己也是 AI 帮忙修好的。
---
问题表现#
安装 Hysteria2 后,可能会出现以下现象:
- 宝塔文件管理无法编辑、删除、上传文件
- 文件管理提示权限不足
- AI 部署项目一直失败
- 宝塔终端打开后执行:
whoami结果显示:
hysteria而不是:
root---
原因分析#
安装 Hysteria2 时,会自动创建一个名为 hysteria 的系统服务账户,用于运行 Hysteria 服务。
正常情况下,这个账户没有任何问题。
真正的问题在于:
宝塔面板后续不知道什么原因,将本机 SSH 登录配置切换成了 hysteria 用户,而不是 root 用户。
因此:
- 宝塔终端使用的是 hysteria 登录
- 文件管理调用终端时也使用 hysteria
- 由于 hysteria 没有 root 权限,因此整个文件管理都会出现权限问题。
注意:千万不要删除 hysteria 账户!它是 Hysteria2 正常运行所依赖的服务账户,删除后可能导致代理服务无法启动。
---
# 解决方法
第一步:使用 root 登录服务器#
先通过 SSH 或服务器控制台,以 root 身份登录服务器。
---
第二步:确认 root 私钥存在#
执行:
test -f /root/.ssh/id_ed25519 && echo "root key exists"如果输出:
root key exists说明可以继续下一步。
---
第三步:恢复宝塔本机 SSH 配置#
进入宝塔目录:
cd /www/server/panel执行下面命令(如果你的 SSH 端口不是 22,请把命令里的两个 22 都改成实际端口):
./pyenv/bin/python3 -c "import sys; sys.path.insert(0,'/www/server/panel/class'); import ssh_terminal; key=open('/root/.ssh/id_ed25519').read(); a=ssh_terminal.ssh_host_admin(); [a.save_ssh_info(n,{'host':h,'port':22,'ps':'本机Root','sort':0,'username':'root','password':'','pkey':key,'pkey_passwd':''}) for n,h in [('127.0.0.1_22','127.0.0.1'),('localhost','localhost')]; print('root terminal configuration restored')"执行成功后,会提示:
root terminal configuration restored---
这条命令会修复什么?#
执行后会同时恢复:
- 宝塔面板【终端】
- 宝塔【文件管理 → 终端】
两处都会重新使用 root 登录。
---
第四步:验证是否恢复成功#
关闭当前宝塔终端。
然后:
1. 强制刷新浏览器(Ctrl + Shift + R)
2. 重新打开宝塔终端
3. 执行:
whoami如果输出:
root说明已经恢复成功。
---
# 特殊情况
如果执行时提示:
/root/.ssh/id_ed25519 不存在说明服务器没有保存 root 的 SSH 私钥。
这种情况:
- 需要使用服务器原来的 root 私钥重新配置;
- 不能从
hysteria账户恢复 root 登录信息。
---
# 总结
这并不是 Hysteria2 本身的 Bug,而是安装后宝塔本机 SSH 登录配置意外切换到了 hysteria 用户,导致终端和文件管理都失去了 root 权限。
遇到这种情况,不要急着:
- ❌ 删除 hysteria 用户
- ❌ 重装宝塔
- ❌ 重装系统
只需要恢复宝塔本机 SSH 登录配置,让它重新使用 root 即可。
希望这篇文章能帮大家少走一些弯路。如果你也是在安装 Hysteria2 后遇到宝塔文件管理权限异常的问题,可以按照本文的方法尝试修复。