Linux SSH 密钥认证 vs 密码认证的安全强度与禁用密码登录 checklist

8次阅读

ssh密钥认证比密码认证更安全,因其基于非对称加密、无明文传输、抗暴力破解、防重放冒用且权限可追溯;禁用密码登录需完成密钥生成、部署、测试、会话保留和sudo权限确认,并配置sshd_config中passwordauthentication no等参数。

Linux SSH 密钥认证 vs 密码认证的安全强度与禁用密码登录 checklist

SSH 密钥认证在安全强度上远超密码认证,核心在于它不依赖可猜测、可重放、可截获的静态凭证,而是基于非对称加密的数学保障。禁用密码登录不是“锦上添花”,而是堵住暴力破解、撞库、弱口令、中间人窃听等最常见攻击路径的必要操作。

密钥认证为什么更安全

无明文传输:登录过程不发送密码,私钥始终留在本地,仅通过签名验证身份,避免网络嗅探风险。
抗暴力破解:ED25519 或 4096 位 RSA 密钥的破解成本远超现实算力,而常见密码组合可在数分钟内被自动化脚本穷举。
防重放与冒用:每次连接使用一次性挑战响应,即使流量被截获也无法复用;而密码一旦泄露,即可无限次直接登录。
权限可追溯:每个密钥可绑定唯一标识(如 -C "alice@team.com"),配合 authorized_keys 中的 from= 限制或命令审计,能精准定位操作人和来源 IP。

禁用密码登录前必须完成的 checklist

已生成高强度密钥对:推荐 ssh-keygen -t ed25519 -a 200 -C "user@domain",私钥加 Passphrase 保护。
公钥已正确部署:通过 ssh-copy-id 或手动追加至目标用户 ~/.ssh/authorized_keys,且该文件权限为 600,目录为 700
密钥登录已实测成功:在新终端中执行 ssh -i ~/.ssh/id_ed25519 user@host,全程无需输服务器密码。
保留至少一个可用会话:禁用操作期间不关闭当前已登录的 SSH 窗口,以便配置出错时快速回滚。
确认普通用户具备 sudo 权限:禁用 PermitRootLogin yes 后,确保运维账户可通过 sudo 执行管理操作。

禁用密码登录的关键配置项

编辑 /etc/ssh/sshd_config,确保以下参数明确设置为:
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
UsePAM no(避免 PAM 模块绕过密钥限制)
修改后运行 sudo systemctl restart sshd 生效,并立即在新终端验证是否仍可密钥登录。

后续加固建议

限制密钥使用范围:在 authorized_keys 中为每行公钥添加选项,例如:
from="10.10.1.0/24",no-port-forwarding,command="/bin/bash" ssh-ed25519 AAAA... user@host
定期轮换密钥:企业环境中建议每 6–12 个月更新一次密钥对,离职人员密钥须即时从所有服务器删除。
私钥本地防护:禁止上传至 git、网盘、邮件;linux/macos 下设为 chmod 600 ~/.ssh/id_*windows 用户推荐使用 OpenSSH for Windows 或 PuTTY + Pageant 配合硬件密钥(如 YubiKey)。

text=ZqhQzanResources