SSH证书认证是用可信CA为用户公钥签发带有效期、用户名和权限限制的短期证书;服务端仅信任CA公钥,简化密钥管理,适用于团队、运维平台及高合规场景。

SSH证书认证不是把密钥换成证书,而是用一个可信的CA(证书颁发机构)给用户公钥“盖章”,生成带有效期、用户名和权限限制的短期证书。服务器只认CA的公钥,不再需要维护成百上千行authorized_keys,适合团队、运维平台或合规要求高的环境。
一、先搭一个安全的CA中心
选一台不对外开放SSH、物理隔离的管理机作为CA。它只做一件事:签发和吊销证书。
- 生成强密码保护的CA密钥对:
ssh-keygen -t ed25519 -f ~/.ssh/ssh-ca -C "ssh-ca@company" - 私钥
ssh-ca必须离线备份,权限设为600 - 提取CA公钥:
ssh-keygen -L -f ~/.ssh/ssh-ca.pub,复制其中ssh-ed25519 AAAA...整行内容 - 把这行公钥存为
/etc/ssh/ca_user_key.pub,部署到所有目标服务器
二、服务端启用证书信任
在每台目标服务器上操作:
- 编辑
/etc/ssh/sshd_config,添加两行:TrustedUserCAKeys /etc/ssh/ca_user_key.pubPubkeyAuthentication yes - 确认
PasswordAuthentication no(可选,强化安全) - 执行
sshd -t检查语法,再systemctl restart sshd
三、为用户签发带约束的证书
用户先有自己的一对密钥(如id_ed25519),再交由CA签名:
- CA执行命令:
ssh-keygen -s ~/.ssh/ssh-ca -I "dev-alice" -n alice -V +7d ~/.ssh/id_ed25519.pub -
-n alice表示该证书只能用于登录用户名alice -
-V +7d设7天有效期,到期自动失效,无需人工清理 - 生成的
id_ed25519-cert.pub就是证书文件,和私钥一起放在~/.ssh/下
四、客户端零配置自动使用
只要满足两个条件,OpenSSH 7.2+会自动携带证书登录:
- 私钥和证书命名匹配(如
id_ed25519+id_ed25519-cert.pub) - 两者都在
~/.ssh/目录,权限均为600 - 直接运行
ssh alice@server-ip即可,不用加-i或-o参数











