Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 如何在Azure Devops发布管道中读取多行Azure密钥保险库机密_Azure Devops_Multiline_Azure Keyvault_Private Key - Fatal编程技术网

Azure devops 如何在Azure Devops发布管道中读取多行Azure密钥保险库机密

Azure devops 如何在Azure Devops发布管道中读取多行Azure密钥保险库机密,azure-devops,multiline,azure-keyvault,private-key,Azure Devops,Multiline,Azure Keyvault,Private Key,我在Azure发布管道中使用多行Azure Key Vault值时遇到问题 我将多行值(RSA私钥)放入Azure密钥库: 这很有效,我可以在门户中看到多行机密 在本地使用CLI,我还可以执行以下操作: pk=$(az keyvault secret show \ --name "ssh-private-key" \ --vault-name $vault \ --query "value") 这将返回一个有点糟糕的值(是,包括双引号): “----开始

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

我将多行值(RSA私钥)放入Azure密钥库:

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

在本地使用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-ipk.pem登录到我的服务器user@server


但是当在Azure Devops发布管道中运行相同的脚本时(也在Linux代理上使用Bash),完全相同的脚本会失败。。。我在检查实际值时也遇到了问题,因为日志屏蔽了与机密相关的所有值


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

以下是故障排除建议:

“主机密钥验证失败。”错误不仅仅发生在密钥不正确时。大多数情况下,它不是指你的钥匙

因此,我建议您首先使用一个简单的值尝试连接,看看它在Azure DevOps上是否有效


更重要的是,也许安可以帮助你做你正在做的事情。转到项目设置->服务连接->创建服务连接->SSH创建一个。

服务器是动态生成的,并分配了一个新的IP,因此创建服务连接不是一个选项。然而,您在“主机密钥验证失败”这一问题上是对的——在大约100次发布尝试之后,我查看了它,实际上我需要清除
.ssh/known_hosts
中的条目。此外,对于任何来到这里的人来说,有一种方法
az keyvault secret下载
,在Azure中关于“多行”秘密的页面中没有记录。使用它解决了我关于新行和引号的问题!
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