Linux SSH安全加固需系统性实施:禁用密码登录并启用ed25519密钥认证;禁止root直连,限制AllowUsers/AllowGroups;修改SSH端口并部署fail2ban;调高LogLevel、设置ClientAlive超时;每步须测试验证。

Linux SSH 安全提升不是靠一两个命令就能搞定的,关键在于系统性加固:从基础配置收紧、身份认证升级,到访问控制细化和日志审计闭环。下面按实际操作顺序拆解,每一步都直击常见风险点。
禁用密码登录,强制使用密钥认证
密码登录是暴力破解的首要入口。启用密钥认证后,攻击者即使猜中用户名也难突破。
- 在客户端生成密钥对:ssh-keygen -t ed25519 -C "your_email@example.com"(推荐 ed25519,更安全高效)
- 将公钥复制到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
- 编辑 /etc/ssh/sshd_config,确认以下两项已设置:
PubkeyAuthentication yes
PasswordAuthentication no
- 重启服务前务必测试新密钥能否正常登录,再 reload:sudo systemctl reload sshd
限制用户与登录方式,缩小攻击面
默认允许 root 登录、开放所有用户访问,等于给攻击者递钥匙。
- 禁止 root 直接 SSH 登录:PermitRootLogin no
- 只允许特定用户或用户组登录:
AllowUsers alice bob 或
AllowGroups ssh-users(记得先将用户加入该组)
- 如需临时提权,统一走 sudo,而非开放 root 密码或密钥
- 非必要不开启 X11Forwarding 和 AllowTcpForwarding
改端口 + fail2ban 实时封禁暴力尝试
虽然“隐蔽端口”不是银弹,但配合 fail2ban 能显著降低自动化扫描干扰和有效攻击成功率。
- 修改 /etc/ssh/sshd_config 中的 Port(例如改为 2222),同时确保防火墙放行新端口
- 安装并启用 fail2ban:sudo apt install fail2ban(Debian/Ubuntu)或 sudo yum install fail2ban(CentOS/RHEL)
- 启用 SSH 监控规则(默认已包含),检查 /etc/fail2ban/jail.local 是否有:
[sshd]
enabled = true
- 查看封禁状态:sudo fail2ban-client status sshd
开启登录日志审计与连接超时防护
出问题时,清晰的日志和自动断连机制能帮你快速定位异常、减少会话残留风险。
- 确保日志级别足够:LogLevel VERBOSE(记录密钥指纹、登录来源等关键信息)
- 设置空闲超时,避免终端长时间挂起:
ClientAliveInterval 300(每 5 分钟发一次心跳)
ClientAliveCountMax 2(两次失败即断开)
- 日志集中管理建议搭配 rsyslog 或 journalctl -u ssh 定期归档分析
- 敏感操作后可手动执行 sudo journalctl --rotate && sudo journalctl --vacuum-time=7d 清理旧日志
基本上就这些。不复杂但容易忽略——比如改完配置忘了 reload,或关了密码登录却没验证密钥是否真能用。每步做完都建议开一个新终端测试,确认无误再关闭当前会话。安全不是加锁,而是让攻击路径变长、成本变高、痕迹变明显。
以上就是LinuxSSH安全怎么提升_完整流程拆解让问题迎刃而解【技巧】的详细内容,更多请关注php中文网其它相关文章!