背景
之前站长的甲骨文云在重置ubuntu24.04系统后什么都没安装,直接安装了面板。现在我学习了一些关于SSH加固的基础知识并进行了多次的验证,现将SSH的加固思路和实操总结如下,为啥要强调顺序?因为顺序不对容易把自己锁SSH外面,需要重新安装系统,站长都被锁外面好几回了。实操安装脚本在文章最后—点击直达
一.SSH是什么?
SSH(Secure Shell,安全外壳协议)是一种加密的网络传输协议,用于在不安全的网络中为计算机之间提供安全的远程登录和数据传输服务。我们使用的主要作用是:1.远程登录:在本地终端输入命令行,直接操作远程服务器。2.建立加密通道,安全转发其他网络流量。之前讨论过VPS是一台我们摸不到的服务器,但是我们可以通过自己的电脑远程操控它,让它为为我们服务。
二.为什么我们要做SSH加固?
站长在之前说早在2017年站长就接云服务器了,当时在上面部署了公司的ERP,但是总是有各种各样的安全问题,还被勒索。现在想想其实主要是自己不懂服务器的安全设置。未经安全保护设置的VPS在互联网上会被各种扫描,那就是肉鸡,随时会有被攻击的风险!如果这台VPS服务器你是用来为公司或者个人的核心业务服务的,那么安全问题就得尤其重视了,不仅要重视服务器的安全,也要及时备份核心数据!
三.SSH工具的使用
通常我们可以直接使用Windows系统自带的Powshell

和mac系统中的终端

来连接上自己万里之外的VPS服务器,进行设置。但是站长实际操作后,发现电脑内置的SSH终端并不是特别顺手,发现了专门的SSH工具,搜了一圈发现一些专业的SSH都收费,然后我看到一个开源(免费)的SSH工具Tabby就立刻开始使用了,果然比电脑自带的终端和powershell好用多了。如果你也想试试,请到他们的官网下载Tabby 跟着步骤设置就好了。想看站长是怎么设置Tabby的?请看这篇文章:开源SSH工具(免费)Tabby的实操步骤
四.SSH常规加固思路说明
禁用密码登录和root登录
root权限是你系统的最高权限,有的VPS服务器登录后直接就是root权限,有的是普通权限。如果你还不了解权限,那么请看下这篇文章里面的介绍. 如果发现你是root用户,那么就创建一个普通用户并记住密码。禁用root权限后,就是多了一层保护。
修改服务器默认端口
VPS服务器的默认端口是Port 22, 也就是说这个是最常规的锁,大家手上有钥匙的都想试试能不能打开。我看了很多教程都说可以改成port 2222,站长实际操作的时候发现改成2222端口后登录日志上还有有很多人在尝试登录,下图是站长的SSH登录日志,看的是触目惊心!得改一个自己喜欢的四位数端口。

开启系统自动安全更新
系统自动进行安全更新可以有效的对安全性漏洞修补、功能性缺陷修复和性能优化提升。让我们的系统更加稳定和安全。
安装防火墙并放行必要端口
安装防火墙ufw,然后放行你的SSH和需要使用的端口,如果你的VPS有云安全组,记得也要同步设置放行。这样一来咱们的服务器就安全多了。接下来我们来具体操作。
记住:如果你的VPS有云安全组,修改22端口前请一定要在云安全组里面放行你要设置的端口。不然改了以后你就锁外面了
有兴趣的可以看Ubuntu官方博客的建议:Security checklist: hardening SSH
安装 Fail2ban防暴力破解
Fail2ban 是一款开源的入侵防御软件,能够监控系统日志并自动封禁发起暴力破解攻击的恶意 IP 地址,比如可以设置一个IP登录尝试超过几次就封禁。
五.具体的SSH加固流程步骤
用户权限设置
下面的流程都是默认按照普通用户来操作的,怎么设置普通用户请看这篇怎么设置普通用户。ubuntu系统创建普通用户权限
1.更新系统和软件
sudo apt update && sudo apt upgrade -y
2.安装 nano
sudo apt install -y nano
3.打开Nano中设置
网上有很多教程都是说在SSH工具中输入: sudo nano /etc/ssh/sshd_config 让你在如下画面中修改默认端口22(站长之前修改的2222)其实这个是没用的

