다음을 통해 공유


Microsoft Entra ID 및 OpenSSH를 사용하여 Azure에서 Linux 가상 머신에 로그인

Azure에서 Linux VM(가상 머신)의 보안을 개선하기 위해 Microsoft Entra 인증과 통합할 수 있습니다. 이제 Microsoft Entra ID 및 OpenSSH 인증서 기반 인증을 통해 Microsoft Entra ID를 핵심 인증 플랫폼으로 사용하고 Linux VM에 대한 SSH에 대한 인증 기관을 사용할 수 있습니다. 이 기능을 통해 조직은 Azure RBAC(역할 기반 액세스 제어) 및 조건부 액세스 정책을 사용하여 VM에 대한 액세스 권한을 관리할 수 있습니다.

이 문서에서는 OpenSSH 인증서 기반 인증을 사용하여 Linux VM을 만들어 구성하고 Microsoft Entra ID로 로그인하는 방법을 보여줍니다.

OpenSSH 인증서 기반 인증과 함께 Microsoft Entra ID를 사용하여 Azure에서 Linux VM에 로그인하면 많은 보안 이점이 있습니다. 다음이 포함됩니다.

  • Microsoft Entra 자격 증명을 사용하여 Azure Linux VM에 로그인합니다.
  • 사용자에게 SSH 키를 배포하거나 배포하는 모든 Azure Linux VM에서 SSH 공개 키를 프로비전할 필요 없이 SSH 키 기반 인증을 받습니다. 이 환경은 무단 액세스를 유발할 수 있는 부실 SSH 공개 키의 확산에 대한 우려를 갖는 것보다 훨씬 간단합니다.
  • 로컬 관리자 계정, 자격 증명 탈취, 취약한 자격 증명의 영향을 줄입니다.
  • Microsoft Entra ID에 대한 암호 복잡성 및 암호 수명 정책을 구성하여 Linux VM을 보호합니다.
  • RBAC를 사용하여 일반 사용자로 또는 관리자 권한으로 VM에 로그인할 수 있는 사용자를 지정합니다. 사용자가 팀에 참가하면 적절한 액세스 권한을 부여하도록 VM에 대한 Azure RBAC 정책을 업데이트할 수 있습니다. 직원이 조직을 떠나고 해당 사용자 계정이 사용하지 않도록 설정되거나 Microsoft Entra ID에서 제거되면 더 이상 리소스에 액세스할 수 없습니다.
  • 조건부 액세스를 사용하는 경우 다단계 인증을 요구하거나 클라이언트 디바이스가 관리형 디바이스(예: 준수 디바이스 또는 Microsoft Entra 하이브리드 조인 디바이스)일 것을 요구하는 정책을 구성한 후, 해당 정책을 사용하여 Linux VM에 SSH를 수행할 수 있습니다.
  • Azure 배포 및 감사 정책을 사용하여 Linux VM에 대한 Microsoft Entra 로그인을 요구하고 승인되지 않은 로컬 계정에 플래그를 지정합니다.

Active Directory Federation Services를 사용하는 고객은 Microsoft Entra ID를 사용하여 Linux VM에 로그인할 수 있습니다.

지원되는 Linux 배포 및 Azure 지역

현재 지원되는 지역에 배포할 수 있는 Linux 배포는 다음과 같습니다.

배포 버전
CBL-Mariner(Common Base Linux Mariner) CBL-Mariner 1, CBL-Mariner 2
AlmaLinux AlmaLinux 8, AlmaLinux 9
Debian Debian 9, Debian 10, Debian 11, Debian 12
openSUSE openSUSE Leap 42.3, openSUSE Leap 15.1 이상
Oracle Oracle Linux 8, Oracle Linux 9
RHEL(RedHat Enterprise Linux) RHEL 7.4~RHEL 7.9, RHEL 8.3 이상, RHEL 9.0 이상
Rocky Rocky 8, Rocky 9
SLES(SUSE Linux Enterprise Server) SLES 12, SLES 15.1 이상
Ubuntu Ubuntu 16.04~Ubuntu 24.04

현재 이 기능이 지원되는 Azure 지역은 다음과 같습니다.

  • Azure 글로벌
  • Azure Government
  • 21Vianet에서 운영하는 Microsoft Azure

AKS(Azure Kubernetes Service) 클러스터에서 Azure CLI에 SSH 확장을 사용할 수 없습니다. 자세한 내용은 AKS에 대한 지원 정책을 참조하세요.

Azure CLI를 로컬로 설치하여 사용하기로 선택하는 경우 2.22.1 이상이어야 합니다. az --version을 실행하여 버전을 찾습니다. 설치하거나 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

참고

이 기능은 Azure Arc 지원 서버에서도 사용할 수 있습니다.

