如何将私钥存入Azure Key Vault机密,通过Azure Bastion SSH登录Azure VM
将本地.pem私钥存入Azure Key Vault并用于Azure Bastion登录Linux VM的排查方案
正确操作步骤
先确认是否按标准流程操作,避免基础步骤遗漏:
- 预处理.pem私钥:如果私钥是加密状态(带密码),先移除加密:
用openssl rsa -in original_encrypted.pem -out unencrypted.pemopenssl rsa -check -in unencrypted.pem验证私钥格式是否有效。 - 存入Key Vault:
- CLI方式:
az keyvault secret set --vault-name <你的KeyVault名称> --name <机密名称(比如vm-ssh-key)> --file ./unencrypted.pem --content-type "application/x-pem-file" - Portal方式:进入目标Key Vault → 「机密」→ 「生成/导入」,上传.pem文件,内容类型必须选
application/x-pem-file,完成导入。
- CLI方式:
- 授权Bastion访问Key Vault:
- 进入Key Vault的「访问策略」→ 「添加访问策略」,在「机密权限」里勾选「获取」;在「选择主体」中搜索并选择你的Azure Bastion资源对应的服务主体,保存策略。
- 或用RBAC:给Bastion的托管标识分配「机密用户」角色。
常见失败原因及修复
- 私钥格式不符合要求
- 加密的私钥会导致Bastion无法解析,必须使用未加密版本;如果私钥文件有多余空行、格式损坏,重新生成或修复后再上传。
- Key Vault权限配置缺失
- 检查Bastion是否有读取机密的权限:确认访问策略中已给Bastion主体分配「机密获取」权限,或RBAC角色分配正确。
- 机密内容类型错误
- 上传时未设置
application/x-pem-file,Bastion无法识别这是SSH私钥,重新上传并指定正确的内容类型。
- 上传时未设置
- Linux VM SSH配置问题
- 用其他方式(比如用户名密码)登录VM,检查
/etc/ssh/sshd_config中PubkeyAuthentication是否设为yes,重启sshd服务;同时确认对应的公钥已添加到~/.ssh/authorized_keys文件中。
- 用其他方式(比如用户名密码)登录VM,检查
- Key Vault网络限制
- 如果Key Vault启用了防火墙,需确保Bastion所在的虚拟网络被允许访问Key Vault,或开启「允许受信任的Microsoft服务访问此Key Vault」选项。
验证步骤
- 用CLI检查机密是否可读取:
返回的内容应和本地.pem文件一致。az keyvault secret show --vault-name <Vault名称> --name <机密名称> --query value -o tsv - 在Azure Portal中进入目标VM,选择「连接」→「Bastion」,身份验证方式选「Azure Key Vault」,选择对应的Key Vault和机密,尝试登录。
内容的提问来源于stack exchange,提问作者Amit Sharma
相关产品推荐
相关产品推荐

