WinRM-hozzáférés beállítása a Virtual Machines-Azure Resource Manager

A következőkre vonatkozik: ✔️ Windows rugalmas méretezési ✔️ virtuális gépekre

A WinRM-kapcsolattal rendelkezik a virtuális gép beállításának lépései

  1. Kulcstartó létrehozása
  2. Önaláírt tanúsítvány létrehozása
  3. Töltse fel az önaírt tanúsítványt a Key Vault
  4. Szerezze be az önaírt tanúsítvány URL-címét a Key Vault
  5. Hivatkozhat az önaírt tanúsítványok URL-címére a virtuális gép létrehozásakor

1. lépés: Új Key Vault

Az alábbi paranccsal hozhatja létre a Key Vault

New-AzKeyVault -VaultName "<vault-name>" -ResourceGroupName "<rg-name>" -Location "<vault-location>" -EnabledForDeployment -EnabledForTemplateDeployment

2. lépés: Önaírt tanúsítvány létrehozása

Ezzel a PowerShell-szkriptel önaírt tanúsítványt hozhat létre

$certificateName = "somename"

$thumbprint = (New-SelfSignedCertificate -DnsName $certificateName -CertStoreLocation Cert:\CurrentUser\My -KeySpec KeyExchange).Thumbprint

$cert = (Get-ChildItem -Path cert:\CurrentUser\My\$thumbprint)

$password = Read-Host -Prompt "Please enter the certificate password." -AsSecureString

Export-PfxCertificate -Cert $cert -FilePath ".\$certificateName.pfx" -Password $password

3. lépés: Töltse fel az önaírt tanúsítványt a Key Vault

Mielőtt feltölti a tanúsítványt az 1. Key Vault létrehozott tanúsítványba, át kell alakítania a Microsoft.Compute erőforrás-szolgáltató által megértett formátumra. Az alábbi PowerShell-szkript lehetővé teszi ezt

$fileName = "<Path to the .pfx file>"
$fileContentBytes = Get-Content $fileName -Encoding Byte
$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)

[System.Collections.HashTable]$TableForJSON = @{
    "data"     = $fileContentEncoded;
    "dataType" = "pfx";
    "password" = "<password>";
}
[System.String]$jsonObject = $TableForJSON | ConvertTo-Json
$jsonEncoded = [System.Convert]::ToBase64String($jsonObject)

$secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText –Force
Set-AzKeyVaultSecret -VaultName "<vault name>" -Name "<secret name>" -SecretValue $secret

4. lépés: Szerezze be az önaírt tanúsítvány URL-címét a Key Vault

A Microsoft.Compute erőforrás-szolgáltatónak szüksége van a virtuális gép üzembe Key Vault titkos kódjának URL-címére. Ez lehetővé teszi, hogy a Microsoft.Compute erőforrás-szolgáltató letöltse a titkos titkos okat, és létrehozza a megfelelő tanúsítványt a virtuális gépen.

Megjegyzés

A titkos kód URL-címének tartalmaznia kell a verziót is. Egy példa URL-cím az alábbihoz hasonló: https://contosovault.vault.azure.net:443/secrets/contososecret/01h9db0df2cd4300a20ence585a6s7ve

Sablonok

A sablonban található URL-címre mutató hivatkozást az alábbi kóddal kaphatja meg

"certificateUrl": "[reference(resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', '<vault-name>', '<secret-name>'), '2015-06-01').secretUriWithVersion]"

PowerShell

Ezt az URL-címet az alábbi PowerShell-paranccsal kaphatja meg

$secretURL = (Get-AzKeyVaultSecret -VaultName "<vault name>" -Name "<secret name>").Id

5. lépés: Az önaírt tanúsítványok URL-címének hivatkozása virtuális gép létrehozásakor

Azure Resource Manager-sablonok

Amikor sablonokkal hoz létre virtuális gépet, a tanúsítványra az alábbi módon hivatkozik a titkos kulcsok és a winRM szakaszban:

"osProfile": {
      ...
      "secrets": [
        {
          "sourceVault": {
            "id": "<resource id of the Key Vault containing the secret>"
          },
          "vaultCertificates": [
            {
              "certificateUrl": "<URL for the certificate you got in Step 4>",
              "certificateStore": "<Name of the certificate store on the VM>"
            }
          ]
        }
      ],
      "windowsConfiguration": {
        ...
        "winRM": {
          "listeners": [
            {
              "protocol": "http"
            },
            {
              "protocol": "https",
              "certificateUrl": "<URL for the certificate you got in Step 4>"
            }
          ]
        },
        ...
      }
    },

A fentiekhez egy mintasablont itt talál: vm-winrm-keyvault-windows

A sablon forráskódja a GitHub

PowerShell

$vm = New-AzVMConfig -VMName "<VM name>" -VMSize "<VM Size>"
$credential = Get-Credential
$secretURL = (Get-AzKeyVaultSecret -VaultName "<vault name>" -Name "<secret name>").Id
$vm = Set-AzVMOperatingSystem -VM $vm -Windows -ComputerName "<Computer Name>" -Credential $credential -WinRMHttp -WinRMHttps -ProvisionVMAgent -WinRMCertificateUrl $secretURL
$sourceVaultId = (Get-AzKeyVault -ResourceGroupName "<Resource Group name>" -VaultName "<Vault Name>").ResourceId
$CertificateStore = "My"
$vm = Add-AzVMSecret -VM $vm -SourceVaultId $sourceVaultId -CertificateStore $CertificateStore -CertificateUrl $secretURL

6. lépés: Csatlakozás a virtuális géphez

A virtuális géphez való csatlakozás előtt meg kell győződni arról, hogy a gépe konfigurálva van a WinRM távfelügyeletre. Indítsa el a PowerShellt rendszergazdaként, és hajtsa végre az alábbi parancsot, hogy biztosan be legyen állítva.

Enable-PSRemoting -Force

Megjegyzés

Ha a fentiek nem működnek, előfordulhat, hogy a WinRM szolgáltatás fut. Ezt a használatával teheti meg Get-Service WinRM

A telepítés befejezése után az alábbi paranccsal csatlakozhat a virtuális géphez

Enter-PSSession -ConnectionUri https://<public-ip-dns-of-the-vm>:5986 -Credential $cred -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) -Authentication Negotiate