Linux SSH 安全提升关键在于理清逻辑、避开高频误区:先备份配置,用 sshd - t 验证语法,新开终端再重启;禁用密码登录前须配好公钥;AllowUsers 写法禁用逗号;启用超时与 Protocol 2 等防护设置。

Linux SSH 安全提升不靠堆配置,而在于理清逻辑、避开几个高频误区。很多新手改完就登不上、重启后失效、或以为“改了 端口 就安全了”,其实关键在顺序和依赖关系。
别跳过备份和验证环节
每次修改 /etc/ssh/sshd_config 前,先备份:
- sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- 改完配置后,必须运行 sudo sshd -t 检查语法是否正确——返回“syntax ok”才能继续
- 重启服务前,建议新开一个终端保持当前连接(避免改错被踢出),再执行:sudo systemctl restart sshd
常见坑:直接改完就 reboot,或没验证就重启,结果 sshd 启动失败,只能进单用户模式修复。
禁用密码登录 ≠ 立刻关掉 PasswordAuthentication
公钥没配好就关密码,等于自锁大门。务必按顺序操作:
- 本地生成密钥:ssh-keygen -t ed25519(比 rsa 更现代)
- 上传公钥到服务器:ssh-copy-id -p [新端口] user@server(注意指定端口)
- 手动登录一次验证密钥可用,再编辑 配置文件,把 PasswordAuthentication yes 改为 no
- 同时确保 PubkeyAuthentication yes 已启用且未被注释
误区:有人复制网上配置一通粘贴,却忘了自己没生成密钥,或没传公钥,重启后彻底失联。
限制用户比改端口更有效,但写法很关键
只允许特定用户登录,比单纯换端口更能降低风险。但 AllowUsers 的写法容易出错:
- 正确示例:AllowUsers alice bob@192.168.1.0/24(bob 只能从内网登录)
- 错误写法:AllowUsers alice, bob(逗号会导致整行失效,sshd 启动失败)
- 若已有用户用 root 登录过,记得先创建普通用户并加到 sudo 组:useradd -m -s /bin/bash deploy && usermod -aG sudo deploy
注意:AllowUsers 和 DenyUsers 不能共存;一旦启用 AllowUsers,所有未列出的用户(包括 root)默认拒绝。
超时与协议设置常被忽略,但影响真实防护力
空闲连接和老旧协议是隐形漏洞:
- LoginGraceTime 60:限制登录尝试窗口为 60 秒,防慢速暴力破解
- ClientAliveInterval 300 和 ClientAliveCountMax 2:5 分钟无响应发一次心跳,连续 2 次失败即断开,等效 10 分钟自动下线
- Protocol 2:确认该行未被注释,且值为 2(不是 2,1 或 1,2)
- PermitEmptyPasswords no 和 PermitRootLogin no 必须显式设为 no,不能只靠默认值
基本上就这些。真正安全的 SSH 不是功能越多越好,而是每一步都可验证、有回退、不依赖运气。






























