跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

OpenSSH多域名证书配置及身份验证链管理

OpenSSH通过CA机制实现多主机统一信任,替代传统多域名证书:用ssh-keygen生成CA密钥,签发用户/主机证书,服务器配置TrustedUserCAKeys或HostCertificate,客户端自动验证证书链。 OpenSSH 不支持传统意义上的“多域名证书”或 X.509 证书链式身份验证(那是 TLS/SSL 的机制),它使用的是基于公钥的认证体系,核心是
ssh-keygen
生成的密钥对和
authorized_keys
文件。所谓“多域名”或“身份验证链”,实际是指:如何让一个 SSH 密钥对安全、灵活地用于多个主机(不同域名/IP)、多个用户身份,并支持可信委托(如 CA 签发的用户/主机密钥)。下面从实用角度讲清关键配置与管理逻辑。 用 SSH CA 实现多主机统一信任(替代“多域名证书”) OpenSSH 自 6.8 起支持证书颁发机构(CA)模式,这是最接近“证书链”的方案——你无需在每台服务器上手动追加公钥,而是由一台可信 CA 签发用户/主机证书,服务器只需信任该 CA 公钥即可验证所有签名证书。 生成 CA 密钥:
ssh-keygen -t rsa -b 4096 -f ca_key
(私钥保密,公钥
ca_key.pub
分发给所有服务器) 为用户签发证书:
ssh-keygen -s ca_key -I user@example.com -n user1 -V +52w id_rsa.pub
(
-n
指定允许登录的用户名,
-V
设有效期) 服务器端配置:
/etc/ssh/sshd_config
中添加
TrustedUserCAKeys /etc/ssh/ca_key.pub
,然后重启 sshd 客户端使用时,直接用签发后的私钥连接,服务端自动校验证书链(CA 公钥 → 用户证书 → 用户私钥) 一个密钥对安全复用多个域名/主机的方法 不依赖 CA 时,“多域名”本质是让同一组密钥在不同主机上生效。关键是控制密钥分发范围与权限粒度: 把公钥(
id_rsa.pub
)内容追加到各目标主机的
~/.ssh/authorized_keys
,支持多行、多主机 用
command=
、
from=
、
no-port-forwarding
等选项限制单个公钥的行为(例如:某公钥仅允许从特定 IP 连接,或只执行备份命令) 避免使用空密码私钥;推荐配合
ssh-agent
或
gpg-agent
管理解密口令,提升多环境使用体验 可为不同用途生成独立密钥对(如
id_rsa_work
、
id_rsa_personal
),再通过
~/.ssh/config
绑定域名与密钥:
Host work.example.com
IdentityFile ~/.ssh/id_rsa_work
主机密钥信任链:如何安全验证目标服务器身份 客户端首次连接时保存的
~/.ssh/known_hosts
就是你的“主机身份信任链”。要实现跨域名的可信验证(比如
web1.example.com
和
web2.example.com
都由同一 CA 签发主机证书): 用 CA 签发主机证书:
ssh-keygen -s ca_key -I host/web1.example.com -h -n web1.example.com -V +52w /etc/ssh/ssh_host_rsa_key.pub
服务器配置中启用:
HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
客户端设置
~/.ssh/config
:
Host *.example.com
StrictHostKeyChecking yes
UserKnownHostsFile /dev/null
GlobalKnownHostsFile /etc/ssh/ssh_known_hosts
,并把 CA 公钥放入
/etc/ssh/ssh_known_hosts
(以
@cert-authority
开头) 这样,只要主机证书由该 CA 签发且域名匹配,客户端就自动信任,无需手动确认指纹 清理与轮换:避免身份链失效或泄露 长期运行中,密钥过期、人员变动、服务器迁移都会导致信任链断裂。必须建立运维闭环: 用户证书过期后,服务端会拒绝登录,需重新签发;建议用短有效期(如 90 天)+ 自动化脚本续期 撤销已泄露或离职用户的访问权:修改 CA 的
revoked_keys
文件(需 OpenSSH ≥ 7.5),并在
sshd_config
中配置
RevokedKeys /etc/ssh/revoked_keys
主机密钥轮换时,先部署新密钥+证书,再更新客户端的全局 known_hosts,最后停用旧密钥,避免中断 定期审计
authorized_keys
内容、CA 签发记录和证书有效期(可用
ssh-keygen -L -f cert.pub
查看证书详情)

相关文章