다음을 통해 공유


Linux용 VMAccess 확장

VMAccess 확장은 관리 사용자를 관리하고, SSH를 구성하고, Azure Linux 가상 머신에서 디스크를 확인하거나 복구하는 데 사용됩니다. 확장은 Azure Resource Manager 템플릿과 통합됩니다. Azure CLI, Azure PowerShell, Azure Portal 및 Azure Virtual Machines REST API를 사용하여 호출할 수도 있습니다.

이 문서에서는 Azure CLI 및 Azure Resource Manager 템플릿을 통해 VMAccess 확장을 실행하는 방법을 설명합니다. 또한 Linux 시스템에 대한 문제 해결 단계도 제공합니다.

참고 항목

Microsoft Entra 로그인 확장을 설치한 후 VMAccess 확장을 사용하여 VM의 암호를 재설정하는 경우 Microsoft Entra 로그인 확장을 다시 실행하여 VM에 대해 Microsoft Entra 로그인을 다시 사용하도록 설정합니다.

필수 조건

지원되는 Linux 배포

Linux 배포판 x64 ARM64
Alma Linux 9.x+ 9.x+
Debian 10개 이상 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ 지원되지 않음
Oracle Linux 6.4+, 7.x+, 8.x+ 지원되지 않음
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+ 8.6+, 9.0+
Rocky Linux 9.x+ 9.x+
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

  • VMAccess는 액세스가 손실된 경우 VM에 대한 액세스를 다시 사용하도록 설계되었습니다. 이 원칙에 따라 사용자 이름 필드에 지정된 계정에 sudo 권한을 부여합니다. 사용자가 sudo 권한을 얻지 않으려면 VM에 로그인하고 기본 제공 도구(예: usermod, chage 등)를 사용하여 권한 없는 사용자를 관리합니다.
  • VM에는 하나의 확장 버전만 적용할 수 있습니다. 두 번째 작업을 실행하려면 기존 확장을 새 구성으로 업데이트합니다.
  • 사용자 업데이트 중에 VMAccess는 sshd_config 파일을 변경하고 미리 백업합니다. 원래 백업된 SSH 구성을 복원하려면 restore_backup_sshTrue로 설정하여 VMAccess를 실행합니다.

확장 스키마

VMAccess 확장 구성에는 사용자 이름, 암호, SSH 키 등에 대한 설정이 포함됩니다. 이 정보를 구성 파일에 저장하거나 명령줄에 지정하거나 ARM(Azure Resource Manager) 템플릿에 포함할 수 있습니다. 다음 JSON 스키마에는 공용 및 보호된 설정에서 사용할 수 있는 모든 속성이 포함되어 있습니다.

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "<name>",
  "apiVersion": "2023-09-01",
  "location": "<location>",
  "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
  ],
  "properties": {
    "publisher": "Microsoft.OSTCExtensions",
    "type": "VMAccessForLinux",
    "typeHandlerVersion": "1.5",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "check_disk": true,
      "repair_disk": false,
      "disk_name": "<disk-name>",
    },
    "protectedSettings": {
      "username": "<username>",
      "password": "<password>",
      "ssh_key": "<ssh-key>",
      "reset_ssh": false,
      "remove_user": "<username>",
      "expiration": "<expiration>",
      "remove_prior_keys": false,
      "restore_backup_ssh": true
    } 
  }
}

속성 값

이름 값/예제 데이터 형식
apiVersion 2023-09-01 날짜
publisher Microsoft.OSTCExtensions string
type VMAccessForLinux string
typeHandlerVersion 1.5 int

설정 속성 값

이름 데이터 형식 설명
check_disk 부울 값 디스크 검사 여부(선택 사항). check_diskrepair_disk 중 하나만 true로 설정할 수 있습니다.
repair_disk 부울 값 디스크 검사 여부(선택 사항). check_diskrepair_disk 중 하나만 true로 설정할 수 있습니다.
disk_name string 복구할 디스크의 이름입니다(repair_disk가 true인 경우에 필요).
사용자 이름 string 관리할 사용자의 이름입니다(사용자 계정의 모든 작업에 필요).
password string 사용자 계정에 설정할 암호입니다.
ssh_key string 사용자 계정에 추가할 SSH 공개 키입니다. SSH 키는 ssh-rsa, ssh-ed25519 또는 .pem 형식일 수 있습니다.
reset_ssh 부울 값 SSH를 다시 설정할지 여부입니다. true인 경우 sshd_config 파일을 해당 배포판의 기본 SSH 구성에 해당하는 내부 리소스 파일로 바꿉니다.
remove_user string 제거할 사용자의 이름입니다. reset_ssh, restore_backup_sshpassword와 함께 사용할 수 없습니다.
expiration string 계정에 대해 yyyy-mm-dd 형식으로 설정할 만료입니다. 기본값은 절대로 설정되지 않습니다.
remove_prior_keys 부울 값 새 키를 추가할 때 이전 SSH 키를 제거할지 여부입니다. ssh_key와 함께 사용해야 합니다.
restore_backup_ssh 부울 값 원래 백업 sshd_config를 복원할지 여부입니다.

