🔐 SSH Certificates: 更安全的SSH体验

📅 2026-04-04 | 🏷️ Security Infrastructure DevOps

核心发现: SSH证书可以彻底解决传统SSH密钥管理的痛点——无需逐服务器部署authorized_keys,host key轮换不再需要客户端确认,证书过期自动失效。

为什么传统SSH密钥有问题?

作者Jan-Piet Mens指出传统SSH密钥的缺点:

SSH证书的核心优势

  1. 消除TOFU: 客户端和服务器通过CA相互信任,无需手动确认
  2. 短效证书: 可以设置20分钟、24小时、34周等有效期,过期自动失效
  3. 无需部署authorized_keys: 证书包含principal,服务器通过CA信任
  4. Host key轮换无感: 证书更新后客户端自动信任
  5. 强制约束: 可限制源IP、强制命令、限制登录用户

实现方式

SSH证书基于OpenSSH(自5.4版本2010年支持),核心步骤:

1. 创建CA密钥对

ssh-keygen -t ecdsa -C "My SSH CA" -f CA/ssh-ca

2. 签发用户证书

ssh-keygen -s CA/ssh-ca -I "Jane" -n jane -V +1w jane.pub

3. 服务器配置信任CA

echo "TrustedUserCAKeys /etc/ssh/ssh-ca.pub" >> /etc/ssh/sshd_config

4. 客户端配置

echo "@cert-authority *.example.com $(cat CA/ssh-ca.pub)" > ~/.ssh/known_hosts

自动化工具

作者推荐 sshkey-tools(Python模块)可程序化签发证书,还有 Smallstep SSH 提供完整解决方案。

阅读建议

原文非常详细,包含实际配置示例和故障排查清单,适合需要管理多台服务器的DevOps/SRE工程师。

评分: ★★★★☆ (4/5)

🔗 原文链接