具有 SFTP 的用户名和 ssh 密钥的 Azure Keyvault 机密

Azure Keyvault Secret with username and ssh key for SFTP

提问人:rdsully 提问时间:11/8/2023 更新时间:11/8/2023 访问量:49

问:

我需要在 keyvault 中存储用户名和 ssh 文件,以用于连接到远程 SFTP 服务器。

我可以使用用户名/密码组合创建密钥。我可以用ssh密钥文件创建一个密钥。我不知道如何使用用户名/ssh 密钥文件组合创建密钥。能做到吗?

azure-keyvault

评论

0赞 Anupam Chand 11/8/2023
如何连接到远程 sFTP 服务器?是通过逻辑应用还是数据工厂?如果是,您可以在将 ssh 文件转换为 base64 格式后将其存储为机密。看看这个博客,了解更多关于 medium.com/@anupamchand/...
0赞 rdsully 11/8/2023
实际上,我们编写了一个函数应用,用于计划在大量源和目标之间传输文件。我们的大多数FTP和SFTP进程目前都使用用户名/密码组合,但我们的一些合作伙伴正在转换为用户名/ssh密钥。我可以使用以下命令为密钥文件创建机密: az keyvault secret set --vault-name “KEYVAULT-NAME” --name “SECRET-NAME” --file “filename” 但我似乎无法将用户名放入机密中。FA 的每个实例只为源调用一个密钥,为目标调用一个密钥。
0赞 Anupam Chand 11/9/2023
您可能需要对代码进行一些更改。可以更改代码以读取密钥保管库两次,一次用于用户名,一次用于密钥文件。否则,将 ssh 文件转换为 base64 格式,并在其前缀为“<username>-”。然后在您的代码中将整个字符串读取为机密,将其拆分为“-”分隔符,并使用 base64 解码将后半部分转换回原始 ssh 文件。

答:

0赞 Venkat V 12/4/2023 #1

感谢您提出同样的观点。Anupam Chand

Azure Key Vault不直接支持将用户名SSH 密钥文件的组合存储为单个密钥,但是,您可以通过将它们存储为两个单独的密钥,然后按照以下步骤在脚本中检索和组合它们来实现这一点。Key Vault

将用户名存储在密钥保管库中

az keyvault secret set --vault-name "VKV" --name "Username" --value "azureuser"

将 SSH 密钥文件存储在密钥保管库中

az keyvault secret set --vault-name "VKV" --name "SshKey" --file "/user/Venkatvm.pem"

结果:

enter image description here

Retrieve以及脚本中检索到的用户名和 SSH 密钥内容,以连接应用程序。combine

   
    username=$(az keyvault secret show --vault-name "VKV" --name "VMusername" --query "value" -o tsv)
    
    ssh_key=$(az keyvault secret show --vault-name "VKV" --name "SshKeyFile" --query "value" -o tsv)
    
    vm_ip="172.178.91.148"
    
    echo "$ssh_key" > /user/private-key.pem
    chmod 400 /user/private-key.pem
    
    ssh -i /user/private-key.pem "$username@$vm_ip"

enter image description here

参考:az keyvault secret set