SSH 证书认证实战指南
SSH 证书认证是一种比传统公钥认证更安全的方案。本文介绍 SSH 证书的工作原理和配置方法。 传统公钥认证的问题 传统的 SSH 公钥认证需要在每台服务器上添加用户的公钥: 1 2 # 用户将公钥发送到服务器 ssh-copy-id user@server 这种方式在大规模环境中存在以下问题: 密钥管理困难:新增或撤销用户需要手动更新所有服务器 无时效性:公钥永久有效,离职后难以撤销 无法追踪:无法知道谁在什么时候登录过 扩展性差:成百上千台服务器时维护成本极高 SSH 证书认证的原理 SSH 证书认证引入**证书颁发机构(CA)**的概念: CA 密钥:管理员创建一个 CA 私钥,用于签发证书 用户证书:CA 使用私钥对用户公钥进行签名,生成证书 服务器信任 CA:服务器只需配置信任 CA 公钥,无需逐个添加用户公钥 证书验证:用户登录时提交证书,服务器通过 CA 公钥验证证书有效性 证书包含的信息 用户公钥 用户 ID(Key ID) 有效期(起始时间 + 结束时间) 允许的登录用户名(Principals) CA 签名 创建 SSH CA 首先创建 CA 密钥对。建议使用 ED25519 算法: 1 2 3 4 5 # 创建用户证书CA ssh-keygen -t ed25519 -f ~/.ssh/user_ca -C "SSH User CA" # 创建主机证书CA(可选,用于验证服务器身份) ssh-keygen -t ed25519 -f ~/....