linux ssh服务加固需禁用密码登录、启用密钥认证(ed25519)、限制用户/ip、禁止root直连、调整超时与重试策略、修改端口、开启日志审计并定期分析。

Linux SSH 服务是远程管理的核心通道,但默认配置存在明显安全隐患。加固 SSH 不需要复杂工具,关键是关闭高风险选项、限制访问行为、启用强认证机制。
禁用密码登录,强制使用密钥认证
密码登录易受暴力破解和字典攻击,密钥认证更安全可靠。操作前务必确保已成功配置并测试过密钥登录,避免锁死自己。
- 在 /etc/ssh/sshd_config 中设置:
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no - 生成密钥对建议使用 ed25519 算法:
ssh-keygen -t ed25519 -C "admin@server" - 公钥上传到目标用户 ~/.ssh/authorized_keys,权限设为 600
限制登录用户与来源 IP
缩小攻击面最直接的方式是控制谁能连、从哪连。
- 只允许特定用户或用户组登录:
AllowUsers deploy admin
AllowGroups ssh-users - 如环境固定,可限制来源网段:
AllowUsers admin@192.168.10.*
或配合防火墙(如 ufw / iptables)做更精细的 IP 白名单 - 禁止 root 直接登录:
PermitRootLogin no(必须启用,而非 prohibit-password)
调整连接与超时策略
减少空闲会话暴露时间,抑制扫描和暴力尝试节奏。
- 缩短无操作断连时间:
ClientAliveInterval 300(每 5 分钟发一次心跳)
ClientAliveCountMax 2(两次失败即断开,总空闲上限约 10 分钟) - 限制登录尝试频率:
使用 fail2ban 监控 /var/log/auth.log,自动封禁多次失败的 IP - 修改默认端口(非必需但有混淆效果):
Port 2222,同时更新防火墙放行新端口
启用日志审计与定期检查
安全不是一劳永逸,持续观察异常行为才能及时响应。
- 确保 SSH 日志开启且不被覆盖:
SyslogFacility AUTH
LogLevel INFO(或 VERBOSE 获取更多细节) - 定期查看登录记录:
last -a查最近登录grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr快速识别高频攻击源 - 配置 logrotate 合理轮转日志,保留至少 30 天历史