请注意这里是个坑!站长安装的是ubuntu24.04,在如图所示的这边修改port 22是不起作用的!我查看了ubuntu官方社区,Ubuntu 22.10版本以后的都不适用上面的这种操作方式了!(链接就是官方社区,感兴趣的朋友可以仔细研究一下)
SSHd now uses socket-based activation (Ubuntu 22.10 and later)
如果你对新的SSH方式不熟悉,或者想进行实操练习,站长在2026-09-23日更新了文章:新Ubuntu系统恢复到传统SSH方式的安全设置,也有带一键设置脚本。
实操脚本
操作流程我做成了一键设置脚本:端口号可以根据需求自行设置,脚本中默认的是6666,先复制如下脚本然后打开SSH工具,粘贴按回车就好了
注意: 必须要在root权限下执行哦!
#!/bin/bash
# 确保脚本以 root 权限运行
if [ "$EUID" -ne 0 ]; then
echo "请使用 root 或 sudo 权限运行此脚本"
exit 1
fi
NEW_PORT=6666
echo "1. 配置 systemd ssh.socket 监听端口为 $NEW_PORT..."
mkdir -p /etc/systemd/system/ssh.socket.d
cat > /etc/systemd/system/ssh.socket.d/listen.conf <<EOF
[Socket]
ListenStream=
ListenStream=${NEW_PORT}
EOF
echo "2. 配置 SSH 安全策略(禁用 root 登录,禁用密码登录)..."
# 使用 drop-in 目录避免修改主配置文件,更利于后期维护
cat > /etc/ssh/sshd_config.d/99-custom-security.conf <<EOF
PermitRootLogin no
PasswordAuthentication no
EOF
echo "3. 检查并安装 UFW 防火墙..."
if ! command -v ufw >/dev/null 2>&1; then
apt-get update
apt-get install -y ufw
fi
echo "4. 配置 UFW 放行新端口..."
ufw allow ${NEW_PORT}/tcp
# 如果 UFW 未激活,则强制激活它
ufw --force enable
echo "5. 重载 systemd 并重启 SSH Socket..."
systemctl daemon-reload
systemctl restart ssh.socket
echo "=================================================="
echo "配置完成!系统现在通过 SSH Socket 监听端口 $NEW_PORT。"
echo "⚠️ 请暂时不要关闭当前的 SSH 终端连接!"
echo "请新开一个终端窗口,使用密钥测试连接:"
echo "ssh -p $NEW_PORT 用户名@服务器IP"
echo "=================================================="然后我们再来安装并设置Fail2ban,我也是做成了安装设置的脚本:
#!/bin/bash
# 确保脚本以 root 权限运行
if [ "$EUID" -ne 0 ]; then
echo "请使用 sudo 或 root 权限运行此脚本"
exit 1
fi
echo "1. 正在安装 Fail2ban..."
apt-get update
apt-get install -y fail2ban
echo "2. 配置 SSH 防御策略..."
# 在 jail.d 目录下创建独立配置文件,避免覆盖后续系统更新
cat > /etc/fail2ban/jail.d/sshd-custom.local <<EOF
[sshd]
enabled = true
port = 6666
# Ubuntu 24.04 全面拥抱 systemd,直接读取 journal 日志比传统的 auth.log 更可靠
backend = systemd
maxretry = 5
bantime = 36000
# findtime = 600 表示在 10 分钟内失败 5 次即触发封禁,可根据需要调整
findtime = 600
# 与已安装的 UFW 联动,通过 UFW 规则执行封锁
banaction = ufw
EOF
echo "3. 重启并激活 Fail2ban 服务..."
systemctl enable fail2ban
systemctl restart fail2ban
echo "4. 检查当前封禁状态..."
sleep 2
fail2ban-client status sshd
echo "=================================================="
echo "✅ Fail2ban 配置完成并已启动!"
echo "监控端口: 6666"
echo "触发条件: 10 分钟内失败 5 次"
echo "封禁时长: 36000 秒 (10 小时)"
echo "封锁方式: UFW 防火墙拦截"
echo "=================================================="这样一来,咱们的系统就足够的安全了,然后你就可以安装面板了,记住安装面板要记得防火墙放行哦,如果云服务商还有安全组,也要在安全组放行。这篇文章中有提到,不知道的朋友可以看下:新的VPS服务器拿到手要怎么做?
