Шаблон Azure ARM — открытый и закрытый ключ ssh

#azure #ssh

#azure #ssh

Вопрос:

Я пытаюсь создать шаблон azure ARM, который будет запускать кластер с несколькими виртуальными машинами.

Я могу предоставить открытый ключ SSH для всех компьютеров, но я бы хотел, чтобы одна машина, ведущая, могла получать доступ через закрытый ключ SSH к другим машинам.

Как я могу предоставить главному компьютеру закрытый ключ во время шаблона? Есть ли конкретный способ сделать это?

Спасибо, Роб

Ответ №1:

Да, для этого вы должны использовать Azure Key Vault. Вы можете предоставить защищенный параметр виртуальной машине во время развертывания, например:

 "osProfile": {
  "computerName": "[parameters('vmName')]",
  "adminUsername": "[parameters('adminUsername')]",
  "adminPassword": "[parameters('adminPassword')]",
  "secrets": [
    {
      "sourceVault": {
        "id": "[resourceId(parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
      },
      "vaultCertificates": [
        {
          "certificateUrl": "[parameters('certificateUrl')]",
          "certificateStore": "My"
        }
      ]
    }
  ],
  

но для Linux вы должны использовать что-то вроде этого:

 "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "sshProfile": {
                    "publicKeys": [
                      {
                        "certificateData": "[parameters('sshPublicKey')]"
                      }
                    ]
                  }
                }
              }
  

но, очевидно, замените certificateData ключом ssh в вашем хранилище ключей.

Комментарии:

1. Спасибо, но как мастер может подключаться к другим машинам, используя тот же открытый ключ? есть ли способ предоставить машину, указав как открытый, так и закрытый ключ?

2. вы могли бы использовать расширение azure dsc для запуска скрипта, который извлекал бы ключи ssh из хранилища ключей, скажем, с помощью Azure python skd (или azure cli, возможно) для azure. Это возможно, но далеко не тривиально 😉

3. Хорошая идея, у вас есть какие-нибудь ссылки? Я не знаю azure key vault

4. azure.microsoft.com/en-us/documentation/articles/…