Ubuntu 24.04 新服务器用户与 SSH 安全配置流程
适用场景:新购 Ubuntu 云服务器,初始使用
root登录,希望新增普通管理员用户ahui,保留“用户名 + 密码”登录方式,将 SSH 端口从 22 修改为自定义端口,并配置基础防爆破措施。
一、最终配置目标
本次最终配置如下:
系统:Ubuntu 24.04.4 LTS
普通用户:ahui
家目录:/home/ahui
sudo 权限:已启用
SSH 端口:22222
SSH 密码登录:允许
root 直接 SSH 登录:禁止
Fail2ban:已启用
Fail2ban 规则:10 分钟内失败 5 次,封禁 1 小时
UFW:未启用
云平台安全组:开放 TCP 22222,关闭 TCP 22最终登录方式:
MobaXterm / SSH 客户端
↓
服务器IP:22222
↓
ahui + 密码
↓
sudo
↓
root 权限二、创建 ahui 用户
新服务器最初使用 root 登录:
whoami
id确认:
root
uid=0(root) gid=0(root) groups=0(root)创建新用户:
adduser ahui按照提示设置密码。
其他信息例如:
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:可以直接回车跳过。
最后确认:
Is the information correct? [Y/n]输入:
Y检查用户:
id ahui实际结果:
uid=1003(ahui) gid=1003(ahui) groups=1003(ahui),100(users)检查家目录:
ls -ld /home/ahui实际结果:
drwxr-x--- 2 ahui ahui ... /home/ahui三、授予 ahui sudo 权限
使用 root 执行:
usermod -aG sudo ahui确认用户组:
groups ahui结果:
ahui : ahui sudo users切换到 ahui:
su - ahui确认:
whoami
pwd
groups预期:
ahui
/home/ahui
ahui sudo users测试 sudo:
sudo whoami输入 ahui 的密码后应输出:
root至此,ahui 已成为可以使用 sudo 的普通管理员用户。
四、确认 SSH 当前配置
检查 SSH 关键配置:
grep -R -E '^[[:space:]]*(PasswordAuthentication|PubkeyAuthentication|PermitRootLogin)' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ 2>/dev/null当时服务器配置为:
/etc/ssh/sshd_config:PermitRootLogin yes
/etc/ssh/sshd_config:PasswordAuthentication yes
/etc/ssh/sshd_config.d/50-cloud-init.conf:PasswordAuthentication yes说明:
root + 密码登录:允许
普通用户 + 密码登录:允许由于本次希望保留“用户名 + 密码”登录,因此不配置 SSH 私钥。
五、测试 ahui 密码 SSH 登录
在 MobaXterm 新建 SSH Session:
Remote host:服务器公网 IP
Username:ahui
Port:22(修改端口前)成功登录后测试:
whoami
pwd
sudo whoami输出:
ahui
/home/ahui
root说明普通用户 SSH 登录和 sudo 均正常。
重要:在完成后续 SSH 修改并验证之前,不要关闭已有的 SSH 会话,防止配置错误导致自己无法再次登录服务器。
六、修改 SSH 端口为 22222
1. 云平台安全组先开放新端口
修改服务器 SSH 配置之前,先在腾讯云安全组增加:
协议:TCP
端口:22222
来源:0.0.0.0/0此时先同时保留:
TCP 22
TCP 22222不要提前删除 22。
2. 修改 sshd_config
执行:
sudo nano /etc/ssh/sshd_config找到:
#Port 22修改为:
Port 22222如果文件中没有明确的 Port 配置,也可以在文件末尾增加:
Port 22222保存:
Ctrl + O
Enter
Ctrl + X3. 检查 SSH 配置语法
执行:
sudo sshd -t如果没有任何输出,说明语法正常。
检查实际解析结果:
sudo sshd -T | grep '^port'结果:
port 22222七、Ubuntu 24.04 的 ssh.socket 问题
这是本次配置中非常重要的一点。
最初修改 Port 22222 后,仅执行:
sudo systemctl restart ssh查看状态发现:
TriggeredBy: ● ssh.socket
Server listening on 0.0.0.0 port 22
Server listening on :: port 22以及:
sudo ss -lntp | grep ssh仍然看到:
0.0.0.0:22
[::]:22原因:Ubuntu 24.04 使用了 systemd 的 ssh.socket socket activation,实际监听端口可能由 ssh.socket 管理。
因此修改 SSH 端口后还需要:
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket检查:
sudo systemctl status ssh.socket --no-pager正确结果:
Listen: 0.0.0.0:22222 (Stream)
[::]:22222 (Stream)再次确认:
sudo ss -lntp | grep -E ':22|:22222'正确结果类似:
LISTEN ... 0.0.0.0:22222 ...
LISTEN ... [::]:22222 ...此时不应再看到公网 22 端口监听。
八、验证新的 SSH 端口
不要关闭旧 SSH 会话。
新建一个 MobaXterm 会话:
Remote host:服务器公网 IP
Username:ahui
Port:22222或命令行:
ssh -p 22222 ahui@服务器公网IP确认可以通过密码成功登录。
登录后:
whoami
sudo whoami应输出:
ahui
root确认 22222 登录正常后,云平台安全组中的 TCP 22 可以关闭或删除。
九、禁止 root 直接 SSH 登录
保留:
PasswordAuthentication yes修改:
PermitRootLogin yes为:
PermitRootLogin no最终 /etc/ssh/sshd_config 中的关键设置:
Port 22222
PermitRootLogin no
PasswordAuthentication yes检查实际生效配置:
sudo sshd -T | grep -E '^(port|permitrootlogin|passwordauthentication)'实际结果:
port 22222
permitrootlogin no
passwordauthentication yes含义:
ahui + 密码 + 22222 → 允许
root + 密码 + 22222 → 禁止需要 root 权限时使用:
sudo <命令>或者:
sudo -i十、安装 Fail2ban 防止 SSH 密码爆破
因为仍然保留密码登录,所以安装 Fail2ban。
更新软件源:
sudo apt update安装:
sudo apt install fail2ban -y启用并立即启动:
sudo systemctl enable --now fail2ban检查状态:
sudo systemctl status fail2ban --no-pager确认:
Active: active (running)十一、配置 SSH Fail2ban 规则
不要直接修改 /etc/fail2ban/jail.conf,新建本地配置:
sudo nano /etc/fail2ban/jail.d/sshd.local写入:
[sshd]
enabled = true
port = 22222
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h含义:
10 分钟内 SSH 登录失败 5 次
↓
封禁该 IP 1 小时保存后重启:
sudo systemctl restart fail2ban检查:
sudo fail2ban-client status实际结果:
Number of jail: 1
Jail list: sshd查看 SSH jail:
sudo fail2ban-client status sshd正常会显示:
Currently failed
Total failed
Currently banned
Total banned
Banned IP list十二、确认 Fail2ban 参数
查看配置文件:
sudo cat /etc/fail2ban/jail.d/sshd.local结果:
[sshd]
enabled = true
port = 22222
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h检查最大失败次数:
sudo fail2ban-client get sshd maxretry结果:
5检查统计时间:
sudo fail2ban-client get sshd findtime结果:
600即 600 秒 = 10 分钟。
检查封禁时间:
sudo fail2ban-client get sshd bantime结果:
3600即 3600 秒 = 1 小时。
注意:Fail2ban 1.0.2 中以下命令不可用:
sudo fail2ban-client get sshd port会提示:
Invalid command (no get action or not yet implemented)这不是配置错误。端口可以直接通过
/etc/fail2ban/jail.d/sshd.local确认。
十三、检查 Ubuntu 防火墙
查看 UFW:
sudo ufw status verbose实际状态:
Status: inactive本次没有启用 UFW。
原因:服务器后续还需要部署 Docker / RustDesk,Docker 会操作 iptables/nftables。当前使用腾讯云安全组作为外围防火墙,可以减少 UFW 与 Docker 网络规则混合后的排查复杂度。
十四、检查服务器监听端口
执行:
sudo ss -lntup当时公网监听只有:
0.0.0.0:22222
[::]:22222即 SSH。
其他看到的端口例如:
127.0.0.53:53
127.0.0.54:53
127.0.0.1:323
127.0.0.1:6010
127.0.0.1:6011
127.0.0.1:6012均不是公网监听。
说明:
127.0.0.53/54:53:systemd-resolved 本地 DNS。127.0.0.1:323:chronyd 时间同步。6010/6011/6012:MobaXterm 开启 X11 Forwarding 后 SSH 创建的本地转发端口。
如果不使用 Linux 图形程序,可以在 MobaXterm Session 设置里关闭 X11 Forwarding。
十五、腾讯云安全组最终建议
在只部署 SSH 的阶段,公网入站规则建议只保留:
TCP 22222删除原来的:
TCP 22后续部署 Docker / RustDesk 时,再根据需要逐个开放对应端口,不建议提前把大量端口全部暴露到公网。
十六、常用检查命令汇总
当前用户
whoami
idahui 用户
id ahui
groups ahuisudo 测试
sudo whoamiSSH 实际配置
sudo sshd -T | grep -E '^(port|permitrootlogin|passwordauthentication)'当前预期:
port 22222
permitrootlogin no
passwordauthentication yesSSH 服务
sudo systemctl status ssh --no-pagerUbuntu 24.04 SSH socket
sudo systemctl status ssh.socket --no-pager当前 SSH 监听端口
sudo ss -lntp | grep ssh或:
sudo ss -lntp | grep -E ':22|:22222'Fail2ban 服务
sudo systemctl status fail2ban --no-pagerFail2ban jail
sudo fail2ban-client status
sudo fail2ban-client status sshdFail2ban 参数
sudo fail2ban-client get sshd maxretry
sudo fail2ban-client get sshd findtime
sudo fail2ban-client get sshd bantime当前所有网络监听端口
sudo ss -lntupUFW 状态
sudo ufw status verbose十七、以后新服务器可以直接按照这个顺序操作
推荐顺序:
1. root 登录新服务器
↓
2. adduser ahui
↓
3. usermod -aG sudo ahui
↓
4. 测试 ahui + sudo
↓
5. 测试 ahui 密码 SSH 登录
↓
6. 云安全组先开放 TCP 22222
↓
7. 修改 SSH Port 22222
↓
8. sshd -t 检查配置
↓
9. systemctl daemon-reload
↓
10. restart ssh.socket
↓
11. 新会话验证 22222 登录
↓
12. PermitRootLogin no
↓
13. 保留 PasswordAuthentication yes
↓
14. 删除云安全组 TCP 22
↓
15. 安装 Fail2ban
↓
16. 配置 sshd jail
↓
17. 检查公网监听端口十八、最终状态确认
本次配置完成后的服务器状态:
Ubuntu 24.04.4 LTS
用户:
ahui 正常
/home/ahui 正常
sudo 正常
SSH:
22222/TCP 正常
用户名 + 密码 正常
root SSH 已禁止
PasswordAuthentication yes
PermitRootLogin no
Fail2ban:
服务 active
sshd jail active
maxretry 5
findtime 600 秒
bantime 3600 秒
防火墙:
UFW inactive
腾讯云安全组 负责公网端口控制
公网监听:
SSH 22222 正常
其他异常公网监听 未发现至此,新服务器的用户创建与 SSH 基础安全配置完成。
Ubuntu 24.04 新服务器用户与 SSH 安全配置流程
https://blog.xuehui.chat/archives/20260807