OpenSSH 인증서 기반 인증을 사용하여 Microsoft Entra ID로 로그인하기 위한 요구 사항을 충족합니다.

Azure에서 Linux VM에 대한 SSH 인증서 기반 인증을 통해 Microsoft Entra 로그인을 사용하도록 설정하려면 다음 네트워크, 가상 머신 및 클라이언트(SSH 클라이언트) 요구 사항을 충족해야 합니다.

네트워크

VM 네트워크 구성에서는 443 TCP 포트를 통해 다음 엔드포인트에 대한 아웃바운드 액세스를 허용해야 합니다.

Azure 글로벌:

  • https://packages.microsoft.com: 패키지 설치 및 업그레이드에 사용됩니다.
  • http://169.254.169.254: Azure Instance Metadata Service 엔드포인트입니다.
  • https://login.microsoftonline.com: PAM(플러그형 인증 모듈) 기반 인증 흐름에 사용됩니다.
  • https://pas.windows.net: Azure RBAC 흐름에 사용됩니다.

Azure Government:

  • https://packages.microsoft.com: 패키지 설치 및 업그레이드에 사용됩니다.
  • http://169.254.169.254: Azure Instance Metadata Service 엔드포인트입니다.
  • https://login.microsoftonline.us: PAM 기반 인증 흐름에 사용됩니다.
  • https://pasff.usgovcloudapi.net: Azure RBAC 흐름에 사용됩니다.

21Vianet에서 운영하는 Microsoft Azure:

  • https://packages.microsoft.com: 패키지 설치 및 업그레이드에 사용됩니다.
  • http://169.254.169.254: Azure Instance Metadata Service 엔드포인트입니다.
  • https://login.chinacloudapi.cn: PAM 기반 인증 흐름에 사용됩니다.
  • https://pas.chinacloudapi.cn: Azure RBAC 흐름에 사용됩니다.

가상 머신

VM이 다음 기능으로 구성되어 있는지 확인합니다.

  • 시스템이 할당한 관리 ID. 이 옵션은 Azure Portal을 사용하여 VM을 만들고 Microsoft Entra 로그인 옵션을 선택할 때 자동으로 선택됩니다. Azure CLI를 사용하여 신규 또는 기존 VM에서 시스템이 할당한 관리 ID를 사용하도록 설정할 수도 있습니다.
  • aadsshloginaadsshlogin-selinux(해당하는 경우). 이러한 패키지는 AADSSHLoginForLinux VM 확장을 사용하여 설치됩니다. 확장은 Azure Portal 또는 Azure CLI를 사용하여 VM을 만들고 Microsoft Entra 로그인(관리 탭)을 사용하도록 설정할 때 설치됩니다.

클라이언트

클라이언트가 다음 요구 사항을 충족하는지 확인합니다.

  • OpenSSH 기반 인증서를 인증에 사용할 수 있도록 SSH 클라이언트 지원. Azure CLI(2.21.1 이상)를 OpenSSH(Windows 10 버전 1803 이상에 포함) 또는 Azure Cloud Shell과 함께 사용하여 이 요구 사항을 충족할 수 있습니다.

  • Azure CLI용 SSH 확장. az extension add --name ssh를 사용하여 이 확장을 설치할 수 있습니다. 이 확장은 사전 설치되어 제공되므로 Azure Cloud Shell을 사용하는 경우 설치할 필요가 없습니다.

    OpenSSH 인증서를 지원하는 Azure CLI 또는 Azure Cloud Shell 이외의 다른 SSH 클라이언트를 사용하는 경우에도 SSH 확장과 함께 Azure CLI를 사용하여 임시 SSH 인증서와 필요에 따라 구성 파일을 검색해야 합니다. 그런 다음, SSH 클라이언트에서 구성 파일을 사용할 수 있습니다.

  • 클라이언트에서 VM의 공용 또는 개인 IP 주소로 TCP 연결. (연결이 있는 컴퓨터에 대한 ProxyCommand 또는 SSH 전달도 작동합니다.)

중요

PuTTY 기반 SSH 클라이언트는 이제 OpenSSH 인증서를 지원하며 Microsoft Entra OpenSSH 인증서 기반 인증을 사용하여 로그인하는 데 사용할 수 있습니다.

Azure에서 Linux VM에 대해 Microsoft Entra 로그인 사용

Azure에서 Linux VM에 대해 Microsoft Entra 로그인을 사용하려면 먼저 Linux VM에 대해 Microsoft Entra 로그인 옵션을 사용하도록 설정해야 합니다. 그런 다음, VM에 로그인할 수 있는 권한이 있는 사용자에 대한 Azure 역할 할당을 구성합니다. 마지막으로, Azure CLI 또는 Azure Cloud Shell과 같이 OpenSSH를 지원하는 SSH 클라이언트를 사용하여 Linux VM에 SSH를 수행합니다.

