| 分类 |
功能 |
| 部署 |
一键安装 / 卸载、快速配置 / 手动配置、部署后自动检查 |
| 用户 |
多用户管理(userpass 认证)、批量添加 / 删除 |
| 导出 |
客户端 YAML / URI 链接 / 二维码 / 订阅链接 |
| 证书 |
ACME 自动证书、自签名证书、自定义证书上传 |
| 出站 |
Direct / SOCKS5 / HTTP 代理规则管理 |
| 运维 |
配置备份恢复、日志管理、流量统计、速度测试 |
| 网络 |
防火墙自动配置、端口跳跃、DNS 管理、ACL 规则、带宽限制 |
| 安全 |
输入注入防护、安全临时文件、SHA256 完整性校验、安全下载、Tar Slip 防护、安全 YAML 写入 |
| 更新 |
Hysteria2 二进制更新 + 脚本自身更新 |
curl -fsSL --proto '=https' --tlsv1.2 \
-o quick-install.sh \
https://raw.githubusercontent.com/motao123/S-Hy2-Manager/main/quick-install.sh
bash -n quick-install.sh
sudo bash quick-install.sh
sudo s-hy2
git clone https://github.com/motao123/S-Hy2-Manager.git
cd S-Hy2-Manager
chmod +x hy2-manager.sh scripts/*.sh modules/*.sh
sudo ./hy2-manager.sh
- Ubuntu 18.04+ / Debian 9+ / CentOS 7+ / Fedora 30+
- root 或 sudo 权限
- systemd
- 修复备份恢复前未校验 tar 成员路径的问题,阻止绝对路径与
.. 路径遍历覆盖系统文件。
- 统一远程安装、卸载、更新脚本执行入口,下载后执行语法检查与 SHA256 记录校验。
- 将 ACME、自签名和快速配置生成统一改为安全 YAML 写入,避免特殊字符破坏配置结构。
- 将参考配置加载器改为只解析受支持的赋值语句,不再
source 执行配置文件。
- 将端口跳跃相关 iptables 规则删除改为数组参数执行,并补充 ShellCheck CI。
- 修复 DNS 配置管理中“使用推荐 DNS 配置”在交互菜单内选择后可能异常返回/退出的问题。
- 优化推荐 DNS 写入流程,统一复用安全 YAML 写入与配置替换逻辑。
- 增强 DNS 配置写入时的备份与权限处理,继续保留修改前配置快照。
- 验证主菜单与子菜单基础入口:域名、证书、服务、客户端导出、出站、防火墙、用户、ACL、带宽、DNS、备份、日志等菜单均可正常返回。
- 验证服务器部署目录
/opt/s-hy2,并同步最新模块化脚本结构到服务器安装目录。
sudo s-hy2 # 交互菜单(默认)
sudo s-hy2 --install # 安装 Hysteria2
sudo s-hy2 --uninstall # 卸载
sudo s-hy2 --status # 服务状态
sudo s-hy2 --restart # 重启服务
sudo s-hy2 --stop # 停止服务
sudo s-hy2 --start # 启动服务
# 用户管理
sudo s-hy2 --list-users # 列出用户
sudo s-hy2 --add-user alice # 添加用户(自动生成密码)
sudo s-hy2 --del-user alice # 删除用户
# 导出
sudo s-hy2 --export # 导出客户端 YAML
sudo s-hy2 --export-uri # 导出 URI 链接
sudo s-hy2 --export-sub # 导出订阅链接
# 运维
sudo s-hy2 --backup # 创建备份
sudo s-hy2 --restore # 恢复最新备份
sudo s-hy2 --validate # 验证配置文件
sudo s-hy2 --speed-test # 速度测试
sudo s-hy2 --update # 检查更新
sudo s-hy2 -v # 显示版本
── 基础操作 ──
1 安装 Hysteria2 2 快速配置 3 手动配置
4 修改配置 5 域名管理 6 证书管理
7 服务管理 8 订阅链接 / 客户端导出
── 高级功能 ──
9 出站规则 10 防火墙管理 11 多用户管理
12 ACL 规则管理 13 带宽限制 14 DNS 配置管理
── 运维工具 ──
15 配置备份与恢复 16 日志管理 17 速度测试
18 流量统计 19 检查更新
20 卸载服务 21 关于脚本 0 退出
S-Hy2-Manager/
├── hy2-manager.sh # 主入口(菜单 + CLI 分发 + 核心函数)
├── install.sh # 安装 / 卸载脚本
├── quick-install.sh # 一键安装脚本
│
├── modules/ # 功能模块(由主脚本 source 加载)
│ ├── install.sh # 安装逻辑
│ ├── domain.sh # 域名管理(ACME + 伪装域名)
│ ├── certificate.sh # 证书管理
│ ├── port-hopping.sh # 端口跳跃
│ ├── config-edit.sh # 配置修改(密码 / 端口 / 混淆)
│ ├── user-manager.sh # 多用户管理
│ ├── client-export.sh # 客户端导出(YAML / URI / QR / 订阅)
│ ├── backup.sh # 配置备份与恢复
│ ├── acl-manager.sh # ACL 规则管理
│ ├── bandwidth.sh # 带宽限制
│ ├── traffic-stats.sh # 流量统计
│ ├── log-manager.sh # 日志管理
│ ├── auto-update.sh # 自动更新(SHA256 变更检测)
│ ├── speed-test.sh # 速度测试
│ ├── dns-manager.sh # DNS 配置管理
│ ├── outbound-core.sh # 出站规则 — 核心初始化
│ ├── outbound-add.sh # 出站规则 — 添加
│ ├── outbound-modify.sh # 出站规则 — 修改
│ ├── outbound-delete.sh # 出站规则 — 删除
│ ├── outbound-apply.sh # 出站规则 — 应用配置
│ └── outbound-view.sh # 出站规则 — 查看展示
│
├── scripts/ # 公共库与辅助脚本
│ ├── common.sh # 公共函数(日志 / 错误处理 / 路径常量 / 密码生成)
│ ├── config.sh # 配置生成(快速 / 手动)
│ ├── service.sh # 服务管理
│ ├── input-validation.sh # 输入验证与注入防护
│ ├── secure-download.sh # 安全下载 + SHA256 校验
│ ├── firewall-manager.sh # 防火墙管理
│ ├── outbound-manager.sh # 出站规则加载入口
│ ├── domain-test.sh # 伪装域名优选测试
│ ├── node-info.sh # 节点信息展示
│ └── post-deploy-check.sh # 部署后检查
│
├── templates/ # YAML 配置模板
│ ├── acme-config.yaml # ACME 证书配置
│ ├── client-config.yaml # 客户端配置
│ └── self-cert-config.yaml # 自签名证书配置
│
├── config/ # 应用配置
│ └── app.conf # 全局参数(端口 / 超时 / 安全开关等)
│
├── contrib/ # 参考材料(非生产代码)
│
└── .github/workflows/
├── pages.yml # GitHub Pages 部署
└── shellcheck.yml # CI — ShellCheck 代码检查
- 在
modules/ 下创建 .sh 文件
- 头部加
#!/bin/bash 和模块说明
- 使用
common.sh 提供的公共函数(日志、错误处理、路径常量等)
- 在
hy2-manager.sh 的 load_new_modules() 中追加模块名
- 在
print_menu() 和 main() 的 case 中添加菜单入口
- ShellCheck 核心脚本检查通过(CI 强制)
- 变量双引号包裹:
"$var" 而非 $var
local 声明与赋值分开:
local result
result=$(some_command)
- 路径使用
common.sh 中的常量,不硬编码
- 临时文件用
create_temp_file() / create_temp_dir()(权限 600/700)
- YAML 写入用
yaml_write_kv() / replace_config_file_securely()
| 常量 |
值 |
HYSTERIA_DIR |
/etc/hysteria |
HYSTERIA_CONFIG |
/etc/hysteria/config.yaml |
HYSTERIA_DOMAIN_CONF |
/etc/hysteria/server-domain.conf |
HYSTERIA_PORT_HOPPING_CONF |
/etc/hysteria/port-hopping.conf |
HYSTERIA_SERVICE |
hysteria-server.service |
- 安全修复:备份恢复增加 Tar Slip 路径校验并收紧备份目录权限
- 安全修复:远程脚本执行统一走下载、语法检查、SHA256 记录校验入口
- 安全修复:配置生成统一使用
yaml_write_kv() / replace_config_file_securely()
- 安全修复:
contrib/config-loader.sh 改为安全解析配置,不再 source 执行
- 工程化:补充 ShellCheck GitHub Actions,并同步 Pages/README 安全说明
- 版本号更新为
v2.0.1
- 修复 DNS 推荐配置交互流程异常
- 补充最近更新说明与服务器验证记录
- 完成菜单冒烟测试与 shell 语法检查
- 架构重构:主脚本拆分为 21 个功能模块
- 安全加固:输入注入防护、安全临时文件、SHA256 完整性校验、安全下载
- YAML 安全写入:集中化
yaml_write_kv() / yaml_quote_scalar()
- 自动更新:MD5 → SHA256 变更检测 + 版本记录
- CI:ShellCheck 自动检查
- 修复安装模块路径异常、出站规则删除闪退
- 优化伪装域名优选、出站规则状态检查
- Fork → 创建功能分支 → 提交 → PR
- 确保 ShellCheck 通过
- 新功能附对应测试
如果这个项目对你有帮助,可以请作者喝杯咖啡