linux ssh安全加固需综合启用现代加密算法(如curve25519、ed25519)、强制密钥认证(禁用密码登录)、限制用户/ip访问、绑定监听地址、设置登录尝试与空闲超时,并配合fail2ban防爆破。

Linux SSH 加密策略不是只改几个算法参数就能高枕无忧的事。真正有效的加固,是把强加密、身份认证、访问控制和行为防护拧成一股绳——缺一不可。光换算法不关密码登录,攻击者照样爆破;只设白名单不限制尝试次数,IP 段里一个弱口令用户就可能被撞开。
启用现代加密算法,禁用已淘汰协议
OpenSSH 8.8+ 已默认禁用 ssh-rsa 签名(SHA-1),旧版 RSA 密钥不再被信任。必须主动配置支持的密钥交换、主机密钥和加密算法,确保全程使用抗量子威胁的现代套件。
在 /etc/ssh/sshd_config 中明确设置:
-
KeyExchange:优先选用
curve25519-sha256,备选ecdh-sha2-nistp521 -
HostKeyAlgorithms:启用
ssh-ed25519和ecdsa-sha2-nistp384,禁用ssh-rsa -
Ciphers:仅保留
aes256-gcm@openssh.com、chacha20-poly1305@openssh.com -
MACs:用
hmac-sha2-512-etm@openssh.com替代传统 HMAC
修改后执行 sshd -t 校验语法,再重启服务。客户端连接时可加 -o HostKeyAlgorithms=+ssh-ed25519 强制协商新算法。
密钥认证必须配强密钥,且彻底关闭密码入口
ed25519 是当前最推荐的密钥类型:生成快、签名短、抗侧信道攻击。RSA-2048 已不建议用于新部署,RSA-4096 虽可用但效率低。
操作要点:
- 本地生成:
ssh-keygen -t ed25519 -a 100 -C "admin@prod"(-a 100提高密钥派生强度) - 上传公钥后,检查服务器端权限:
~/.ssh必须为700,authorized_keys必须为600 - 配置文件中确认两行生效:
PubkeyAuthentication yesPasswordAuthentication noPermitEmptyPasswords no
限制谁能在哪连,比改端口更关键
把 SSH 绑定到特定 IP + 端口,并配合用户/IP 白名单,是从网络层和应用层双重收敛暴露面。
- 用
ListenAddress 10.0.1.5:22222只监听内网管理地址(不写0.0.0.0) - 用
AllowUsers admin@192.168.10.* deploy@2001:db8::/64锁定可信来源 - 防火墙同步放行:
ufw allow from 192.168.10.0/24 to any port 22222 - 验证监听状态:
ss -tlnp | grep :22222,确认无意外绑定
防爆破与会话管控,补上最后一环
即使认证机制很牢,也要防止高频试探和空闲连接被利用。
-
MaxAuthTries 3:单次连接最多试 3 次,防撞库 -
LoginGraceTime 30:登录窗口压缩至 30 秒,超时即断 -
ClientAliveInterval 300与ClientAliveCountMax 2:空闲超 10 分钟自动断开 - 搭配
fail2ban监控/var/log/auth.log,对 5 分钟内失败 4 次的 IP 封禁 1 小时











