证书登录带来的入口变化
启用证书登录后,只要登录者持有由受信 CA 签发的证书即可通过认证,公钥不必写进目标主机的 authorized_keys。这带来明显的运维便利:批量签发、集中吊销、按 principals 授权,也避免了逐台分发公钥。取证上必须同时看两处:sshd_config 中 TrustedUserCAKeys 指向的 CA 公钥文件是否被替换,以及认证日志中带证书标识的接受记录。只查 authorized_keys 会整类漏掉证书入口。
基本信息
| 服务端配置 | TrustedUserCAKeys、AuthorizedPrincipalsFile |
|---|---|
| 客户端用法 | ssh -i <私钥> -o CertificateFile=<证书> 用户@主机 |
| 日志特征 | Accepted publickey 记录中附带证书相关标识 |
| 查看证书 | ssh-keygen -L -f 证书文件,打印证书字段 |
典型使用场景
- 核查主机是否接受证书登录,评估登录入口的完整清单
- 确认 CA 公钥文件是否与配置管理系统登记的一致
- 从日志中挑出持证书登录的会话,区别于普通密钥登录
- 检查证书的 principals 与有效期是否被放宽
- 评估吊销某张证书后是否真的无法再登录
核查配置与证书
核查配置与证书
grep -Rn 'TrustedUserCAKeys\|AuthorizedPrincipals' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ 2>/dev/null
ssh-keygen -lf /etc/ssh/ca.pem -E sha256 2>/dev/null # CA 公钥指纹,与台账比对
ssh-keygen -L -f user-cert.pub 2>/dev/null | head -20 # 查看证书的 principals 与有效期
grep -i 'Accepted' /var/log/secure | tail -10 # 认证接受记录
stat -c '%n %y %a' /etc/ssh/ca.pem 2>/dev/null # CA 文件时间与权限证书关键字段读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| Key ID | 签发时写入的标识 | 常为账号或工单号,可用于归责 |
| Principals | 允许登录的身份列表 | 过宽的通配值等于放开全部账号 |
| Valid | 证书有效期 | 有效期过长会削弱吊销机制的作用 |
| Critical Options | 强制约束项 | 可限制来源地址与转发能力 |
CA 文件被替换意味着攻击者可以自行签发长期有效的证书登录本机,且不触碰 authorized_keys,因此把 CA 文件指纹纳入基线校验比逐个核对公钥更有效。
证书有效性与 principals 由两处配置共同决定,只检查其中一处会得出错误结论;检查顺序建议先看 CA 指纹,再看 principals 与有效期。
整改时不要直接停用证书登录,先确认现网自动化与运维脚本是否依赖证书,切换顺序出错会导致大面积登录失败。