linux ssh安全加固需围绕“身份可信、通道加密、行为可控”三层:禁用密码登录启用ed25519密钥认证;修改非标端口、限制AllowUsers及IP范围;部署Fail2ban防暴力探测;开启VERBOSE日志、配置ClientAlive超时并定期归档日志。

linux服务器通过SSH远程管理非常方便,但默认配置容易成为攻击入口。提升SSH安全不是堆砌功能,而是围绕“身份可信、通道加密、行为可控”三个核心层层加固。下面从关键配置、认证方式、访问控制到日志审计,拆解一套可落地的完整流程。
禁用密码登录,强制使用密钥认证
密码暴力破解是SSH最常见的攻击手段。关闭密码登录能直接切断这类风险。
- 编辑/etc/ssh/sshd_config,确认以下两行已设置:
PubkeyAuthentication yes
PasswordAuthentication no
- 保存后执行sudo systemctl restart sshd重启服务
- 务必先测试新密钥能否正常登录,再禁用密码——否则可能被锁在门外
- 推荐用ssh-keygen -t ed25519生成现代密钥,比RSA更轻量更安全
改默认端口 + 限制登录用户与IP范围
不暴露22端口能大幅降低自动化扫描命中率;限定谁、从哪能连,是权限最小化的基础。
- 修改Port字段(如改为2222),避免与常见服务冲突
- 用AllowUsers指定仅允许登录的账号(如AllowUsers admin@192.168.1.*)
- 配合防火墙限制源IP:sudo ufw allow from 203.0.113.44 to any port 2222
- 若用云服务器,安全组规则也要同步收紧,双层过滤更稳妥
启用Fail2ban自动封禁暴力尝试
即使关了密码登录,SSH服务仍可能被探测或误配置导致暴露。Fail2ban能实时分析日志并封禁异常IP。
- 安装:sudo apt install fail2ban(debian/ubuntu)或sudo yum install fail2ban(centos)
- 复制默认配置:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- 在jail.local中启用SSH规则,并调低触发阈值(如maxretry = 3)
- 启动服务:sudo systemctl enable –now fail2ban
开启登录日志审计与连接超时控制
安全不仅是防入侵,更是可追溯、可收敛。清晰的日志和及时的会话中断,能缩短风险窗口期。
- 确保LogLevel VERBOSE或INFO已启用,记录认证细节
- 添加会话空闲控制:ClientAliveInterval 300(每5分钟发心跳)
ClientAliveCountMax 2(连续2次无响应即断开) - 定期归档/var/log/auth.log(或/var/log/secure),配合logrotate防止日志撑爆磁盘
- 建议用journalctl -u sshd -n 50 –no-pager快速查看最近登录事件
基本上就这些。不复杂但容易忽略——比如改完端口忘了更新防火墙,或禁用密码前没验证密钥是否生效。每一步都建议“改一点、测一点”,稳扎稳打才是真安全。