在 Debian/Ubuntu 上一键锁定 SSH:新端口、禁止 root 登录、基于密钥的身份验证、可选的 UFW 和 Fail2Ban。
运行脚本时,它会检测你的操作系统,并在询问是否继续之前显示设置:

在 Debian/Ubuntu 上:
sudo apt-get install -y git
rm -rf ssh-hardening
git clone https://github.com/spookey007/ssh-hardening.git
cd ssh-hardening
随时运行此命令以获取最新脚本。
chmod +x ssh_harden.sh script.sh
如果跳过此步骤,运行 ./ssh_harden.sh 时可能会收到 "command not found" 错误。如果发生这种情况,请改用步骤 5 中的 sudo bash ssh_harden.sh。
SSH_PUB_KEY)Linux / macOS
ssh-keygen -t ed25519 -C "[email protected]"
按回车键使用默认路径(~/.ssh/id_ed25519)。可选:设置密码。
显示你的公钥(复制此内容到 SSH_PUB_KEY):
cat ~/.ssh/id_ed25519.pub
Windows(PowerShell 或 Git Bash)
ssh-keygen -t ed25519 -C "[email protected]"
按回车键使用默认路径。可选:设置密码。
显示你的公钥:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pubtype %USERPROFILE%\.ssh\id_ed25519.pub复制整行(以 ssh-ed25519 ... 开头)。这就是你的 SSH_PUB_KEY。
将值替换为你自己的,然后运行:
sudo SSH_USER=kamaileo \
SSH_PASS='YourStrongPassword123!' \
SSH_PORT=49221 \
PORTS="5060,5061,10000-20000" \
SSH_PUB_KEY="ssh-ed25519 AAAA... you@yourmachine" \
./ssh_harden.sh
如果出现 "command not found",请使用:
sudo bash ssh_harden.sh
(前面带上相同的 SSH_USER=... SSH_PASS=... 等参数)。
在新终端中,使用新端口(而非 22)连接:
ssh -p 49221 kamaileo@YOUR_SERVER_IP
使用你设置的端口和用户。仅在确认登录和 sudo 正常后才关闭原始会话。
每次都使用新端口。 强化后,SSH 不再位于端口 22。始终使用以下方式连接:
ssh -p <YOUR_PORT> <USER>@<SERVER_IP>
示例:ssh -p 49221 [email protected]
保存脚本完成时的输出。 在结束时,脚本会打印一个摘要,包含你的用户名、端口、连接命令以及是否设置了密码。复制或截图该区块,并保存在安全位置。如果你丢失了 SSH 密钥、忘记了端口或密码,该记录将帮助你恢复或重新连接(例如通过控制台/VNC 使用相同的用户名和密码)。
脚本会输出你需要的所有信息:用户名、端口、UFW/Fail2Ban 状态以及确切的 ssh -p ... 命令。无需猜测。
如果 SSH_USER 在服务器上已存在,脚本不会创建新用户,也不会更改密码。它只会:
sudo 组SSH_PUB_KEY,则更新 ~/.ssh/authorized_keys因此你可以再次运行它以“仅强化”,而无需更改现有密码。
在不受支持的操作系统上,脚本会打印 Coming soon 😊 并退出,不进行任何更改。
SSH_PUB_KEY,以便在禁用密码认证后仍能登录。ssh -p PORT user@server 成功之前,保持当前会话打开。如果这个脚本为你节省了时间或解决了问题,你可以通过一次性打赏来支持项目。
BTC: 3L1Gc4avD4Bqoi2F9aq6z4heT13fXA8DZ9
无论如何都感谢你。
| 变量 | 示例 | 作用 |
|---|
SSH_USER | kamaileo | 用户名(如果不存在则创建;如果已存在,则密码保持不变)。 |
SSH_PASS | 'YourPass123!' | 仅适用于新用户的密码。请使用强密码。 |
SSH_PORT | 49221 | SSH 端口。你将使用:ssh -p 49221 user@server。 |
PORTS | "5060,5061,10000-20000" | UFW 的额外端口(可选)。 |
SSH_PUB_KEY | "ssh-ed25519 AAAA..." | 你的公钥。强烈建议设置,以免被锁定。 |
| 操作系统 | 支持 | 已测试 | git 安装 |
|---|
| Debian 12 x64 | ✅ | ✅ | sudo apt-get install -y git |
| Debian 11/10, Ubuntu 24/22/20 | ✅ | ❌ | sudo apt-get install -y git |
| RHEL / Rocky / Alma / CentOS | ❌ | ❌ | sudo yum install -y git |
| Fedora | ❌ | ❌ | sudo dnf install -y git |
| Arch | ❌ | ❌ | sudo pacman -Syu git |
| openSUSE | ❌ | ❌ | sudo zypper install -y git |