Revise README with updated badge links and features
Updated badge links and improved security architecture details in README.
This commit is contained in:
1 parent
cde36a6b80
commit
de60b8c050
1 file changed
+55
-22
@@ -7,10 +7,10 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/Shell-POSIX_sh-blue?style=flat-square" alt="POSIX Shell">
|
||||
<img src="https://img.shields.io/badge/License-MIT-green?style=flat-square" alt="License">
|
||||
<img src="https://img.shields.io/github/v/release/247like/linux-ssh-init-sh?style=flat-square" alt="Release">
|
||||
<img src="https://img.shields.io/github/stars/247like/linux-ssh-init-sh?style=flat-square" alt="Stars">
|
||||
<img src="[https://img.shields.io/badge/Shell-POSIX_sh-blue?style=flat-square](https://img.shields.io/badge/Shell-POSIX_sh-blue?style=flat-square)" alt="POSIX Shell">
|
||||
<img src="[https://img.shields.io/badge/License-MIT-green?style=flat-square](https://img.shields.io/badge/License-MIT-green?style=flat-square)" alt="License">
|
||||
<img src="[https://img.shields.io/github/v/release/247like/linux-ssh-init-sh?style=flat-square](https://img.shields.io/github/v/release/247like/linux-ssh-init-sh?style=flat-square)" alt="Release">
|
||||
<img src="[https://img.shields.io/github/stars/247like/linux-ssh-init-sh?style=flat-square](https://img.shields.io/github/stars/247like/linux-ssh-init-sh?style=flat-square)" alt="Stars">
|
||||
</p>
|
||||
|
||||
---
|
||||
@@ -21,16 +21,16 @@
|
||||
|
||||
### ✨ 核心特性
|
||||
|
||||
* **全平台兼容**: 完美支持 **Debian 10/11/12**, **Ubuntu**, **CentOS 7/8/9**, **Alma/Rocky**, 以及 **Alpine Linux**。
|
||||
* **全平台兼容**: 完美支持 **Debian**, **Ubuntu**, **CentOS/RHEL**, **Alma/Rocky**, 以及 **Alpine Linux**。
|
||||
* **POSIX 标准**: 纯 `/bin/sh` 编写,无需安装 `bash`。在 `dash` (Debian) 和 `ash` (Alpine/Busybox) 上稳定运行。
|
||||
* **安全设计架构**:
|
||||
* **头部管理块**: 将配置插入 `sshd_config` 最顶部,完美覆盖 Debian 12 默认的 `Include` 配置陷阱。
|
||||
* **原子化验证**: 修改后自动执行 `sshd -t` 校验,若校验失败则**自动回滚**配置。
|
||||
* **防失联机制**: 如果 SSH 公钥下载或部署失败,脚本**不会**强制关闭密码登录。
|
||||
* **防火墙感知**: 修改端口时,自动识别并放行 `ufw` 或 `firewalld`。
|
||||
* **安全架构 (Fortress Pro)**:
|
||||
* **托管配置块**: 使用 `# BEGIN SERVER-INIT MANAGED BLOCK` 头部插入配置,确保优先级最高,不受 `Include` 指令干扰。
|
||||
* **自动回滚 (Auto-Rollback)**: 运行时若发生 SSHD 校验失败、端口未监听或连接测试失败,自动还原系统状态。
|
||||
* **进程防杀 (Anti-Kill)**: 为 SSHD 服务添加 systemd `override.conf`,防止 OOM 误杀并配置自动重启。
|
||||
* **防失联死锁检测**: 智能检测认证方式,防止出现“既禁用密码又未配好密钥”的死锁。
|
||||
* **自动化友好**:
|
||||
* 支持 **无头模式 (Headless)**,通过命令行参数实现零交互无人值守安装。
|
||||
* **随机高位端口**: 自动生成 20000-60000 之间的随机端口并检测占用。
|
||||
* **审计与报告**: 自动生成详细的操作审计日志与系统健康检查报告。
|
||||
|
||||
### 🚀 快速开始
|
||||
|
||||
@@ -79,9 +79,10 @@ curl -fsSL https://raw.githubusercontent.com/247like/linux-ssh-init-sh/main/init
|
||||
| **基础控制** | `--lang=en` | 强制使用英文界面 |
|
||||
| | `--yes` | **自动确认**:跳过脚本最后的 "确认执行?" 询问 |
|
||||
| | `--strict` | **严格模式**:遇到任何错误立即退出 (详见下方) |
|
||||
| | `--delay-restart` | **延迟重启**:修改配置但不重启 SSH 服务 (适用于特殊环境) |
|
||||
| **用户与端口** | `--user=root` | 指定登录用户 (root 或普通用户名) |
|
||||
| | `--port=22` | 保持默认 22 端口 |
|
||||
| | `--port=random` | 生成随机高位端口 (20000-60000) |
|
||||
| | `--port=random` | 生成随机高位端口 (49152-65535) |
|
||||
| | `--port=2222` | 指定具体端口号 |
|
||||
| **密钥来源** | `--key-gh=username` | 从 GitHub 用户拉取公钥 |
|
||||
| | `--key-url=url` | 从指定 URL 下载公钥 |
|
||||
@@ -98,18 +99,50 @@ curl -fsSL https://raw.githubusercontent.com/247like/linux-ssh-init-sh/main/init
|
||||
| **设计理念** | **"优先保命"** (尽力而为) | **"优先合规"** (零容忍) |
|
||||
| **公钥失败** | 若下载失败,脚本**保留密码登录**并警告。<br>👉 *结果:服务器不安全,但能登录修补。* | 脚本**立即报错退出**,不修改任何配置。<br>👉 *结果:部署中断,保持原样。* |
|
||||
| **端口失败** | 若随机端口失败,回退使用 **端口 22**。 | 脚本**立即报错退出**。 |
|
||||
| **适用场景** | 手动操作、网络环境不稳定。 | 自动化运维、CI/CD、高安全要求环境。 |
|
||||
|
||||
### 🛠️ 执行流程细节
|
||||
### 📂 日志与审计
|
||||
|
||||
1. **环境检测**: 自动识别包管理器 (`apt`/`yum`/`apk`) 并安装 `curl`, `sudo`, `openssh-server` 等依赖。
|
||||
2. **用户管理**: 创建指定用户(若非 root)并配置免密 Sudo 权限。
|
||||
3. **密钥部署**: 部署 SSH 公钥,自动修正 `.ssh` 目录权限,支持去重。
|
||||
4. **SSH 加固**:
|
||||
* 备份 `sshd_config`。
|
||||
* 清理旧的脚本配置块。
|
||||
* 在文件**头部**写入新的安全配置(禁密码、改端口等),确保优先级最高。
|
||||
5. **收尾工作**: 验证配置语法,重启 SSH 服务,并根据选择应用 BBR 或系统更新。
|
||||
脚本执行后会生成以下重要文件,用于排查问题或审计合规:
|
||||
|
||||
* **运行日志**: `/var/log/server-init.log` (包含详细的 debug 信息)
|
||||
* **审计日志**: `/var/log/server-init-audit.log` (记录关键操作 Action、时间戳及操作人)
|
||||
* **健康报告**: `/var/log/server-init-health.log` (最终的系统配置状态快照)
|
||||
|
||||
### 🆘 灾难恢复与配置还原
|
||||
|
||||
脚本拥有两层安全机制:**运行时自动回滚** 和 **持久化备份恢复**。
|
||||
|
||||
如果在脚本执行完成后(显示 "DONE" 后)您无法连接服务器,请通过云服务商的 VNC / Console 控制台登录,并使用以下方法恢复。
|
||||
|
||||
#### 方法 A:使用一键恢复脚本 (推荐)
|
||||
|
||||
脚本在修改前会自动创建备份,并生成恢复脚本。
|
||||
|
||||
1. 找到最近的备份目录:
|
||||
```bash
|
||||
ls -ld /var/backups/ssh-config/*
|
||||
```
|
||||
2. 进入目录并运行恢复脚本:
|
||||
```bash
|
||||
# 进入最新的备份目录 (例如 20250520_120000)
|
||||
cd /var/backups/ssh-config/<TIMESTAMP>/
|
||||
|
||||
# 执行恢复
|
||||
sh restore.sh
|
||||
```
|
||||
*该脚本会自动覆盖 sshd_config 并尝试重启 SSH 服务。*
|
||||
|
||||
#### 方法 B:手动恢复
|
||||
|
||||
如果无法运行脚本,可手动复制文件:
|
||||
|
||||
```bash
|
||||
# 1. 覆盖配置文件
|
||||
cp /var/backups/ssh-config/<TIMESTAMP>/sshd_config /etc/ssh/sshd_config
|
||||
|
||||
# 2. 重启服务
|
||||
systemctl restart sshd || service sshd restart
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user