密钥认证安全性全面优于密码认证,因其依赖非对称加密数学难题而非字符猜测,私钥不传输、每次签名唯一、公钥可公开,而密码易被爆破、窃取、复用;需禁用密码登录并严格配置SSH参数。

密钥认证在安全性上全面优于密码认证,这不是权衡取舍,而是明确的技术代差。
密钥认证为什么更难被攻破
它不靠“猜对一串字符”,而是依赖非对称加密的数学难题。比如 ED25519 密钥,其安全性相当于 256 位对称密钥,暴力穷举所需算力远超当前人类技术极限。而密码哪怕设成 16 位大小写+符号组合,实际熵值通常不足 80 位,自动化工具几分钟就能跑完常见字典加变形组合。
- 私钥永不离开本地设备,登录过程不传输任何敏感凭据
- 每次连接都基于服务器发出的随机挑战生成唯一签名,截获一次流量也无法复用
- 公钥可自由分发,泄露不影响安全;而密码一旦被嗅探或撞库,账户即失守
密码认证的典型风险点
它把安全寄托在“人记住了什么”和“网络没被监听”两个脆弱环节上。现实中,70% 以上的 SSH 入侵始于密码爆破——攻击者用僵尸网络持续扫段、试常用账号(如 root、admin)、填弱口令表(123456、password、admin123),成功率远高于想象。
- 中间人攻击下,明文密码可能被劫持(即使走加密通道,若服务端证书不可信,仍存风险)
- 键盘记录、剪贴板窃取、钓鱼终端等手段可直接捕获密码输入行为
- 同一密码复用多个系统时,一处泄露即全局沦陷
密钥认证不是更麻烦,而是更可控
初期需生成密钥、部署公钥、验证登录,但完成后所有后续连接都免输密码,且每把密钥可绑定具体用途:比如给运维机配一个带 from="10.10.1.0/24" 限制的密钥,给 CI 系统配一个只允许执行特定命令的密钥。这种细粒度控制是密码做不到的。
- 私钥加 Passphrase 后,相当于“密码+密钥”双重保护,丢失设备也不等于失守
- authorized_keys 文件支持 per-key 选项:禁端口转发、限定源 IP、固定执行命令,权限收束清晰
- 审计日志里能直接看到是哪个密钥(-C 注释字段)在什么时间、从哪台设备发起的操作
禁用密码登录的关键动作
光配好密钥还不够,必须关掉密码入口,否则攻击面仍在。核心配置项要逐项确认:
- PasswordAuthentication no
- ChallengeResponseAuthentication no
- PubkeyAuthentication yes
- PermitRootLogin no(强制普通用户 sudo)
- UsePAM no(防止 PAM 模块绕过密钥校验)
改完配置后 systemctl restart sshd,并立刻用新终端测试密钥登录是否有效——别关掉当前会话,留作回滚通道。

















