怎么通过 SSH 证书认证替代传统的公私钥对登录

阿丽小哥_2394

阿丽小哥_2394

2026-09-28

266人浏览

原创

ssh证书认证是密钥认证的进阶形式,它用ca签名的带有效期、可吊销、可绑定身份的数字证书替代直接分发公钥,解决多用户多主机下密钥管理混乱与批量撤销难等问题。

怎么通过 ssh 证书认证替代传统的公私钥对登录

SSH 证书认证(Certificate-based Authentication)和传统公私钥对登录(Key-based Authentication)不是替代关系,而是进阶关系——证书认证仍基于密钥对,但它用由可信证书颁发机构(CA)签名的 SSH 证书来代替直接分发公钥。它不取消私钥,而是把服务器信任的“公钥”升级为带有效期、可吊销、可绑定身份信息的数字证书,从而解决多用户、多主机场景下密钥管理混乱、无法批量撤销等痛点。

为什么需要 SSH 证书认证?

传统密钥登录虽安全,但在中大型运维环境中存在明显短板:

  • 每新增一个用户或机器,就得手动把公钥追加到所有目标服务器的 authorized_keys 文件里
  • 员工离职或密钥泄露时,需逐台登录删公钥,响应慢、易遗漏
  • 无法限制证书用途(比如只允许某密钥用于备份,不能提权)
  • 缺乏统一信任源,难以审计谁在何时用哪个密钥访问了哪台机器

证书认证的核心组件与流程

整个体系依赖三个角色协同工作:

  • CA(证书颁发机构):一台受信的专用服务器,持有长期有效的 CA 私钥,用于签署用户/主机证书
  • 用户端:生成自己的密钥对(如 id_rsa),再向 CA 申请签名,获得 id_rsa-cert.pub(即用户证书)
  • 服务端(SSH 目标主机):配置信任该 CA 的公钥(trusted-user-ca-keys.pub),并启用证书验证

登录时,客户端提交私钥 + 用户证书;服务端用 CA 公钥验证证书签名,再检查证书中的用户名、有效期、扩展字段等策略,全部通过才放行。

快速搭建用户证书认证(以 OpenSSH 为例)

以下操作均使用 OpenSSH 自带工具(无需额外软件),假设你已有管理权限的 CA 主机和若干目标服务器:

  • 1. 在 CA 主机上生成 CA 密钥对:
    ssh-keygen -t ed25519 -f ~/.ssh/ca_key -C "ssh-ca"
    保存好 ca_key(私钥,严格保护!)和 ca_key.pub(公钥,后续分发)
  • 2. 用户生成自身密钥,并用 CA 签发证书:
    用户本地运行:ssh-keygen -t ed25519 -f ~/.ssh/id_ecdsa -C "alice@company"
    再由管理员(或自动化脚本)在 CA 上执行:
    ssh-keygen -s ~/.ssh/ca_key -I alice-202609 -n alice -V +4w ~/.ssh/id_ecdsa.pub
    生成 id_ecdsa-cert.pub(含 4 周有效期、用户名 alice、标识 alice-202609)
  • 3. 服务端配置信任 CA 公钥:
    将 ca_key.pub 复制到每台目标服务器,例如存为 /etc/ssh/trusted_ca.pub
    编辑 /etc/ssh/sshd_config,添加:
    TrustedUserCAKeys /etc/ssh/trusted_ca.pub
    PubkeyAuthentication yes
    重启服务:sudo systemctl restart sshd
  • 4. 用户登录(无需改 authorized_keys):
    把 id_ecdsa(私钥)和 id_ecdsa-cert.pub(证书)放在本地 ~/.ssh/ 下
    直接执行:ssh -i ~/.ssh/id_ecdsa alice@server —— 服务端自动识别并验证证书

相比传统密钥,证书认证带来的关键增强

它不是“换一种登录方式”,而是给密钥体系加上策略层和治理能力:

  • 集中吊销:CA 可维护一个 revoked_keys 列表,服务端配置 RevokedKeys 即可实时拦截已废止证书
  • 细粒度授权:签名时可用 -O extensions=permit-port-forwarding,permit-agent-forwarding 控制功能开关
  • 自动轮换:证书设短有效期(如 24 小时),配合自动化工具每日签发新证,实现“密钥永不长期存在”
  • 身份绑定更可靠:证书内嵌 -n 指定的用户名、-I 标识符,比单纯靠 authorized_keys 注释更防篡改
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3710

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3213

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2293

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5510

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5182

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3073

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2585

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2799

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.3万人学习