Update README.md

This commit is contained in:
BeacherZ authored and GitHub committed 2026-09-01 20:17:56 +08:00
1 parent d9cb06f964
commit fa6624752b
1 file changed
+111 -52
+111 -52
View File
@@ -1,74 +1,62 @@
# Linux SSH 密钥与安全一键配置工具
# 🔐 SSH Key & Security Installer
一个轻量、高效且安全的 Linux SSH 运维脚本。支持一键导入/生成 SSH 密钥、更改服务端口、禁用密码登录以及公钥精准可视化管理。
一键搞定 Linux 服务器的 SSH 密钥配置、端口修改和密码登录禁用。
专为云服务器初始化、VPS 安全加固和自动化运维设计,兼容主流 Linux 发行版。
适用于云服务器初始化、VPS 密钥管理及安全加固。
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Bash](https://img.shields.io/badge/Bash-4.0+-green.svg)](https://www.gnu.org/software/bash/)
[![Platform](https://img.shields.io/badge/platform-Linux-blue.svg)](https://www.linux.org)
---
## ✨ 核心特性
## 📦 功能特性
- 🔑 **灵活的密钥管理**
- **GitHub 一键拉取**:直接输入 GitHub 用户名即可批量导入公钥。
- **干净生成 ED25519**:本地快速生成新密钥对,自动剔除主机名/邮箱等尾部标识(无痕安全)。
- **多源导入**:支持自定义 URL 拉取与本地文件导入。
- **可视化表格管理**:直观展示已存公钥的添加时间、类型与备注来源,支持按序号单条精准删除或一键清空。
- **一键导入 SSH 公钥**
- 从 GitHub 拉取(输入用户名即可)
- 从自定义 URL 导入
- 从本地文件导入
- 支持覆盖模式(`-o`)
- 🛡️ **安全防护与加固**
- **一键开关密码登录**:轻松开启或彻底禁用密码登录(同步禁用 `ChallengeResponseAuthentication` 和 `KbdInteractiveAuthentication`)。
- **修改 SSH 端口**:支持 1024-65535 自定义端口,并**自动放行 UFW / Firewalld / SELinux** 相应规则。
- **安全防锁死保护**:
- 在应用任何配置前强制进行 `sshd -t` 语法检查。
- 智能检测当前 SSH 远程会话并弹出预警提示。
- 自动处理 Debian/Ubuntu 系统下 `systemd ssh.socket` 导致的服务重启失效问题。
- **在服务器上安全生成 ED25519 密钥对**
- 无痕生成(`-C ""` 清除后缀标识)
- 自动将公钥写入 `authorized_keys`
- 生成后私钥直接显示在终端,供本地保存(或通过 SFTP 下载)
- ⚡ **全系统兼容与 CLI 支持**
- 自动检测并安装缺失依赖(`curl`, `ssh-keygen`, `gawk`)。
- 完美兼容主流 Linux 发行版(Debian, Ubuntu, CentOS, RHEL, Rocky Linux, AlmaLinux, Alpine Linux 等)。
- 提供 CLI 命令行参数,方便集成至自动化脚本或 Cloud-init。
- **交互式公钥可视化管理**
- 列表展示所有已存公钥(含添加时间、密钥类型、来源备注)
- 支持按序号删除单条公钥
- 支持一键清空所有公钥
- **安全加固**
- 一键禁用密码登录(同时关闭 `ChallengeResponseAuthentication` 和 `KbdInteractiveAuthentication`)
- 修改 SSH 端口,并自动放行 `UFW` / `Firewalld` / `SELinux`
- 修改前自动执行 `sshd -t` 语法检查,防止配置错误导致断连
- 智能检测远程会话,操作前给出安全提示
- **全平台兼容**
- 支持 `systemd`(Debian/Ubuntu/CentOS/RHEL)和 `OpenRC`(Alpine)
- 自动安装依赖(`curl`, `ssh-keygen`, `gawk`)
- **命令行无人值守模式**
- 支持通过参数快速完成配置,便于集成到 `cloud-init` 或自动化脚本
---
## 🚀 一键执行命令
## 🚀 快速开始
在终端复制并粘贴以下代码,即可自动下载并启动交互菜单:
在终端中执行以下命令,即可下载并启动交互式菜单:
```bash
bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh)
```
---
## 🛠️ CLI 无人值守参数
## 🖥️ 交互式菜单使用
支持在自动化脚本中通过命令行参数快速配置:
| 参数 | 格式 / 示例 | 说明 |
| --- | --- | --- |
| `-g` | `-g <GitHub用户名>` | 从 GitHub 拉取公钥并启用密钥登录 |
| `-u` | `-u <URL>` | 从指定自定义 URL 拉取公钥并写入 |
| `-f` | `-f <文件路径>` | 从本地公钥文件导入 |
| `-p` | `-p <端口号>` | 修改 SSH 服务端口(如 `-p 2222`) |
| `-d` | `-d` | 禁用 SSH 密码登录(纯密钥模式) |
| `-o` | `-o` | **覆盖模式**(结合 `-g/-u/-f` 使用,导入前先清空旧公钥) |
### CLI 调用示例
```bash
# 示例 1: 从 GitHub 拉取公钥并禁用密码登录
bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh) -g "你的GitHub用户名" -d
# 示例 2: 清空原有公钥并覆盖导入,同时修改 SSH 端口为 22222
bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh) -o -g "你的GitHub用户名" -p 22222
运行脚本后会显示当前 SSH 状态面板,并提供以下功能选项:
```
---
## 🖥️ 菜单预览
```plain
============================================================
SSH 密钥安全配置工具
============================================================
@@ -84,17 +72,88 @@ bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh)
4. 公钥管理
0. 退出脚本
============================================================
```
### 选项说明
| 选项 | 功能 |
|------|------|
| `1` | 添加 SSH 密钥(支持 GitHub / 本地生成 / 自定义 URL) |
| `2` | 切换密码登录状态(启用或禁用) |
| `3` | 修改 SSH 服务端口(自动放行防火墙) |
| `4` | 管理已存公钥(查看、删除单条、清空全部) |
| `0` | 退出脚本 |
---
## ⚙️ CLI 命令行参数(无人值守)
适用于自动化脚本或 `cloud-init` 初始化。所有参数可组合使用。
| 参数 | 格式 | 说明 |
|------|------|------|
| `-g` | `-g <GitHub用户名>` | 从 GitHub 拉取该用户的公钥并启用密钥登录 |
| `-u` | `-u <URL>` | 从指定 URL 下载公钥并导入 |
| `-f` | `-f <文件路径>` | 从本地文件导入公钥 |
| `-p` | `-p <端口号>` | 修改 SSH 端口为指定值(需在 1024-65535 之间) |
| `-d` | `-d` | 禁用密码登录(纯密钥模式) |
| `-o` | `-o` | **覆盖模式**(与 `-g/-u/-f` 配合使用,导入前清空已有公钥) |
### CLI 使用示例
```bash
# 从 GitHub 拉取公钥并禁用密码登录
bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh) -g "your_username" -d
# 清空原有公钥,从 GitHub 重新导入,并修改端口为 22222
bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh) -o -g "your_username" -p 22222
# 从自定义 URL 导入公钥(覆盖模式)
bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh) -o -u "https://example.com/mykey.pub"
# 仅修改 SSH 端口为 2222
bash <(curl -fsSL https://raw.githubusercontent.com/BeacherZ/key.sh/main/key.sh) -p 2222
```
---
## ⚠️ 注意事项
## 🔒 安全提示
1. **测试连接再关闭窗口**:修改 SSH 端口或禁用密码登录后,**请勿立即关闭当前 SSH 终端**。请新建一个终端窗口测试能否顺利连接新端口/密钥登录。
2. **云服务器安全组/防火墙**:脚本会自动放行本机防火墙(UFW/Firewalld),但如果使用的是阿里云、腾讯云、AWS 等云厂商 VPS,请务必前往**厂商后台的安全组/防火墙**中放行相应的新端口。
- **始终先测试再关闭会话**
修改端口或禁用密码登录后,**请勿立即关闭当前 SSH 窗口**。应新建一个终端会话,使用新端口/密钥尝试登录,确认成功后再退出旧会话,避免被锁在服务器外。
- **云服务商安全组**
脚本会自动放行系统防火墙(UFW/Firewalld),但如果您使用阿里云、腾讯云、AWS 等云厂商,还需在 **厂商控制台的安全组/防火墙** 中放行您修改后的端口。
- **私钥保护**
使用脚本生成的私钥(`PrivateKey.pem`)请务必妥善保存,切勿泄露。建议下载到本地后删除服务器上的临时副本。
---
## 🖥️ 兼容性
| 发行版 | 支持情况 |
|--------|----------|
| Debian / Ubuntu | ✅ 完美支持 |
| CentOS / RHEL / Rocky / AlmaLinux | ✅ 完美支持 |
| Alpine Linux | ✅ 完美支持(OpenRC) |
| 其他 systemd 发行版 | ✅ 基本支持 |
脚本会自动检测系统并适配相应的服务管理命令。
---
## 📥 依赖与安装
脚本会**自动安装**所需依赖(如果缺失):
- `curl`:用于网络请求
- `openssh-client` / `openssh-clients`:提供 `ssh-keygen`
- `gawk`:用于文本处理
您也可以手动安装这些工具,但脚本已内置自动安装逻辑。
---
## 🤝 贡献与反馈
欢迎提交 Issue 或 Pull Request。如果您有任何建议或发现 Bug,请通过 GitHub 仓库反馈。