Skip to content

Commit

Permalink
[vcpkg] Use SSH keys instead of password authentication when minting …
Browse files Browse the repository at this point in the history
…Linux scale sets (microsoft#11999)
  • Loading branch information
BillyONeal authored Jun 22, 2020
1 parent ee17a68 commit 2bf1f30
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
35 changes: 32 additions & 3 deletions scripts/azure-pipelines/linux/create-vmss.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ for more information.
This script assumes you have installed Azure tools into PowerShell by following the instructions
at https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-3.6.1
or are running from Azure Cloud Shell.
This script assumes you have installed the OpenSSH Client optional Windows component.
#>

$Location = 'westus2'
Expand All @@ -24,11 +26,26 @@ $LiveVMPrefix = 'BUILD'
$ErrorActionPreference = 'Stop'

$ProgressActivity = 'Creating Scale Set'
$TotalProgress = 10
$TotalProgress = 11
$CurrentProgress = 1

Import-Module "$PSScriptRoot/../create-vmss-helpers.psm1" -DisableNameChecking

####################################################################################################
Write-Progress `
-Activity $ProgressActivity `
-Status 'Creating SSH key' `
-PercentComplete (100 / $TotalProgress * $CurrentProgress++)

$sshDir = [System.IO.Path]::GetTempPath() + [System.IO.Path]::GetRandomFileName()
mkdir $sshDir
try {
ssh-keygen.exe -q -b 2048 -t rsa -f "$sshDir/key" -P [string]::Empty
$sshPublicKey = Get-Content "$sshDir/key.pub"
} finally {
Remove-Item $sshDir -Recurse -Force
}

####################################################################################################
Write-Progress `
-Activity $ProgressActivity `
Expand Down Expand Up @@ -174,7 +191,8 @@ $VM = Set-AzVMOperatingSystem `
-VM $VM `
-Linux `
-ComputerName $ProtoVMName `
-Credential $Credential
-Credential $Credential `
-DisablePasswordAuthentication

$VM = Add-AzVMNetworkInterface -VM $VM -Id $Nic.Id
$VM = Set-AzVMSourceImage `
Expand All @@ -185,6 +203,12 @@ $VM = Set-AzVMSourceImage `
-Version latest

$VM = Set-AzVMBootDiagnostic -VM $VM -Disable

$VM = Add-AzVMSshPublicKey `
-VM $VM `
-KeyData $sshPublicKey `
-Path "/home/AdminUser/.ssh/authorized_keys"

New-AzVm `
-ResourceGroupName $ResourceGroupName `
-Location $Location `
Expand Down Expand Up @@ -269,11 +293,16 @@ $Vmss = Add-AzVmssNetworkInterfaceConfiguration `
-NetworkSecurityGroupId $NetworkSecurityGroup.Id `
-Name $NicName

$VmssPublicKey = New-Object -TypeName 'Microsoft.Azure.Management.Compute.Models.SshPublicKey' `
-ArgumentList @('/home/AdminUser/.ssh/authorized_keys', $sshPublicKey)

$Vmss = Set-AzVmssOsProfile `
-VirtualMachineScaleSet $Vmss `
-ComputerNamePrefix $LiveVMPrefix `
-AdminUsername AdminUser `
-AdminPassword $AdminPW
-AdminPassword $AdminPW `
-LinuxConfigurationDisablePasswordAuthentication $true `
-PublicKey @($VmssPublicKey)

$Vmss = Set-AzVmssStorageProfile `
-VirtualMachineScaleSet $Vmss `
Expand Down
2 changes: 1 addition & 1 deletion scripts/azure-pipelines/windows/create-vmss.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ New-AzVm `
####################################################################################################
Write-Progress `
-Activity $ProgressActivity `
-Status 'Running provisioning script provision-image.ps1 in VM' `
-Status 'Running provisioning script provision-image.txt (as a .ps1) in VM' `
-PercentComplete (100 / $TotalProgress * $CurrentProgress++)

Invoke-AzVMRunCommand `
Expand Down

0 comments on commit 2bf1f30

Please sign in to comment.