阿里云公钥其实没那么神秘。它是非对称加密里可以公开的那一半密钥,你在控制台里看到的“公钥”“密钥对”,大多和它有关。搞清楚它用在哪,登录服务器、校验下载内容时能少踩不少坑。

阿里云公钥到底指什么
非对称加密成对使用两把密钥。公钥可以发给别人,私钥只能自己留着。用公钥加密的内容,只有对应的私钥能解开;用私钥签名的内容,则用公钥来核对。私钥一旦泄露,这套保护就失效了,所以两者的分工要分清。
在阿里云的环境里,说到阿里云公钥,常见的有三类:
- ECS 的 SSH 密钥对中,那个以 ssh-ed25519 或 ssh-rsa 开头的公钥部分。
- KMS 密钥管理服务里非对称密钥的公钥部分,用于加解密或验签。
- 镜像站、软件源提供的 GPG 公钥,用来确认下载的包没有被替换。
另外要提醒一下,RAM 用户的 AccessKey(AK/SK)是对称凭证,不属于公钥体系。很多人把它和公钥混在一起,排查问题时会绕远路。
场景一:用 SSH 密钥对替换密码登录
某电商团队的运维小王,新买的 ECS 一直用密码登录,日志里全是暴力破解的失败记录。他决定改用 SSH 密钥对,步骤大致如下,具体界面以控制台为准:
- 创建密钥对:在 ECS 的密钥对页面创建,私钥只提供一次下载,下载后马上存到安全位置。
- 绑定到实例:绑定或更换密钥对通常要停止实例,最好挑业务低峰期做。
- 收紧本地权限:Linux 或 macOS 上执行 chmod 600 处理私钥文件,权限太宽松时 SSH 客户端会直接拒绝使用。
- 验证后再关密码:用 ssh -i 指定私钥连接,确认能登上去,再关闭密码认证。
小王在关闭密码登录前,保留了一个已经连通的会话。这一步看着多余,但如果 sshd 配置写错了,它就是唯一的退路。改登录方式时,先留一条能用的通道,这个习惯很值得学。
公钥粘贴时最容易出错的地方
authorized_keys 里的每一行,通常以算法标识开头,接着是一段 Base64 内容,末尾可能还有注释。手工粘贴时,如果前缀被截掉,或者一行被折成两行,登录就会失败,而且报错信息未必能直接看出原因。推荐优先选 ed25519,它体积小,性能也够用。
场景二:安装软件前先校验 GPG 公钥
一家中型科技公司的 DevOps 团队,在测试机上装依赖时遇到签名校验报错。查下来是没导入对应软件源的 GPG 公钥,系统无法确认包的签名。
他们的做法是:从官方文档给出的地址下载公钥,对照文档里的指纹核对一遍,再导入系统可信密钥库。这一步多了几分钟,却能挡住中间人替换软件包的风险。后来他们把这段操作写进了基础镜像的构建脚本,新机器就不用人工处理了。
公钥本来就是公开的,所以获取容易。但越是容易拿到的东西,越不能因为“来源看起来靠谱”就跳过指纹核对。
场景三:用公钥校验 JWT 签名
一个微服务架构的 SaaS 团队,网关层用 JWT 做身份认证。认证服务用私钥签发令牌,各业务服务只拿公钥去验签。好处在于,业务服务手里没有签名能力,即使某个服务被攻破,攻击者也没法伪造新令牌。
团队通过标准 JWKS 端点拉取公钥列表,再按令牌头部的 kid 字段挑选对应的那把。轮换密钥时,他们先发布新公钥,等缓存过期让各服务都拿到新版本,再切换签名私钥。顺序反过来,就会出现令牌验签失败的故障。
几个常见误区
- 把私钥当公钥发出去:私钥一旦外泄,尽快在控制台删除对应密钥对,并更换相关实例的凭证。
- 私钥文件权限放太开:私钥只让当前用户可读,别放进共享目录,更别提交到代码仓库。
- 从不轮换:定一个轮换周期,轮换时保留旧密钥一段过渡期,避免新旧切换时断服务。
- 把各家的“公钥”当成一回事:支付宝开放平台的应用公钥、支付宝公钥,与阿里云的密钥体系是不同的系统,接入时分别看各自文档。
阿里云公钥是安全体系里的基础件。知道它在哪些地方用,生成、保管、校验时守住私钥这一半,日常运维和开发里大部分密钥问题都能避开。如果手里正好有一台还在用密码登录的服务器,可以先从 SSH 密钥对开始换。