Ssh

將 RSA 密鑰放入 azure 密鑰庫

  • January 7, 2021

如何將我的密鑰對(通常是 id_rsa 和 id_rsa.pub)儲存在 azure key vault 中。我想將公鑰放​​在我的 GIT 服務中,並允許虛擬機從 Azure 密鑰庫下載私鑰 -> 以便它可以安全地訪問 GIT。

我嘗試製作一對 PEM 文件並將它們組合成一個 pfx 並將其作為秘密上傳,但我返回的文件似乎與任一 pem 文件完全不同。

我還嘗試將我的密鑰手動輸入 Azure,但它會將換行符變成空格。

您可以使用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

我比較了我實驗室的鑰匙。他們是一樣的。

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

引用自:https://serverfault.com/questions/848168