Linux SSH安全提升核心是控制“谁、从哪、用什么”三要素:禁用密码登录、强制密钥认证(推荐ed25519),限制AllowUsers与IP白名单,改端口、禁root、启Fail2ban,并注意配置重载与权限设置。

Linux SSH 安全提升,核心不在堆配置,而在控制“谁、从哪、用什么”连进来——即身份认证、访问来源和密钥管理三要素。只要把住这三关,90% 的暴力破解和未授权访问就能拦在门外。
禁用密码登录,强制使用密钥对认证
密码登录是暴力破解的主入口,尤其当 root 或弱口令存在时风险极高。SSH 密钥(如 ed25519)强度远超人工密码,且可配合 passphrase 实现双因子效果。
- 生成密钥对建议用:ssh-keygen -t ed25519 -C "your_email@example.com"(比 rsa 更快更安全)
- 服务端只保留公钥到 ~/.ssh/authorized_keys,权限设为 600
- 修改 /etc/ssh/sshd_config:设置 PasswordAuthentication no 和 PubkeyAuthentication yes,然后重启 sshd
限制登录用户与来源 IP
不是所有用户都需要 SSH 权限,也不是所有网络都该被放行。最小权限 + 网络白名单,是最直接有效的收敛手段。
- 用 AllowUsers 明确指定可登录账户,例如:AllowUsers deploy@192.168.1.* alice@203.0.113.5
- 搭配防火墙(如 ufw 或 firewalld)封掉非必要端口和地域 IP 段,例如只允许公司出口 IP 访问 22 端口
- 避免使用 DenyUsers 或黑名单思维——漏一个就可能被利用
降低攻击面:改端口 + 禁 root + 启用 Fail2ban
虽然改端口不能防专业扫描,但能大幅减少自动化脚本的无效请求;禁 root 则消除最高权限的直连入口;Fail2ban 是应对试探性爆破的实时响应层。
- 修改 Port 值(如改为 2222),并同步更新防火墙规则和客户端配置
- 设置 PermitRootLogin no,普通用户登录后用 sudo 执行特权操作
- 安装 Fail2ban 后启用 sshd 过滤器,自动封禁 5 分钟内失败 3 次的 IP(默认策略已够用)
基本上就这些。不复杂,但容易忽略细节——比如改完配置忘了重载服务,或密钥权限没设对导致登录失败。动手前备份 sshd_config,开一个备用会话验证再退出,稳一点。










