Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Windows-datorer ✔️
Här är de steg du behöver vidta för att konfigurera en virtuell dator med WinRM-anslutning
- Skapa en Key Vault-lösning
- Skapa ett självsignerat certifikat
- Ladda upp ditt självsignerade certifikat till Key Vault
- Hämta URL:en för ditt självsignerade certifikat i Key Vault
- Referera till url:en för självsignerade certifikat när du skapar en virtuell dator
Steg 1: Skapa ett Nyckelvalv
Du kan använda kommandot nedan för att skapa Key Vault
New-AzKeyVault -VaultName "<vault-name>" -ResourceGroupName "<rg-name>" -Location "<vault-location>" -EnabledForDeployment -EnabledForTemplateDeployment
Steg 2: Skapa ett självsignerat certifikat
Du kan skapa ett självsignerat certifikat med det här PowerShell-skriptet
$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
Steg 3: Ladda upp ditt självsignerade certifikat till Key Vault
Innan du laddar upp certifikatet till nyckelvalvet som skapades i steg 1 måste det konverteras till ett format som Microsoft.Compute-resursprovidern kommer att förstå. Med PowerShell-skriptet nedan kan du göra det
$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
$encoding = [System.Text.Encoding]::UTF8
$jsonEncoded = [System.Convert]::ToBase64String($encoding.GetBytes($jsonObject))
$secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText –Force
Set-AzKeyVaultSecret -VaultName "<vault name>" -Name "<secret name>" -SecretValue $secret
Steg 4: Hämta URL:en för ditt självsignerade certifikat i Key Vault
Resursleverantören Microsoft.Compute behöver en URL till den hemliga nyckeln i Key Vault vid upprättandet av den virtuella datorn. På så sätt kan Microsoft.Compute-resursprovidern ladda ned hemligheten och skapa motsvarande certifikat på den virtuella datorn.
Kommentar
Url:en för hemligheten måste även innehålla versionen. En exempel-URL ser ut som nedan https://contosovault.vault.azure.net:443/secrets/contososecret/01h9db0df2cd4300a20ence585a6s7ve
Mallar
Du kan hämta länken till URL:en i mallen med hjälp av koden nedan
"certificateUrl": "[reference(resourceId(resourceGroup().name, 'Microsoft.KeyVault/vaults/secrets', '<vault-name>', '<secret-name>'), '2015-06-01').secretUriWithVersion]"
PowerShell
Du kan hämta den här URL:en med hjälp av powershell-kommandot nedan
$secretURL = (Get-AzKeyVaultSecret -VaultName "<vault name>" -Name "<secret name>").Id
Steg 5: Referera till din självsignerade certifikat-URL när du skapar en virtuell dator
Azure Resource Manager-mallar
När du skapar en virtuell dator via mallar refereras certifikatet i avsnittet hemligheter och avsnittet winRM enligt nedan:
"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>"
}
]
},
...
}
},
En exempelmall för ovanstående finns här på vm-winrm-keyvault-windows
Källkoden för den här mallen finns på 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
Steg 6: Ansluta till den virtuella datorn
Innan du kan ansluta till den virtuella datorn måste du se till att datorn är konfigurerad för WinRM-fjärrhantering. Starta PowerShell som administratör och kör kommandot nedan för att kontrollera att du är konfigurerad.
Enable-PSRemoting -Force
Kommentar
Du kan behöva kontrollera att WinRM-tjänsten körs om ovanstående inte fungerar. Du kan göra det med hjälp av Get-Service WinRM
När installationen är klar kan du ansluta till den virtuella datorn med hjälp av kommandot nedan
Enter-PSSession -ConnectionUri https://<public-ip-dns-of-the-vm>:5986 -Credential $cred -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) -Authentication Negotiate