如何让用户在 Azure ARM 模板中选择 ssh 密码或 public 密钥

How to make user chose between ssh password or public key in Azure ARM template

我已经构建了我的 Linux 模板,一切正常,但我有一个 剩下的问题。 实际上,我想让我的用户选择使用密码还是 SSH public 密钥来对 VM 进行身份验证。 我已经创建了 2 个参数,密码和密钥,如果另一个为空,我想强制设置一个,并相应地设置资源部分。

我怎样才能做到这一点?

您可以使用此代码段(将这些 variables\parameters 添加到您的模板中):

"parameters": {
    "authType": {
        "type": "string",
        "defaultValue": "password",
        "allowedValues": [
            "password",
            "ssh"
        ]
    }
},
"variables": {
    "ssh": {
        "computerName": "[variables('vmName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "linuxConfiguration": {
            "disablePasswordAuthentication": true,
            "ssh": {
                "publicKeys": [
                    {
                        "path": "[concat('/home/',parameters('adminUsername'),'/.ssh/authorized_keys')]",
                        "keyData": "[parameters('sshPublicKey')]"
                    }
                ]
            }
        }
    },
    "password": {
        "computerName": "[variables('vmName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]"
    }
},

然后在您的 VM 定义中执行此操作:

"osProfile": "[variables(parameters('authType'))]"

将检索名为 ssh 的变量或名为 password 的变量并将其分配给 osProfile