如何将密钥对(通常是 id_rsa 和 id_rsa.pub)存储在 Azure 密钥保管库中。我想将公钥放在我的 GIT 服务中,并允许虚拟机从 Azure 密钥保管库下载私钥 -> 以便它可以安全地访问 GIT。
我尝试制作一对 PEM 文件并将它们组合成一个 pfx,然后将其作为机密上传,但我得到的文件似乎与任何一个 pem 文件完全不同。
我也尝试手动将我的密钥输入 Azure,但它将换行符变成了空格。
答案1
你可以使用Azure CLI上传id_rsa
到 Azure Key Vault。
azure keyvault secret set --name shui --vault-name shui --file ~/.ssh/id_rsa
您可以用来-h
获取帮助。
--file <file-name> the file that contains the secret value to be uploaded; cannot be used along with the --value or --json-value flag
您还可以从密钥库下载机密。
az keyvault secret download --name shui --vault-name shui --file ~/.ssh/id_rsa
我对比了实验室里的钥匙,它们是一样的。
答案2
Shengbao Shui 之前的回答展示了使用 Azure CLI 1.0 (Node) 存储机密的命令。对于Azure CLI 2.0 (Python)使用以下语法:
设置/存储键:
az keyvault secret set --vault-name 'myvault' -n 'secret-name' -f '~/.ssh/id_rsa'
参数:
Arguments
--name -n [Required]: Name of the secret.
--vault-name [Required]: Name of the key vault.
--description : Description of the secret contents (e.g. password, connection string,
etc).
--disabled : Create secret in disabled state. Allowed values: false, true.
--expires : Expiration UTC datetime (Y-m-d'T'H:M:S'Z').
--not-before : Key not usable before the provided UTC datetime (Y-m-d'T'H:M:S'Z').
--tags : Space-separated tags in 'key[=value]' format. Use '' to clear existing
tags.
Content Source Arguments
--encoding -e : Source file encoding. The value is saved as a tag (`file-
encoding=<val>`) and used during download to automatically encode the
resulting file. Allowed values: ascii, base64, hex, utf-16be,
utf-16le, utf-8. Default: utf-8.
--file -f : Source file for secret. Use in conjunction with '--encoding'.
--value : Plain text secret value. Cannot be used with '--file' or '--encoding'.
Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, table, tsv. Default:
json.
--query : JMESPath query string. See http://jmespath.org/ for more information
and examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.
检索/获取密钥:
~/.ssh/mykey
使用以下方法将密钥保存到文件中jq 实用程序。
az keyvault secret show --vault-name myvault --name 'secret-name' | jq -r .value > ~/.ssh/mykey
文件可能会打印尾随换行符,您可以使用 perl 单行命令将其删除:
perl -pi -e 'chomp if eof' ~/.ssh/mykey
# Set permissions to user-read only
chmod 600 ~/.ssh/mykey
从私钥文件生成公钥...
ssh-keygen -y -f ~/.ssh/myfile > ~/.ssh/myfile.pub
答案3
如果我们想以 ASCII 编码格式将 ssh 密钥存储在 KeyVault 中,那么我们可以使用以下命令。
$az keyvault secret set –-vault-name <KEY_VAULT_NAME> -–name <NAME_OF_THE_KEY> –-file <PATH_OF_THE_SSH_KEY_FILE> -–encoding ascii