Linux VM에 대해 Microsoft Entra 로그인을 사용하도록 설정하는 방법에는 두 가지가 있습니다.

  • Linux VM을 만드는 경우 Azure Portal 환경
  • Linux VM을 만들거나 기존 VM을 사용하는 경우 Azure Cloud Shell 환경

Azure Portal

Azure Portal을 사용하면 지원되는 Linux 배포판에 대해 Microsoft Entra 로그인을 사용하도록 설정할 수 있습니다.

예를 들어 Microsoft Entra 로그인을 사용하여 Azure에서 Ubuntu Server 18.04 LTS(장기 지원) VM을 만들려면 다음을 수행합니다.

  1. VM을 만들 수 있는 액세스 권한이 있는 계정을 사용하여 Azure Portal에 로그인한 다음, + 리소스 만들기를 선택합니다.
  2. 인기 보기의 Ubuntu Server 18.04 LTS에서 만들기를 선택합니다.
  3. 관리 탭에서 다음을 수행합니다.
    1. Microsoft Entra ID로 로그인 확인란을 선택합니다.
    2. 시스템이 할당한 관리 ID 확인란이 선택되어 있는지 확인합니다.
  4. 가상 머신을 만드는 과정의 나머지 단계를 진행합니다. 사용자 이름과 암호 또는 SSH 공개 키를 사용하여 관리자 계정을 만들어야 합니다.

Azure Cloud Shell

Azure Cloud Shell은 이 항목의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 계정에서 사용할 수 있도록 공용 Azure 도구가 Cloud Shell에 사전 설치 및 구성되어 있습니다. 간단하게 복사 단추를 선택하여 코드를 복사하고, Cloud Shell에 붙여넣고, Enter 키를 선택하여 실행하면 됩니다.

Cloud Shell을 여는 몇 가지 방법이 있습니다.

  • 코드 블록의 오른쪽 위 모서리에서 시도를 선택합니다.
  • 브라우저에서 Cloud Shell을 엽니다.
  • Azure Portal의 오른쪽 위 모서리에 있는 메뉴에서 Cloud Shell 단추를 선택합니다.

Azure CLI를 로컬로 설치하여 사용하기로 선택하는 경우 이 문서를 진행하려면 2.22.1 이상 버전이 필요합니다. az --version을 실행하여 버전을 찾습니다. 설치하거나 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

  1. az group create 명령을 실행하여 리소스 그룹을 만듭니다.
  2. az vm create 명령을 실행하여 VM을 만듭니다. 지원되는 지역에서 지원되는 배포판을 사용합니다.
  3. az vm Extension set을 사용하여 Microsoft Entra 로그인 VM 확장을 설치합니다.

다음 예제에서는 VM을 배포한 다음, Linux VM에 대해 Microsoft Entra 로그인을 사용하도록 설정하는 확장을 설치합니다. VM 확장은 Azure Virtual Machines에서 배포 후 구성 및 Automation 작업을 제공하는 작은 애플리케이션입니다. 자신의 테스트 요구 사항을 지원하도록 예제를 사용자 지정합니다.

az group create --name AzureADLinuxVM --location southcentralus
az vm create \
    --resource-group AzureADLinuxVM \
    --name myVM \	
    --image Ubuntu2204 \
    --assign-identity \
    --admin-username azureuser \
    --generate-ssh-keys
az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADSSHLoginForLinux \
    --resource-group AzureADLinuxVM \
    --vm-name myVM

VM과 지원 리소스를 만드는 데 몇 분이 걸립니다.

AADSSHLoginForLinux 확장은 실행 중인 VM 에이전트가 있는 기존(지원되는 배포) Linux VM에 설치하여 Microsoft Entra 인증을 사용하도록 설정할 수 있습니다. 이전에 만든 VM에 이 확장을 배포하는 경우 VM에 1GB 이상의 메모리가 할당되어야 합니다. 그렇지 않으면 설치가 실패합니다.

확장이 VM에 성공적으로 설치되면 provisioningState 값이 Succeeded로 표시됩니다. VM에서 확장을 설치하려면 실행 중인 VM 에이전트가 필요합니다.

VM에 대한 역할 할당 구성

