首页/安全/安全加固速查/SSH CA 集中签发与 Principal 授权
口令与认证策略55 条

SSH CA 集中签发与 Principal 授权

大规模环境用 SSH CA 替代逐台分发 authorized_keys:客户端证书由 CA 签发,服务端只信任 CA 并按 principal 授权。

安全加固速查安全更新于 2026-10-13

SSH CA 解决什么问题

逐台维护 authorized_keys 在几十台规模还能忍,上百台就会失控:谁在什么时候有权限、人走了怎么收,全是手工操作。SSH 证书体系把「信任」从每台机器上的一份文件,变成由 CA 签发的短有效期证书;服务端只信任 CA,并按 principal 决定这个证书能用哪个账号登录。

基本信息

适用平台Linux/macOS(OpenSSH 6.5 起支持用户证书)
签发命令ssh-keygen -s <CA私钥> -I <标识> -n <principal> -V <有效期>
服务端信任TrustedUserCAKeys 指向 CA 公钥
授权映射AuthorizedPrincipalsFile 或 AuthorizedPrincipalsCommand

典型使用场景

  • 大规模主机池:用短有效期证书替代逐台分发公钥
  • 离职即失效:证书只签 30 天,自然过期无需逐台清理
  • 授权分级:不同 principal 对应不同登录账号,实现职责分离
  • 审计要求:证书里的标识与有效期可追溯,比一份静态公钥更便于举证

签发与部署

签发与部署
# 1) 生成 CA 密钥对(离线保存,权限 600)
ssh-keygen -t ed25519 -f /etc/ssh/ca -C 'SSH CA'
# 2) 为用户公钥签发证书:标识写清楚是谁、有效期 30 天、principal 为 ops
ssh-keygen -s /etc/ssh/ca -I ops-zhangsan -n ops -V +30d id_ed25519.pub
# 3) 服务端 sshd_config 关键三行
# TrustedUserCAKeys /etc/ssh/ca.pub
# AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u
# PubkeyAuthentication yes
# 4) 核查生效配置
sshd -T | grep -Ei 'trustedusercakeys|authorizedprincipals'

关键配置读法

配置项作用常见错误
TrustedUserCAKeys指定被信任的 CA 公钥文件路径权限过宽,sshd 拒绝加载
AuthorizedPrincipalsFile把证书里的 principal 映射到本机账号未配置时证书对任意账号都可用
-V 有效期证书起止时间签了永久有效,等于退回静态密钥
KRL 吊销RevokedKeys 指定的吊销列表忘记启用,出问题后只能等证书自然过期
短有效期加定期重签,天然实现离职即失效;KRL 吊销作为补充手段,用于证书尚未过期就需要立即作废的场景。
CA 私钥的安全等级等同所有主机的最高权限:应离线保存或放入受控的签名服务,绝不能与主机同机存放。
迁移期可让证书与静态公钥并存,等所有用户切换到证书后再关闭公钥认证,避免一次性切换造成大规模登录失败。

易错点

  • 只配 TrustedUserCAKeys 不配 AuthorizedPrincipalsFile:证书可用于任意账号,权限映射完全失控
  • CA 私钥放在跳板机上且权限宽松:一旦该机失守,全部主机同时沦陷
  • 签永久证书图省事:与静态公钥相比只多了集中签发,失去了可撤销的优势
  • 变更 sshd_config 不先 sshd -t:语法错误会导致新连接全部被拒,只能靠带外恢复

数据来源与参考

  • OpenSSH 手册:CERTIFICATES
  • 企业 SSH 治理实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