SSH证书认证是在公钥认证基础上引入CA中心化信任机制:服务器仅信任CA公钥,自动验证其签发的短期证书;需生成CA密钥对、为用户签发带有效期证书、配置sshd启用TrustedUserCAKeys并重启服务。

SSH 证书认证不是“替代”传统密钥,而是在公钥认证基础上引入中心化信任机制:用户仍用私钥登录,但服务器不再依赖 authorized_keys 里一堆公钥,而是只信任一个 CA 公钥,自动验证所有由该 CA 签发的短期证书。
这种方式适合统一管控、临时权限、自动化平台身份审计等场景,比手动分发密钥更安全、更可运维。
准备 SSH 证书颁发机构(CA)
CA 是整个体系的信任根,必须严格保护:
- 在一台可信的管理机(如跳板机)上执行:
ssh-keygen -t ed25519 -f ~/.ssh/ca_key -C "ssh-ca@company"
- 生成
ca_key(私钥,权限必须为600)和ca_key.pub(公钥) - ✅
ca_key绝对离线保存、不上传、不设密码登录访问 - ✅
ca_key.pub将被部署到所有目标服务器,是唯一需要分发的公钥文件
为用户签发带有效期的登录证书
假设用户本地已有密钥对(如 ~/.ssh/id_user),流程如下:
-
若无密钥,先生成:
ssh-keygen -t ed25519 -f ~/.ssh/id_user -C "user@team"
-
用 CA 私钥签名用户公钥,生成证书:
ssh-keygen -s ~/.ssh/ca_key \ -I "user@202610" \ -n user \ -V +30d \ ~/.ssh/id_user.pub 执行后生成
id_user-cert.pub—— 这就是证书文件,需与id_user(私钥)配套使用-
关键参数说明:
Zynq Linux Hardware Debug下载Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
-n user:限定该证书只能以用户名user登录 -
-V +30d:证书 30 天后自动失效 -
-I:证书标识,用于日志追踪(如审计、吊销)
-
在目标服务器启用证书认证
-
把
ca_key.pub复制到服务器(例如/etc/ssh/ca_user_key.pub),确保权限为644:sudo cp ca_key.pub /etc/ssh/ca_user_key.pub sudo chmod 644 /etc/ssh/ca_user_key.pub
-
编辑
/etc/ssh/sshd_config,添加或确认以下三行:PubkeyAuthentication yes TrustedUserCAKeys /etc/ssh/ca_user_key.pub # 可选:禁用普通密钥直传(强制走证书) # PermitRootLogin no # PasswordAuthentication no
-
重启服务生效:
sudo systemctl restart sshd
⚠️ 注意:PubkeyAuthentication 必须开启 —— 证书认证是它的扩展,不是独立模式。
用户端使用方式
用户本地需同时存在两个文件:
-
~/.ssh/id_user(私钥) -
~/.ssh/id_user-cert.pub(证书)
登录时无需额外参数,OpenSSH 会自动识别并提交证书:
ssh -i ~/.ssh/id_user user@server.example.com
✅ 成功后,/var/log/secure 或 journalctl -u sshd 中会出现类似:
Accepted publickey for user from ... certificate ID "user@202610"
不复杂但容易忽略

