이제 VM을 만들었으므로 다음 Azure 역할 중 하나를 할당하여 VM에 로그인할 수 있는 사용자를 결정해야 합니다. 이러한 역할을 할당하려면 가상 머신 데이터 액세스 관리자 역할 또는 역할 기반 액세스 제어 관리자 역할과 같은 Microsoft.Authorization/roleAssignments/write 작업을 포함하는 역할이 있어야 합니다. 그러나 가상 머신 데이터 액세스 관리자와 다른 역할을 사용하는 경우 역할 할당을 만들 수 있는 권한을 줄이는 조건을 추가하는 것이 좋습니다.

  • 가상 머신 관리자 로그인: 이 역할이 할당된 사용자는 관리자 권한으로 Azure 가상 머신에 로그인할 수 있습니다.
  • 가상 머신 사용자 로그인: 이 역할이 할당된 사용자는 일반 사용자 권한으로 Azure 가상 머신에 로그인할 수 있습니다.

사용자가 SSH를 통해 VM에 로그인할 수 있도록 하려면 VM 및 관련 가상 네트워크, 네트워크 인터페이스, 공용 IP 주소 또는 Load Balancer 리소스를 포함하는 리소스 그룹에 가상 머신 관리자 로그인 또는 가상 머신 사용자 로그인 역할을 할당해야 합니다.

VM에 대해 소유자 또는 기여자 역할이 할당된 Azure 사용자에게는 SSH를 통해 VM에 대한 Microsoft Entra 로그인 권한이 자동으로 부여되지 않습니다. 가상 머신을 제어하는 사용자와 가상 머신에 액세스하는 사용자 사이에 의도적인(그리고 감사된) 분리가 있습니다.

VM에 대한 역할 할당을 구성하는 두 가지 방법이 있습니다.

  • Azure Portal 환경
  • Azure Cloud Shell 환경

참고

가상 머신 관리자 로그인 및 가상 머신 사용자 로그인 역할은 dataActions를 사용하며 관리 그룹, 구독, 리소스 그룹 또는 리소스 범위에서 할당할 수 있습니다. 개별 VM 수준이 아닌 관리 그룹, 구독 또는 리소스 그룹 수준에서 역할을 할당하는 것이 좋습니다. 이 방법은 구독당 Azure 역할 할당 제한에 도달할 위험을 방지합니다.

Azure Portal

Microsoft Entra ID 지원 Linux VM에 대한 역할 할당을 구성하려면 다음 안내를 따릅니다.

  1. 리소스 그룹으로는 VM 및 연결된 가상 머신, 네트워크 인터페이스, 공용 IP 주소 또는 Load Balancer 리소스가 포함된 리소스 그룹을 선택합니다.

  2. 액세스 제어(IAM)를 선택합니다.

  3. 추가>역할 할당 추가를 선택하여 역할 할당 추가 페이지를 엽니다.

  4. 다음 역할을 할당합니다. 자세한 단계는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

    설정
    역할 가상 머신 관리자 로그인 또는 가상 머신 사용자 로그인
    액세스 할당 대상 사용자, 그룹, 서비스 주체 또는 관리 ID

    역할 할당 추가 페이지를 보여주는 스크린샷

몇 분이 지나면 선택한 범위에서 보안 주체에 역할이 할당됩니다.

Azure Cloud Shell

다음 예제에서는 az role assignment create를 사용하여 현재 Azure 사용자의 VM에 대한 가상 머신 관리자 로그인 역할을 할당합니다. az account show 명령을 사용하여 현재 Azure 계정의 사용자 이름을 가져오고, az vm show 명령을 사용하여 이전 단계에서 만든 VM으로 범위를 설정합니다.

리소스 그룹 또는 구독 수준에서 범위를 할당할 수도 있습니다. 일반적인 Azure RBAC 상속 권한이 적용됩니다.

username=$(az account show --query user.name --output tsv)
rg=$(az group show --resource-group myResourceGroup --query id -o tsv)

az role assignment create \
    --role "Virtual Machine Administrator Login" \
    --assignee $username \
    --scope $rg

참고

Microsoft Entra 도메인과 로그인 사용자 이름 도메인이 일치하지 않는 경우 --assignee의 사용자 이름뿐만 아니라 --assignee-object-id를 사용하여 사용자 계정의 개체 ID를 지정해야 합니다. az ad user list 명령을 사용하여 사용자 계정의 개체 ID를 가져올 수 있습니다.

Azure RBAC를 사용하여 Azure 구독 리소스에 대한 액세스를 관리하는 방법에 대한 자세한 내용은 Azure 역할 할당 단계를 참조하세요.

Azure CLI용 SSH 확장 설치

Azure Cloud Shell을 사용하는 경우 Azure CLI 및 Azure CLI용 SSH 확장의 최소 필수 버전이 모두 Cloud Shell 환경에 이미 포함되어 있으므로 다른 설정은 필요하지 않습니다.

다음 명령을 실행하여 Azure CLI에 대한 SSH 확장을 추가합니다.

az extension add --name ssh

확장에 필요한 최소 버전은 0.1.4입니다. 다음 명령을 사용하여 설치된 버전을 확인합니다.

az extension show --name ssh

