linux ssh安全提升核心是控制“谁、在什么条件下、能做什么”,通过身份认证加固(密钥登录替代密码)、访问入口收敛(限制用户/IP/监听地址)、操作行为约束(禁用root、限登录次数与超时)三道防线实现。

Linux SSH 安全提升,核心不是堆砌配置,而是控制“谁、在什么条件下、能做什么”。关键在三道防线:身份认证加固、访问入口收敛、操作行为约束。
用密钥替代密码登录
密码易被暴力破解或重放,密钥对(尤其是带密码的私钥)大幅提高门槛。生成时用 ssh-keygen -t ed25519 -C “your_email@example.com”,优先选 ed25519 算法;公钥复制到服务器 ~/.ssh/authorized_keys 后,务必在 /etc/ssh/sshd_config 中设为:
限制登录来源与用户范围
不给攻击面留“敞开的门”。通过 sshd_config 直接控制比防火墙更前置:
- AllowUsers user1@192.168.1.* user2@10.0.0.5 —— 只允特定用户从指定IP段登录
- DenyUsers root guest —— 明确禁止高危账户
- ListenAddress 192.168.1.100 —— 若仅内网管理,绑定内网IP,不监听公网
配合 ufw 或 iptables 限速(如每分钟最多3次新连接)效果更稳。
禁用高危默认配置
很多风险来自未修改的出厂设置:
- PermitRootLogin no —— 根用户禁止SSH直接登录(必须用普通用户+sudo)
- MaxAuthTries 3 —— 登录失败3次即断连,防爆破
- LoginGraceTime 60 —— 登录窗口压缩至60秒,减少空闲试探
- ClientAliveInterval 300 和 ClientAliveCountMax 2 —— 5分钟无响应自动断开,防会话劫持残留
启用日志审计与异常监控
安全不是“防住就完事”,而是“出事能追溯、异常早发现”:
- 确保 LogLevel VERBOSE 或 INFO,记录登录用户、IP、密钥指纹、时间
- 日志路径通常为 /var/log/auth.log(debian/ubuntu)或 /var/log/secure(RHEL/centos)
- 用 grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -nr 快速查高频攻击IP
- 搭配 fail2ban 自动封禁反复失败的IP,简单有效
基本上就这些。不复杂但容易忽略——重点不在功能多,而在每项配置是否真正生效、是否定期复查。改完记得 sudo systemctl restart sshd,并用新终端测试,别把自己锁在外面。