创建Ubuntu虚拟机时如何通过界面从Azure Key Vault获取SSH密钥
解决方法及原因说明
1. 首先确认存储位置是否正确
你当前无法找到密钥的最常见原因是存储位置错配:
Azure 门户创建虚拟机时调用的 SSH 私钥,需要存储在 Key Vault 的 机密(Secrets) 面板,而非你当前使用的 密钥(Keys) 面板。密钥面板仅用于存储用于加密、签名场景的非对称密钥对,虚拟机部署服务不会读取该面板下的内容。
2. 访问权限相关问题排查
该问题确实大概率和访问权限配置有关,需要检查三项配置:
- 你当前登录 Azure 门户的账号,需要拥有对应 Key Vault 的机密读取权限:如果 Key Vault 用的是访问策略模型,需要给你的账号授予机密的
Get权限;如果用的是 Azure RBAC 模型,需要给你的账号分配Key Vault Secrets User及以上权限角色。 - 你需要给 Azure 虚拟机资源提供器
Microsoft.Compute授予 Key Vault 的机密读取权限:该服务主体是虚拟机部署时用来拉取私钥的主体,没有权限的话即使你能看到机密,部署时也会失败。配置方式和上面的账号权限配置逻辑一致,给Microsoft.Compute授予机密Get权限或者Key Vault Secrets User角色即可。 - 如果 Key Vault 开启了网络访问限制,需要在网络配置中勾选「允许受信任的 Azure 服务绕过此防火墙」,同时确保你当前的客户端 IP 在 Key Vault 的允许访问列表中。
3. 操作步骤
- 导出你当前存放在密钥面板的 SSH 私钥,或者重新上传完整的 PEM 格式私钥到 Key Vault 的「机密」面板,保存为新的机密条目,注意不要改动私钥的原始格式,确保是标准的
-----BEGIN OPENSSH PRIVATE KEY-----开头、-----END OPENSSH PRIVATE KEY-----结尾的完整内容。 - 按照上面的权限要求完成 Key Vault 访问配置后保存修改。
- 回到虚拟机创建页面,刷新后重新选择「使用存储在 Azure 中的现有密钥」,即可找到对应机密条目。
内容的提问来源于stack exchange,提问作者user13696433
相关产品推荐
相关产品推荐