템플릿 배포

ARM(Azure Resource Manager) 템플릿을 사용하여 Azure VM 확장을 배포할 수 있습니다. 이전 섹션에서 자세히 설명한 JSON 스키마를 ARM 템플릿에서 사용하여 템플릿 배포 중에 VMAccess 확장을 실행할 수 있습니다. GitHub에서 VMAccess 확장이 포함된 샘플 템플릿을 찾을 수 있습니다.

가상 머신 확장에 대한 JSON 구성은 템플릿의 가상 머신 리소스 조각, 특히 가상 머신 템플릿의 "resources": [] 개체 및 가상 머신 확장 집합의 "virtualMachineProfile":"extensionProfile":{"extensions" :[] 개체 내에 중첩되어야 합니다.

Azure CLI 배포

Azure CLI VM 사용자 명령 사용

az vm user 아래의 다음 CLI 명령은 VMAccess 확장을 사용합니다. 이러한 명령을 사용하려면 최신 Azure CLI를 설치하고 az login을 사용하여 Azure 계정에 로그인해야 합니다.

SSH 키 업데이트

다음 예제에서는 VM myVM에서 사용자 azureUser에 대한 SSH 키를 업데이트합니다.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

참고 항목

az vm user update 명령은 VM의 관리 사용자에 대한 ~/.ssh/authorized_keys 파일에 새 공개 키 텍스트를 추가합니다. 이 명령은 기존 SSH 키를 대체하거나 제거하지 않습니다. 이 명령은 배포 시 설정된 이전 키 또는 VMAccess 확장을 통한 후속 업데이트를 제거하지 않습니다.

암호 다시 설정

다음 예제에서는 VM myVM에서 사용자 azureUser에 대한 암호를 다시 설정합니다.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureUser \
  --password myNewPassword

SSH 다시 시작

다음 예제에서는 SSH 디먼을 다시 시작하고 SSH 구성을 myVM이라는 VM에서 기본값으로 다시 설정합니다.

az vm user reset-ssh \
  --resource-group myResourceGroup \
  --name myVM

참고 항목

az vm user reset-ssh 명령은 sshd_config 파일을 내부 리소스 디렉터리의 기본 구성 파일로 바꿉니다. 이 명령은 가상 머신에 있는 원래 SSH 구성을 복원하지 않습니다.

관리/sudo 사용자 만들기

다음 예제에서는 sudo 권한을 가진 myNewUser라는 사용자를 만듭니다. 계정은 myVM이라는 VM에서 인증을 위해 SSH 키를 사용합니다. 이 메서드는 현재 자격 증명을 분실하거나 잊어버린 상황에서 VM에 대한 액세스 권한을 다시 얻도록 지원합니다. 모범 사례로, sudo 권한이 있는 계정은 제한되어야 합니다.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser \
  --ssh-key-value ~/.ssh/id_rsa.pub

사용자 삭제

다음 예제에서는 VM myVM에서 사용자 myNewUser을 삭제합니다.

az vm user delete \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser

Azure CLI VM/VMSS 확장 명령 사용

az vm extension setaz vmss extension set 명령을 사용하여 지정된 구성으로 VMAccess 확장을 실행할 수도 있습니다.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.5 \
  --settings '{"check_disk":true}'
  --protected-settings '{"username":"user1","password":"userPassword"}'

--settings--protected-settings 매개 변수는 JSON 파일 경로도 허용합니다. 예를 들어 사용자의 SSH 공개 키를 업데이트하려면 update_ssh_key.json이라는 JSON 파일을 만들고 다음 형식으로 설정을 추가합니다. 파일 내의 값을 사용자 고유의 정보로 바꿉니다.

{
  "username":"azureuser",
  "ssh_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZ3S7gGp3rcbKmG2Y4vGZFMuMZCwoUzZNGxxxxxx2XV2x9FfAhy8iGD+lF8UdjFX3t5ebMm6BnnMh8fHwkTRdOt3LDQq8o8ElTBrZaKPxZN2thMZnODs5Hlemb2UX0oRIGRcvWqsd4oJmxsXa/Si98Wa6RHWbc9QZhw80KAcOVhmndZAZAGR+Wq6yslNo5TMOr1/ZyQAook5C4FtcSGn3Y+WczaoGWIxG4ZaWk128g79VIeJcIQqOjPodHvQAhll7qDlItVvBfMOben3GyhYTm7k4YwlEdkONm4yV/UIW0la1rmyztSBQIm9sZmSq44XXgjVmDHNF8UfCZ1ToE4r2SdwTmZv00T2i5faeYnHzxiLPA3Enub7xxxxxxwFArnqad7MO1SY1kLemhX9eFjLWN4mJe56Fu4NiWJkR9APSZQrYeKaqru4KUC68QpVasNJHbuxPSf/PcjF3cjO1+X+4x6L1H5HTPuqUkyZGgDO4ynUHbko4dhlanALcriF7tIfQR9i2r2xOyv5gxJEW/zztGqWma/d4rBoPjnf6tO7rLFHXMt/DVTkAfn5wxxtLDwkn5FMyvThRmex3BDf0gujoI1y6cOWLe9Y5geNX0oj+MXg/W0cXAtzSFocstV1PoVqy883hNoeQZ3mIGB3Q0rIUm5d9MA2bMMt31m1g3Sin6EQ== azureuser@myVM"
}

다음 명령을 통해 VMAccess 확장을 실행합니다.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.5 \
  --protected-settings update_ssh_key.json

Azure PowerShell 배포

Azure PowerShell을 사용하여 기존 가상 머신 또는 가상 머신 확장 집합에 VMAccess 확장을 배포할 수 있습니다. 다음을 실행하여 VM에 확장을 배포할 수 있습니다.

$username = "<username>"
$sshKey = "<cert-contents>"

$settings = @{"check_disk" = $true};
$protectedSettings = @{"username" = $username; "ssh_key" = $sshKey};

Set-AzVMExtension -ResourceGroupName "<resource-group>" `
    -VMName "<vm-name>" `
    -Location "<location>" `
    -Publisher "Microsoft.OSTCExtensions" `
    -ExtensionType "VMAccessForLinux" `
    -Name "VMAccessForLinux" `
    -TypeHandlerVersion "1.5" `
    -Settings $settings `
    -ProtectedSettings $protectedSettings

문자열을 사용하여 확장 설정을 제공하고 수정할 수도 있습니다.

$username = "<username>"
$sshKey = "<cert-contents>"

$settingsString = '{"check_disk":true}';
$protectedSettingsString = '{"username":"' + $username + '","ssh_key":"' + $sshKey + '"}';

Set-AzVMExtension -ResourceGroupName "<resource-group>" `
    -VMName "<vm-name>" `
    -Location "<location>" `
    -Publisher "Microsoft.OSTCExtensions" `
    -ExtensionType "VMAccessForLinux" `
    -Name "VMAccessForLinux" `
    -TypeHandlerVersion "1.5" `
    -SettingString $settingsString `
    -ProtectedSettingString $protectedSettingsString

가상 머신 확장 집합에 배포하려면 다음 명령을 실행합니다.

$resourceGroupName = "<resource-group>"
$vmssName = "<vmss-name>"

$protectedSettings = @{
  "username" = "azureUser"
  "password" = "userPassword"
}

$publicSettings = @{
  "repair_disk" = $true
  "disk_name" = "<disk_name>"
}

$vmss = Get-AzVmss `
            -ResourceGroupName $resourceGroupName `
            -VMScaleSetName $vmssName

Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
    -Name "<extension-name>" `
    -Publisher "Microsoft.OSTCExtensions" `
    -Type "VMAccessForLinux" `
    -TypeHandlerVersion "1.5"" `
    -AutoUpgradeMinorVersion $true `
    -Setting $publicSettings `
    -ProtectedSetting $protectedSettings

Update-AzVmss `
    -ResourceGroupName $resourceGroupName `
    -Name $vmssName `
    -VirtualMachineScaleSet $vmss

문제 해결 및 지원

VMAccess 확장 로그는 VM에 로컬로 존재하며 문제 해결 시 가장 유용한 정보를 제공합니다.

위치 설명
/var/log/waagent.log Linux 에이전트의 로그가 포함되어 있으며 확장에 대한 업데이트가 발생한 시기를 표시합니다. 확장이 실행되었는지 확인할 수 있습니다.
/var/log/azure/Microsoft.OSTCExtensions.VMAccessForLinux/* VMAccess 확장은 여기에서 찾을 수 있는 로그를 생성합니다. 디렉터리에는 각 실행에 대한 개별 로그를 포함하는 extension.log와 함께 실행된 각 명령과 결과를 찾을 수 있는 CommandExecution.log가 포함되어 있습니다.
/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-<most recent version>/config/* VMAccess VM 확장에 대한 구성 및 이진 파일입니다.

다음 명령을 실행하여 지정된 VM의 다른 확장과 함께 VMAccess 확장의 실행 상태를 검색할 수도 있습니다.

az vm extension list --resource-group myResourceGroup --vm-name myVM -o table

보다 자세한 정보는 Azure 커뮤니티 지원의 Azure 전문가에게 문의하세요. 또는 Azure 기술 지원 인시던트를 제출할 수 있습니다. Azure 지원으로 이동하여 지원받기를 선택합니다. Azure 지원에 대한 자세한 내용은 Azure 지원 플랜을 참조하세요.

다음 단계

코드, 현재 버전 및 추가 설명서를 보려면 VMAccess Linux - GitHub를 참조하세요.