조건부 액세스 정책 적용

다음과 같이 Microsoft Entra 로그인으로 사용하도록 설정되는 조건부 액세스 정책을 적용할 수 있습니다.

  • 다단계 인증이 필요합니다.
  • SSH 클라이언트를 실행하는 디바이스에는 호환 디바이스 또는 Microsoft Entra 하이브리드 조인 디바이스가 필요합니다.
  • Azure에서 Linux VM에 대한 액세스 권한을 부여하기 전에 위험을 확인합니다.

조건부 액세스 정책에 표시되는 애플리케이션을 Azure Linux VM 로그인이라고 합니다.

참고

SSH 클라이언트를 실행하는 디바이스에서 디바이스 규정 준수 또는 Microsoft Entra 하이브리드 조인을 요구하는 조건부 액세스 정책 적용은 Windows 및 macOS에서 실행되는 Azure CLI에서만 작동합니다. Linux 또는 Azure Cloud Shell에서 Azure CLI를 사용하는 경우에는 지원되지 않습니다.

누락된 애플리케이션

조건부 액세스에서 Azure Linux VM 로그인 애플리케이션이 누락된 경우 애플리케이션이 테넌트에 없는지 확인합니다.

  1. 최소한 클라우드 애플리케이션 관리자 권한으로 Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>애플리케이션>엔터프라이즈 애플리케이션으로 이동합니다.
  3. 필터를 제거하여 모든 애플리케이션을 표시하고 가상 머신을 검색합니다. 결과적으로 Microsoft Azure Linux 가상 머신 로그인이 표시되지 않으면 서비스 주체가 테넌트에서 누락된 것입니다.

Microsoft Entra 사용자 계정을 사용하여 Linux VM에 SSH로 로그인합니다.

Azure CLI를 사용하여 로그인

az login을 입력합니다. 이 명령은 Microsoft Entra 계정을 사용하여 로그인할 수 있는 브라우저 창을 엽니다.

az login 

그런 다음, az ssh vm을 입력합니다. 다음 예제에서는 VM에 대한 적절한 IP 주소를 자동으로 확인합니다.

az ssh vm -n myVM -g AzureADLinuxVM

메시지가 표시되면 로그인 페이지에 Microsoft Entra 로그인 자격 증명을 입력하고 다단계 인증을 수행하거나 디바이스 검사를 충족합니다. Azure CLI 세션이 필수 조건부 액세스 조건을 충족하지 않는 경우에만 메시지가 표시됩니다. 브라우저 창을 닫고 SSH 프롬프트로 돌아가면 VM에 자동으로 연결됩니다.

이제 할당된 대로 VM 사용자 또는 VM 관리자와 같은 역할 권한이 있는 Linux 가상 머신에 로그인했습니다. 사용자 계정에 가상 머신 관리자 로그인 역할이 할당된 경우 sudo를 사용하여 루트 권한이 필요한 명령을 실행할 수 있습니다.

Azure Cloud Shell을 사용하여 로그인

클라이언트 컴퓨터에 로컬로 설치할 필요 없이 Azure Cloud Shell을 사용하여 VM에 연결할 수 있습니다. Azure Portal 오른쪽 위 모서리에 있는 셸 아이콘을 선택하여 Cloud Shell을 시작합니다.

로그인한 사용자의 컨텍스트에서 Cloud Shell이 세션에 자동으로 연결됩니다. az login을 다시 실행하고 대화형 로그인 흐름을 진행합니다.

az login

그런 다음, 일반 az ssh vm 명령을 사용하여 VM의 이름, 리소스 그룹 또는 IP 주소를 사용하여 연결할 수 있습니다.

az ssh vm -n myVM -g AzureADLinuxVM

참고

Azure Cloud Shell을 사용하는 경우 디바이스 규정 준수 또는 Microsoft Entra 하이브리드 조인을 요구하는 조건부 액세스 정책 적용이 지원되지 않습니다.

Microsoft Entra 서비스 주체를 사용하여 Linux VM에 SSH로 로그인합니다.

Azure CLI는 사용자 계정 대신 서비스 주체를 통해 인증을 지원합니다. 서비스 주체는 특정 사용자와 연결되지 않으므로, 고객은 VM에 SSH하는 데 서비스 주체를 사용하여 자동화 시나리오를 지원할 수 있습니다. 서비스 주체에는 VM 관리자 또는 VM 사용자 권한이 할당되어 있어야 합니다. 구독 또는 리소스 그룹 수준에서 권한을 할당합니다.

다음 예제에서는 리소스 그룹 수준에서 서비스 주체에 VM 관리자 권한을 할당합니다. 서비스 주체 개체 ID, 구독 ID 및 리소스 그룹 이름의 자리 표시자를 바꿉니다.

