如何在 Azure Devops 发布管道中读取多行 Azure Key Vault 机密

时间:2021-04-07 21:20:30

标签: azure-devops multiline azure-keyvault private-key

我在 Azure 发布管道中使用多行 Azure Key Vault 值时遇到问题...

我将一个多行值(RSA 私钥)放入 Azure Key Vault using the CLI

az keyvault secret set --vault-name "vault" --name "secret" --file "pk.pem"

这有效,我可以在门户中看到多行秘密。

在本地使用 CLI 我也可以:

pk=$(az keyvault secret show \
--name "ssh-private-key" \
--vault-name $vault \
--query "value")

这会返回一个有点糟糕的值(是的,包括双引号):

<块引用>

"-----开始 RSA 私钥-----\nMIIG4wIBAA .... JtpyW\n-----结束 RSA 私钥-----\n"

我可以设法使用它并将值发送到文件中,如下所示:

pk="${pk%\"}" #remove first quote
pk="${pk#\"}" #remove last quote


echo $pk | sed 's|\\n|\n|g' | # replace with actual newlines
while IFS= read -r line; do   # loop through lines
  echo "$line" >> pk.pem      # write to file per line
done

这有效,我可以使用 ssh -i pk.pem user@server

登录到我的服务器

但是当在 Azure Devops Release 管道中运行相同的脚本(也在 Linux 代理上使用 Bash)时,完全相同的脚本失败了......我也无法检查实际值,因为日志掩盖了与秘密...

Azure Devops Release Pipeline

关于如何调试或实际读取多行值而不是仅仅存储它们的任何指南将不胜感激!

1 个答案:

答案 0 :(得分:1)

以下是故障排除建议:

错误“Host key verification failed.”不仅仅在密钥不正确时发生。大多数情况下,它不是指您的密钥。

所以我建议您首先尝试使用简单值的连接,看看它是否适用于 Azure DevOps。

此外,也许 SSH service connection 可以帮助您完成您正在做的事情。进入项目设置 -> 服务连接 -> 创建服务连接 -> SSH 创建一个。