Olá pessoal,
Recentemente precisei criar uma conta de usuário em vários servidores linux no azure, a conta era local e seria utilizada por um serviço para administração remota e teria a senha em formato de certificado RSA. No lugar de fazer o processo em cada servidor manualmente, inicialmente havia pensado em fazer um laço foreach e conectar em cada servidor, copiar o certificado da credencial e conceder os privilégios, mas ai lembrei que há uma extensão no azure chamada VMAccess e a versão para linux não só redefine as configurações do SSHD, mas também pode criar novos usuários, seja com senha ou com certificado RSA.
Primeiro utilizei o ssh-keygen para gerar a chave da credencial:
ssh-keygen -t rsa -b 2048 -f .\svc_application
Em seguida utilizei o laço foreach para iterar na lista de VMs que selecionei. Em seguida crio uma hashtable com os parametros do comando usando uma técnica chamada Splatting que ja expliquei em um artigo anterior, isso melhora a leitura do script e facilita o troubleshooting.
foreach ($VM in @(Get-AzVM | Out-GridView -OutputMode Multiple)) {
$AzVMExtension = @{
ResourceGroupName = $VM.ResourceGroupName
VMName = $VM.Name
Location = $VM.Location
Name = 'VMAccessForLinux'
Publisher = 'Microsoft.OSTCExtensions'
ExtensionType = 'VMAccessForLinux'
TypeHandlerVersion = '1.5'
Verbose = $true
Settingstring = '{}'
ProtectedSettingString = '{
"username": "svc_application",
"ssh_key": "ssh-rsa 6A94Ecd8WWLDfs7j1mnBILRElfP1viWN6rJ/T9WWfNe6ZMq7XKtFGchtHBGXeT5ZSCmIOurm5rQp6F4BHGrRRmRcP/ANDJrvlNH5N7lim6aWuyy+yuw/28BAeCyZMxTquJq/vc34fcFZLkclqeLQhAkY1GueGD7kCXJ/jmEyHRt5AIANDbHL07p+6YAF/DB6ANS9pTboQOfuvNVmW6pgG8duyajHjjS5EwTbIyfRaWNlu1E3j9uUzjglIYbxjBW4B+bZXUOfVoFoKfVARpHfsP5AFNSyh5WuPkU9bQzpUGYB/JQ1ZfyCZr+5EOZ7XOAzlApEFHaOGUA055dljxEelum6B/aI8meA+kAis1rqFRHALvC8zAF1"
}'
}
Set-AzVMExtension @AzVMExtension
}
2 Comments
up
up