az role assignment create \
    --role "Virtual Machine Administrator Login" \
    --assignee-object-id <service-principal-objectid> \
    --assignee-principal-type ServicePrincipal \
    --scope "/subscriptions/<subscription-id>/resourceGroups/<resourcegroup-name>"

다음 예제를 사용하여 서비스 주체로 Azure CLI에 인증합니다. 자세한 내용은 서비스 주체를 사용하여 Azure CLI에 로그인 문서를 참조하세요.

az login --service-principal -u <sp-app-id> -p <password-or-cert> --tenant <tenant-id>

서비스 사용자를 사용한 인증이 완료되면 일반 Azure CLI SSH 명령을 사용하여 VM에 연결합니다.

az ssh vm -n myVM -g AzureADLinuxVM

OpenSSH를 지원하는 SSH 클라이언트에서 사용할 SSH 구성 내보내기

Microsoft Entra ID를 사용하여 Azure Linux VM에 로그인하면 OpenSSH 인증서 및 구성 내보내기가 지원됩니다. 즉, OpenSSH 기반 인증서를 지원하는 모든 SSH 클라이언트를 사용하여 Microsoft Entra ID를 통해 로그인할 수 있습니다. 다음 예제에서는 VM에 할당된 모든 IP 주소에 대한 구성을 내보냅니다.

az ssh config --file ~/.ssh/config -n myVM -g AzureADLinuxVM

또는 IP 주소만 지정하여 구성을 내보낼 수 있습니다. 다음 예제의 IP 주소를 VM에 대한 공용 또는 개인 IP 주소로 바꿉니다. (개인 IP에 대한 고유의 연결을 사용해야 합니다.) 이 명령에 대한 도움말을 보려면 az ssh config -h를 입력합니다.

az ssh config --file ~/.ssh/config --ip 10.11.123.456

그런 다음, 일반적인 OpenSSH 사용을 통해 VM에 연결할 수 있습니다. OpenSSH를 사용하는 모든 SSH 클라이언트를 통해 연결을 수행할 수 있습니다.

Microsoft Entra 로그인으로 sudo 실행

VM 관리자 역할이 할당된 사용자는 Linux VM에 SSH를 성공적으로 수행하면 다른 상호 작용 또는 인증 요구 사항 없이 sudo를 실행할 수 있습니다. VM 사용자 역할이 할당된 사용자는 sudo를 실행할 수 없습니다.

가상 머신 확장 집합의 VM에 연결

가상 머신 확장 집합이 지원되지만, 가상 머신 확장 집합의 VM을 설정하고 연결하는 단계는 약간 다릅니다.

  1. 가상 머신 확장 집합을 만들거나 이미 있는 가상 머신 확장 집합을 선택합니다. 시스템이 할당한 관리 ID를 가상 머신 확장 집합에 사용하도록 설정합니다.

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. Microsoft Entra 확장을 가상 머신 확장 집합에 설치합니다.

    az vmss extension set --publisher Microsoft.Azure.ActiveDirectory --name AADSSHLoginForLinux --resource-group AzureADLinuxVM --vmss-name myVMSS
    

가상 머신 확장 집합에는 일반적으로 공용 IP 주소가 없습니다. Azure 가상 네트워크에 연결할 수 있는 다른 머신에서 연결해야 합니다. 이 예제에서는 가상 머신 확장 집합 VM의 개인 IP를 사용하여 동일한 가상 네트워크의 머신에서 연결하는 방법을 보여줍니다.

az ssh vm --ip 10.11.123.456

참고

--resource-group--name 스위치를 사용하여 가상 머신 확장 집합 VM의 IP 주소를 자동으로 확인할 수 없습니다.

이전(미리 보기) 버전에서 마이그레이션

디바이스 코드 흐름을 기반으로 하는 이전 버전의 Linux용 Microsoft Entra 로그인을 사용하는 경우 Azure CLI를 사용하여 다음 단계를 완료합니다.

  1. 다음과 같이 VM에서 AADLoginForLinux 확장을 제거합니다.

    az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinux
    

    참고

    현재 VM에 로그인된 Microsoft Entra 사용자가 있는 경우 확장 제거가 실패할 수 있습니다. 먼저 모든 사용자가 로그아웃했는지 확인하세요.

  2. 다음과 같이 VM에서 시스템이 할당한 관리 ID를 사용하도록 설정합니다.

    az vm identity assign -g myResourceGroup -n myVm
    
  3. 다음과 같이 VM에 AADSSHLoginForLinux 확장을 설치합니다.

    az vm extension set \
        --publisher Microsoft.Azure.ActiveDirectory \
        --name AADSSHLoginForLinux \
        --resource-group myResourceGroup \
        --vm-name myVM
    

Azure Policy를 사용하여 표준 충족 및 규정 준수 평가

Azure Policy를 사용하여 다음을 수행합니다.

  • 신규 및 기존 Linux 가상 머신에 대해 Microsoft Entra 로그인이 사용하도록 설정되어 있는지 확인합니다.
  • 규정 준수 대시보드에서 현재 환경의 규정 준수를 대규모로 평가합니다.

이 기능을 사용하면 여러 수준에서 적용할 수 있습니다. Microsoft Entra 로그인이 사용하도록 설정되지 않은 환경 내에서 신규 및 기존 Linux VM에 플래그를 지정할 수 있습니다. Azure Policy를 사용하여 Microsoft Entra 확장을 Microsoft Entra 로그인이 사용하도록 설정되지 않은 새 Linux VM에 배포하고 기존 Linux VM을 동일한 표준으로 업데이트할 수도 있습니다.

이러한 기능 외에도, Azure Policy를 사용하여 머신에서 만든 승인되지 않은 로컬 계정이 있는 Linux VM을 검색하고 플래그를 지정할 수 있습니다. 자세한 내용은 Azure Policy를 검토하세요.

로그인 문제 해결

다음 섹션을 사용하여 Microsoft Entra 자격 증명을 사용하여 SSH를 시도할 때 발생할 수 있는 일반적인 오류를 수정합니다.

로컬 캐시에서 토큰을 검색할 수 없음

로컬 캐시에서 토큰을 검색할 수 없다는 메시지가 표시되면 az login 명령을 다시 실행하고 대화형 로그인 흐름을 진행해야 합니다. Azure Cloud Shell을 사용하여 로그인하는 방법에 대한 섹션을 검토합니다.

액세스 거부: Azure 역할 할당되지 않음

SSH 프롬프트에 "Azure 역할이 할당되지 않음" 오류가 표시되면 사용자에게 가상 머신 관리자 로그인 역할 또는 가상 머신 사용자 로그인 역할을 부여하는 VM에 대한 Azure RBAC 정책을 구성했는지 확인합니다. Azure 역할 할당에 문제가 있는 경우 Azure RBAC 문제 해결 문서를 참조하세요.

이전 확장(AADLoginForLinux) 삭제 문제

제거 스크립트가 실패하면 확장이 전환 상태에서 중단될 수 있습니다. 이러한 상황이 발생하면 확장은 제거 과정에서 제거해야 하는 패키지를 남길 수 있습니다. 이 경우 이전 패키지를 수동으로 제거한 다음, az vm extension delete 명령을 실행하는 것이 좋습니다.

이전 패키지를 제거하려면 다음을 수행합니다.

  1. 관리자 권한이 있는 로컬 사용자로 로그인합니다.
  2. 로그인한 Microsoft Entra 사용자가 없는지 확인합니다. who -u 명령을 호출하여 로그인한 사용자를 확인합니다. 그런 다음, 이전 명령에서 보고한 모든 세션 프로세스에 sudo kill <pid>를 사용합니다.
  3. sudo apt remove --purge aadlogin(Ubuntu/Debian), sudo yum remove aadlogin(RHEL) 또는 sudo zypper remove aadlogin(openSUSE 또는 SLES)을 실행합니다.
  4. 명령이 실패하는 경우 스크립트가 사용하지 않도록 설정된 하위 수준 도구를 사용해 봅니다.
    1. Ubuntu/Debian의 경우 sudo dpkg --purge aadlogin 명령을 실행합니다. 스크립트로 인해 여전히 명령이 실패하는 경우 /var/lib/dpkg/info/aadlogin.prerm 파일을 삭제하고 다시 시도합니다.
    2. 그 외에는 rpm -e --noscripts aadogin 명령을 실행합니다.
  5. aadlogin-selinux 패키지에 대해 3~4단계를 반복합니다.

확장 설치 오류

기존 컴퓨터에 AADSSHLoginForLinux VM 확장을 설치하려고 하면 다음과 같은 알려진 오류 코드 중 하나와 함께 설치가 실패할 수 있습니다.

0이 아닌 종료 코드 22

종료 코드 22가 표시되면 포털에서 AADSSHLoginForLinux VM 확장의 상태가 전환 중으로 표시됩니다.

이 오류는 시스템이 할당한 관리 ID가 필요하기 때문에 발생합니다.

해결 방법은 다음과 같습니다.

  1. 실패한 확장을 제거합니다.
  2. Azure VM에서 시스템이 할당한 관리 ID를 사용하도록 설정합니다.
  3. 확장 설치 명령을 다시 실행합니다.

0이 아닌 종료 코드 23

종료 코드 23이 표시되면 포털에서 AADSSHLoginForLinux VM 확장의 상태가 전환 중으로 표시됩니다.

이 오류는 이전 AADLoginForLinux VM 확장이 여전히 설치되어 있기 때문에 발생합니다.

해결 방법은 VM에서 이전 AADLoginForLinux VM 확장을 제거하는 것입니다. 포털에서 새 AADSSHLoginForLinux VM 확장의 상태가 프로비전 성공으로 변경됩니다.

HTTP 프록시 사용 시 설치 실패

확장에는 패키지를 설치하고 시스템 ID가 있는지 확인하기 위해 HTTP 연결이 필요합니다. 이는 walinuxagent.service의 컨텍스트에서 실행되며 에이전트에 프록시 설정을 알리기 위한 변경이 필요합니다. 대상 컴퓨터에서 /lib/systemd/system/walinuxagent.service 파일을 열고 [Service] 뒤에 다음 줄을 추가합니다.

[Service]
Environment="http_proxy=http://proxy.example.com:80/"
Environment="https_proxy=http://proxy.example.com:80/"
Environment="no_proxy=169.254.169.254"

에이전트(sudo systemctl restart walinuxagent)를 다시 시작합니다. 이제 다시 시도해 보세요.

KeyError access_token과 함께 az ssh vm 명령이 실패

az ssh vm 명령이 실패하면 오래된 버전의 Azure CLI 클라이언트를 사용 중인 것입니다.

해결 방법은 Azure CLI 클라이언트를 버전 2.21.0 이상으로 업그레이드하는 것입니다.

SSH 연결이 닫힘

사용자가 az login을 사용하여 성공적으로 로그인한 후에 az ssh vm -ip <address> 또는 az ssh vm --name <vm_name> -g <resource_group>을 통해 VM에 연결하는 데 실패하고 "22 <ip_address> 포트로 인한 연결 종료"가 표시될 수 있습니다.

이 오류가 발생하는 원인 중 하나는 이 VM의 범위 내에서 사용자에게 가상 머신 관리자 로그인 또는 가상 머신 사용자 로그인 역할이 할당되지 않았기 때문입니다. 이 경우 해결 방법은 이 VM의 범위 내에서 해당 Azure RBAC 역할 중 하나에 사용자를 추가하는 것입니다.

사용자가 필수 Azure RBAC 역할에 있지만 VM에서 시스템이 할당한 관리 ID를 사용하도록 설정되지 않은 경우에 이 오류가 발생할 수 있습니다. 이 경우 다음 작업을 수행합니다.

  1. VM에서 시스템이 할당한 관리 ID를 사용하도록 설정합니다.
  2. 몇 분 정도 기다렸다가 사용자가 az ssh vm --ip <ip_address> 명령을 사용하여 연결을 시도할 수 있도록 허용합니다.

가상 머신 확장 집합과 연결 문제

가상 머신 확장 집합 인스턴스가 이전 모델을 실행하는 경우 가상 머신 확장 집합과 VM 연결이 실패할 수 있습니다.

확장 집합 인스턴스를 최신 모델로 업그레이드하면 문제가 해결될 수 있으며, 특히 Microsoft Entra 로그인 확장을 설치한 후 업그레이드를 아직 하지 않았다면 최신 모델로 업그레이드하여 문제를 해결할 수 있습니다. 인스턴스를 업그레이드하면 표준 확장 집합 구성이 개별 인스턴스에 적용됩니다.

sshd_config의 AllowGroups 또는 DenyGroups 문으로 인해 Microsoft Entra 사용자의 첫 번째 로그인이 실패함

sshd_configAllowGroups 또는 DenyGroups 문이 포함된 경우 Microsoft Entra 사용자의 첫 번째 로그인이 실패합니다. 사용자가 이미 로그인에 성공한 후 문이 추가되었으면 사용자가 로그인할 수 있습니다.

한 가지 해결 방법은 sshd_config에서 AllowGroupsDenyGroups 문을 제거하는 것입니다.

또 다른 해결 방법은 AllowGroupsDenyGroupssshd_configmatch user 섹션으로 이동하는 것입니다. 일치 템플릿이 Microsoft Entra 사용자를 제외하는지 확인합니다.

Azure Shell에서 Linux Red Hat/Oracle 7.X VM에 연결하려고 할 때 권한 가져오기가 거부되었습니다.

대상 VM 7.4의 OpenSSH 서버 버전이 너무 오래되었습니다. OpenSSH 클라이언트 버전 8.8과 호환되지 않는 버전입니다. 자세한 내용은 RSA SHA256 인증서가 더 이상 작동하지 않음을 참조하세요.

해결 방법:

  • az ssh vm 명령에 "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" 옵션 추가
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • /home/<user>/.ssh/config file"PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" 옵션 추가

"PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com"을 클라이언트 구성 파일에 추가합니다.

Host *
PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com

다음 단계