Udostępnij za pośrednictwem


Logowanie się do maszyny wirtualnej z systemem Linux na platformie Azure przy użyciu identyfikatora Entra firmy Microsoft i protokołu OpenSSH

Aby zwiększyć bezpieczeństwo maszyn wirtualnych z systemem Linux na platformie Azure, możesz zintegrować je z uwierzytelnianiem firmy Microsoft Entra. Teraz możesz użyć identyfikatora Entra firmy Microsoft jako podstawowej platformy uwierzytelniania i urzędu certyfikacji do protokołu SSH na maszynie wirtualnej z systemem Linux przy użyciu uwierzytelniania opartego na certyfikatach Microsoft Entra ID i OpenSSH. Ta funkcja umożliwia organizacjom zarządzanie dostępem do maszyn wirtualnych przy użyciu kontroli dostępu opartej na rolach (RBAC) platformy Azure i zasad dostępu warunkowego.

W tym artykule pokazano, jak utworzyć i skonfigurować maszynę wirtualną z systemem Linux oraz zalogować się przy użyciu identyfikatora Entra firmy Microsoft przy użyciu uwierzytelniania opartego na certyfikatach OpenSSH.

Istnieje wiele zalet zabezpieczeń związanych z używaniem identyfikatora Entra firmy Microsoft z uwierzytelnianiem opartym na certyfikatach OpenSSH w celu logowania się do maszyn wirtualnych z systemem Linux na platformie Azure. To na przykład:

  • Użyj poświadczeń usługi Microsoft Entra, aby zalogować się do maszyn wirtualnych platformy Azure z systemem Linux.
  • Uzyskiwanie uwierzytelniania opartego na kluczach SSH bez konieczności dystrybuowania kluczy SSH do użytkowników lub aprowizowania kluczy publicznych SSH na wszystkich wdrażanych maszynach wirtualnych platformy Azure z systemem Linux. To środowisko jest znacznie prostsze niż konieczność martwienia się o rozrastanie nieaktualnych kluczy publicznych SSH, które mogą spowodować nieautoryzowany dostęp.
  • Zmniejsz zależność od kont administratorów lokalnych, kradzież poświadczeń i słabych poświadczeń.
  • Pomóż zabezpieczyć maszyny wirtualne z systemem Linux, konfigurując złożoność hasła i zasady okresu istnienia hasła dla identyfikatora Entra firmy Microsoft.
  • Za pomocą kontroli dostępu opartej na rolach określ, kto może zalogować się do maszyny wirtualnej jako zwykły użytkownik lub z uprawnieniami administratora. Gdy użytkownicy dołączają do zespołu, możesz zaktualizować zasady RBAC platformy Azure dla maszyny wirtualnej w celu udzielenia dostępu zgodnie z potrzebami. Gdy pracownicy opuszczają organizację i ich konta użytkowników są wyłączone lub usuwane z identyfikatora Entra firmy Microsoft, nie mają już dostępu do Twoich zasobów.
  • W przypadku dostępu warunkowego skonfiguruj zasady, aby wymagać uwierzytelniania wieloskładnikowego lub wymagać, aby urządzenie klienckie było zarządzane (na przykład zgodne lub dołączone hybrydo do firmy Microsoft Entra), zanim będzie można używać go protokołu SSH na maszynach wirtualnych z systemem Linux.
  • Użyj zasad wdrażania i inspekcji platformy Azure, aby wymagać logowania do usługi Microsoft Entra dla maszyn wirtualnych z systemem Linux i flagi niezatwierdzonych kont lokalnych.

Logowanie się do maszyn wirtualnych z systemem Linux przy użyciu identyfikatora Entra firmy Microsoft działa dla klientów korzystających z usług Active Directory Federation Services.

Obsługiwane dystrybucje systemu Linux i regiony platformy Azure

Następujące dystrybucje systemu Linux są obecnie obsługiwane w przypadku wdrożeń w obsługiwanym regionie:

Dystrybucja Wersja
Common Base Linux Mariner (CBL-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
RedHat Enterprise Linux (RHEL) RHEL 7.4 do RHEL 7.9, RHEL 8.3+, RHEL 9.0+
Skalisty Rocky 8, Rocky 9
SUSE Linux Enterprise Server (SLES) SLES 12, SLES 15.1+
Ubuntu Ubuntu 16.04 do Ubuntu 24.04

Następujące regiony platformy Azure są obecnie obsługiwane w przypadku tej funkcji:

  • Globalna platforma Azure
  • Azure Government
  • Platforma Microsoft Azure obsługiwana przez firmę 21Vianet

Użycie rozszerzenia SSH dla interfejsu wiersza polecenia platformy Azure w klastrach usługi Azure Kubernetes Service (AKS) nie jest obsługiwane. Aby uzyskać więcej informacji, zobacz Zasady pomocy technicznej dla usługi AKS.

Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia platformy Azure i korzystać z niego lokalnie, musi to być wersja 2.22.1 lub nowsza. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Uwaga

Ta funkcja jest również dostępna dla serwerów z obsługą usługi Azure Arc.

Spełnianie wymagań dotyczących logowania przy użyciu identyfikatora Entra firmy Microsoft przy użyciu uwierzytelniania opartego na certyfikatach OpenSSH

Aby włączyć logowanie firmy Microsoft za pośrednictwem uwierzytelniania opartego na certyfikatach SSH dla maszyn wirtualnych z systemem Linux na platformie Azure, upewnij się, że spełnisz następujące wymagania dotyczące sieci, maszyny wirtualnej i klienta (klienta SSH).

Sieć

Konfiguracja sieci maszyny wirtualnej musi zezwalać na dostęp wychodzący do następujących punktów końcowych za pośrednictwem portu TCP 443.

Globalna platforma Azure:

  • https://packages.microsoft.com: w przypadku instalacji i uaktualnień pakietu.
  • http://169.254.169.254: punkt końcowy usługi Azure Instance Metadata Service.
  • https://login.microsoftonline.com: w przypadku przepływów uwierzytelniania opartych na usłudze PAM (moduły uwierzytelniania z możliwością podłączania).
  • https://pas.windows.net: w przypadku przepływów kontroli dostępu opartej na rolach platformy Azure.

Azure Government:

  • https://packages.microsoft.com: w przypadku instalacji i uaktualnień pakietu.
  • http://169.254.169.254: punkt końcowy usługi Azure Instance Metadata Service.
  • https://login.microsoftonline.us: w przypadku przepływów uwierzytelniania opartych na usłudze PAM.
  • https://pasff.usgovcloudapi.net: w przypadku przepływów kontroli dostępu opartej na rolach platformy Azure.

Platforma Microsoft Azure obsługiwana przez firmę 21Vianet:

  • https://packages.microsoft.com: w przypadku instalacji i uaktualnień pakietu.
  • http://169.254.169.254: punkt końcowy usługi Azure Instance Metadata Service.
  • https://login.chinacloudapi.cn: w przypadku przepływów uwierzytelniania opartych na usłudze PAM.
  • https://pas.chinacloudapi.cn: w przypadku przepływów kontroli dostępu opartej na rolach platformy Azure.

Maszyna wirtualna

Upewnij się, że maszyna wirtualna jest skonfigurowana przy użyciu następujących funkcji:

  • Tożsamość zarządzana przypisana przez system. Ta opcja jest wybierana automatycznie, gdy używasz witryny Azure Portal do tworzenia maszyn wirtualnych i wybierz opcję Logowania firmy Microsoft Entra. Tożsamość zarządzana przypisana przez system można również włączyć na nowej lub istniejącej maszynie wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure.
  • aadsshlogin i aadsshlogin-selinux (odpowiednio). Te pakiety są instalowane z rozszerzeniem maszyny wirtualnej AADSSHLoginForLinux. Rozszerzenie jest instalowane podczas korzystania z witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure do tworzenia maszyn wirtualnych i włączania logowania microsoft Entra (karta Zarządzanie ).

Klient

Upewnij się, że klient spełnia następujące wymagania:

  • Obsługa klienta SSH dla certyfikatów opartych na protokole OpenSSH na potrzeby uwierzytelniania. Aby spełnić to wymaganie, możesz użyć interfejsu wiersza polecenia platformy Azure (2.21.1 lub nowszego) z protokołem OpenSSH (dołączonym do systemu Windows 10 w wersji 1803 lub nowszej).

  • Rozszerzenie SSH dla interfejsu wiersza polecenia platformy Azure. To rozszerzenie można zainstalować przy użyciu polecenia az extension add --name ssh. Nie musisz instalować tego rozszerzenia podczas korzystania z usługi Azure Cloud Shell, ponieważ jest ona wstępnie zainstalowana.

    Jeśli używasz dowolnego klienta SSH innego niż interfejs wiersza polecenia platformy Azure lub usługi Azure Cloud Shell, który obsługuje certyfikaty OpenSSH, nadal musisz użyć interfejsu wiersza polecenia platformy Azure z rozszerzeniem SSH, aby pobrać efemeryczne certyfikaty SSH i opcjonalnie plik konfiguracji. Następnie możesz użyć pliku konfiguracji z klientem SSH.

  • Łączność TCP z klienta z publicznym lub prywatnym adresem IP maszyny wirtualnej. (Funkcja ProxyCommand lub przekazywanie SSH do maszyny z łącznością również działa).

Ważne

Klienci SSH oparty na oprogramowaniu PuTTY obsługują teraz certyfikaty OpenSSH i mogą służyć do logowania się przy użyciu uwierzytelniania opartego na certyfikatach microsoft Entra OpenSSH.

Włączanie logowania do usługi Microsoft Entra dla maszyny wirtualnej z systemem Linux na platformie Azure

Aby użyć logowania firmy Microsoft Entra dla maszyny wirtualnej z systemem Linux na platformie Azure, należy najpierw włączyć opcję logowania firmy Microsoft Entra dla maszyny wirtualnej z systemem Linux. Następnie skonfigurujesz przypisania ról platformy Azure dla użytkowników, którzy mają uprawnienia do logowania się do maszyny wirtualnej. Na koniec użyjesz klienta SSH obsługującego protokół OpenSSH, takiego jak interfejs wiersza polecenia platformy Azure lub usługę Azure Cloud Shell, do protokołu SSH na maszynie wirtualnej z systemem Linux.

Istnieją dwa sposoby włączania logowania do usługi Microsoft Entra dla maszyny wirtualnej z systemem Linux:

  • Środowisko witryny Azure Portal podczas tworzenia maszyny wirtualnej z systemem Linux
  • Środowisko usługi Azure Cloud Shell podczas tworzenia maszyny wirtualnej z systemem Linux lub przy użyciu istniejącej

Azure Portal

Możesz włączyć logowanie firmy Microsoft Entra dla dowolnej z obsługiwanych dystrybucji systemu Linux przy użyciu witryny Azure Portal.

Aby na przykład utworzyć maszynę wirtualną z obsługą długoterminową systemu Ubuntu Server 18.04 na platformie Azure przy użyciu logowania firmy Microsoft Entra:

  1. Zaloguj się do witryny Azure Portal przy użyciu konta, które ma dostęp do tworzenia maszyn wirtualnych, a następnie wybierz pozycję + Utwórz zasób.
  2. Wybierz pozycję Utwórz w obszarze Ubuntu Server 18.04 LTS w widoku Popularne.
  3. Na karcie Zarządzanie:
    1. Zaznacz pole wyboru Login with Microsoft Entra ID (Zaloguj się przy użyciu identyfikatora entra firmy Microsoft).
    2. Upewnij się, że pole wyboru Tożsamość zarządzana przypisana przez system jest zaznaczone.
  4. Zapoznaj się z resztą środowiska tworzenia maszyny wirtualnej. Musisz utworzyć konto administratora z nazwą użytkownika i hasłem lub kluczem publicznym SSH.

Azure Cloud Shell

Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, której możesz używać do wykonywania kroków opisanych w tym artykule. Typowe narzędzia platformy Azure są wstępnie zainstalowane i skonfigurowane w usłudze Cloud Shell na potrzeby użycia z poziomu konta. Wystarczy wybrać przycisk Kopiuj , aby skopiować kod, wkleić go w usłudze Cloud Shell, a następnie wybrać Enter, aby go uruchomić.

Usługę Cloud Shell można otworzyć na kilka sposobów:

  • Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu.
  • Otwórz usługę Cloud Shell w swojej przeglądarce.
  • Wybierz przycisk Cloud Shell w menu w prawym górnym rogu witryny Azure Portal.

Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia platformy Azure i korzystać z niego lokalnie, ten artykuł wymaga użycia wersji 2.22.1 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

  1. Utwórz grupę zasobów, uruchamiając polecenie az group create.
  2. Utwórz maszynę wirtualną, uruchamiając polecenie az vm create. Użyj obsługiwanej dystrybucji w obsługiwanym regionie.
  3. Zainstaluj rozszerzenie maszyny wirtualnej logowania entra firmy Microsoft przy użyciu polecenia az vm extension set.

Poniższy przykład umożliwia wdrożenie maszyny wirtualnej, a następnie zainstalowanie rozszerzenia w celu włączenia logowania do usługi Microsoft Entra dla maszyny wirtualnej z systemem Linux. Rozszerzenia maszyn wirtualnych to małe aplikacje, które zapewniają konfigurację po wdrożeniu i zadania automatyzacji w usłudze Azure Virtual Machines. Dostosuj przykład zgodnie z potrzebami, aby spełnić wymagania dotyczące testowania.

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

Utworzenie maszyny wirtualnej i zasobów pomocniczych potrwa kilka minut.

Rozszerzenie AADSSHLoginForLinux można zainstalować na istniejącej (obsługiwanej dystrybucji) maszynie wirtualnej z systemem Linux z uruchomionym agentem maszyny wirtualnej, aby włączyć uwierzytelnianie firmy Microsoft Entra. Jeśli wdrażasz to rozszerzenie na wcześniej utworzonej maszynie wirtualnej, maszyna wirtualna musi mieć przydzieloną co najmniej 1 GB pamięci lub instalacja zakończy się niepowodzeniem.

Wartość provisioningState jest wyświetlana Succeeded po pomyślnym zainstalowaniu rozszerzenia na maszynie wirtualnej. Aby zainstalować rozszerzenie, maszyna wirtualna musi mieć uruchomionego agenta maszyny wirtualnej.

Konfigurowanie przypisań ról dla maszyny wirtualnej

Po utworzeniu maszyny wirtualnej musisz przypisać jedną z następujących ról platformy Azure, aby określić, kto może zalogować się do maszyny wirtualnej. Aby przypisać te role, musisz mieć rolę Administratora dostępu do danych maszyny wirtualnej lub dowolną rolę obejmującą Microsoft.Authorization/roleAssignments/write akcję, taką jak rola Administrator kontroli dostępu opartej na rolach. Jeśli jednak używasz innej roli niż administrator dostępu do danych maszyny wirtualnej, zalecamy dodanie warunku w celu zmniejszenia uprawnień do tworzenia przypisań ról.

  • Logowanie administratora maszyny wirtualnej: użytkownicy, którzy mają przypisaną tę rolę, mogą logować się do maszyny wirtualnej platformy Azure z uprawnieniami administratora.
  • Logowanie użytkownika maszyny wirtualnej: użytkownicy, którzy mają przypisaną tę rolę, mogą logować się do maszyny wirtualnej platformy Azure przy użyciu zwykłych uprawnień użytkownika.

Aby umożliwić użytkownikowi logowanie się do maszyny wirtualnej za pośrednictwem protokołu SSH, musisz przypisać rolę Logowanie administratora maszyny wirtualnej lub Logowanie użytkownika maszyny wirtualnej w grupie zasobów zawierającej maszynę wirtualną i skojarzona z nią sieć wirtualną, interfejs sieciowy, publiczny adres IP lub zasoby modułu równoważenia obciążenia.

Użytkownik platformy Azure, który ma przypisaną rolę Właściciel lub Współautor dla maszyny wirtualnej, nie ma automatycznie uprawnień do logowania się do firmy Microsoft Entra na maszynie wirtualnej za pośrednictwem protokołu SSH. Istnieje celowe (i poddawane inspekcji) rozdzielenie między zestawem osób kontrolujących maszyny wirtualne a zestawem osób, które mogą uzyskiwać do nich dostęp.

Istnieją dwa sposoby konfigurowania przypisań ról dla maszyny wirtualnej:

  • Środowisko witryny Azure Portal
  • Środowisko usługi Azure Cloud Shell

Uwaga

Role Logowania administratora maszyny wirtualnej i Logowania użytkownika maszyny wirtualnej są używane dataActions i mogą być przypisane do grupy zarządzania, subskrypcji, grupy zasobów lub zakresu zasobów. Zalecamy przypisanie ról na poziomie grupy zarządzania, subskrypcji lub grupy zasobów, a nie na poziomie poszczególnych maszyn wirtualnych. Ta praktyka pozwala uniknąć ryzyka osiągnięcia limitu przypisań ról platformy Azure na subskrypcję.

Azure Portal

Aby skonfigurować przypisania ról dla maszyn wirtualnych z systemem Linux z obsługą identyfikatora entra firmy Microsoft:

  1. W obszarze Grupa zasobów wybierz grupę zasobów zawierającą maszynę wirtualną i skojarzona z nią sieć wirtualną, interfejs sieciowy, publiczny adres IP lub zasób modułu równoważenia obciążenia.

  2. Wybierz pozycję Kontrola dostępu (IAM).

  3. Wybierz pozycję Dodaj>przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.

  4. Przypisz następującą rolę. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

    Ustawienie Wartość
    Rola Logowanie administratora maszyny wirtualnej lub logowanie użytkownika maszyny wirtualnej
    Przypisz dostęp do Użytkownik, grupa, jednostka usługi lub tożsamość zarządzana

    Zrzut ekranu przedstawiający stronę dodawania przypisania roli.

Po kilku chwilach podmiotowi zabezpieczeń zostanie przypisana rola w wybranym zakresie.

Azure Cloud Shell

W poniższym przykładzie użyto polecenia az role assignment create , aby przypisać rolę logowania administratora maszyny wirtualnej do maszyny wirtualnej dla bieżącego użytkownika platformy Azure. Możesz uzyskać nazwę użytkownika bieżącego konta platformy Azure przy użyciu polecenia az account show i ustawić zakres maszyny wirtualnej utworzonej w poprzednim kroku przy użyciu polecenia az vm show.

Zakres można również przypisać na poziomie grupy zasobów lub subskrypcji. Mają zastosowanie normalne uprawnienia dziedziczenia RBAC platformy Azure.

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

Uwaga

Jeśli domena microsoft Entra i domena nazwy użytkownika logowania nie są zgodne, musisz określić identyfikator obiektu konta użytkownika przy użyciu , --assignee-object-ida nie tylko nazwy użytkownika dla --assignee. Identyfikator obiektu dla konta użytkownika można uzyskać przy użyciu polecenia az ad user list.

Aby uzyskać więcej informacji na temat sposobu używania kontroli dostępu opartej na rolach platformy Azure do zarządzania dostępem do zasobów subskrypcji platformy Azure, zobacz Kroki przypisywania roli platformy Azure.

Instalowanie rozszerzenia SSH dla interfejsu wiersza polecenia platformy Azure

Jeśli używasz usługi Azure Cloud Shell, nie jest wymagana żadna inna konfiguracja, ponieważ zarówno minimalna wymagana wersja interfejsu wiersza polecenia platformy Azure, jak i rozszerzenie SSH dla interfejsu wiersza polecenia platformy Azure są już uwzględnione w środowisku usługi Cloud Shell.

Uruchom następujące polecenie, aby dodać rozszerzenie SSH dla interfejsu wiersza polecenia platformy Azure:

az extension add --name ssh

Minimalna wersja wymagana dla rozszerzenia to 0.1.4. Sprawdź zainstalowaną wersję przy użyciu następującego polecenia:

az extension show --name ssh

Wymuszanie zasad dostępu warunkowego

Możesz wymusić zasady dostępu warunkowego, które są włączone przy użyciu logowania firmy Microsoft Entra, takie jak:

  • Wymaganie uwierzytelniania wieloskładnikowego.
  • Wymaganie zgodnego lub dołączonego hybrydowego urządzenia firmy Microsoft Entra dla urządzenia z uruchomionym klientem SSH.
  • Sprawdzanie ryzyka przed autoryzowaniem dostępu do maszyn wirtualnych z systemem Linux na platformie Azure.

Aplikacja wyświetlana w zasadach dostępu warunkowego nosi nazwę Logowanie do maszyny wirtualnej z systemem Linux platformy Azure.

Uwaga

Wymuszanie zasad dostępu warunkowego, które wymaga zgodności urządzenia lub dołączania hybrydowego firmy Microsoft Entra na urządzeniu z uruchomionym klientem SSH działa tylko z interfejsem wiersza polecenia platformy Azure uruchomionym w systemach Windows i macOS. Nie jest obsługiwana w przypadku korzystania z interfejsu wiersza polecenia platformy Azure w systemie Linux lub w usłudze Azure Cloud Shell.

Brak aplikacji

Jeśli w dostępie warunkowym brakuje aplikacji logowania maszyny wirtualnej z systemem Linux platformy Azure, upewnij się, że aplikacja nie znajduje się w dzierżawie:

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji w chmurze.
  2. Przejdź do aplikacji dla przedsiębiorstw usługi Identity>Applications>.
  3. Usuń filtry, aby wyświetlić wszystkie aplikacje i wyszukać pozycję Maszyna wirtualna. Jeśli w związku z tym nie widzisz logowania maszyny wirtualnej z systemem Linux platformy Microsoft Azure, w dzierżawie brakuje jednostki usługi.

Zaloguj się przy użyciu konta użytkownika microsoft Entra do protokołu SSH na maszynie wirtualnej z systemem Linux

Logowanie przy użyciu interfejsu wiersza polecenia platformy Azure

Wprowadź az login. To polecenie otwiera okno przeglądarki, w którym można się zalogować przy użyciu konta Microsoft Entra.

az login 

Następnie wprowadź ciąg az ssh vm. Poniższy przykład automatycznie rozpoznaje odpowiedni adres IP maszyny wirtualnej.

az ssh vm -n myVM -g AzureADLinuxVM

Jeśli zostanie wyświetlony monit, wprowadź poświadczenia logowania usługi Microsoft Entra na stronie logowania, przeprowadź uwierzytelnianie wieloskładnikowe i/lub sprawdź urządzenie. Zostanie wyświetlony monit tylko wtedy, gdy jesteś sesją interfejsu wiersza polecenia platformy Azure, która nie spełnia jeszcze żadnych wymaganych kryteriów dostępu warunkowego. Zamknij okno przeglądarki, wróć do wiersza polecenia SSH i nastąpi automatyczne połączenie z maszyną wirtualną.

Teraz logujesz się do maszyny wirtualnej z systemem Linux z uprawnieniami roli przypisanymi, takimi jak użytkownik maszyny wirtualnej lub administrator maszyny wirtualnej. Jeśli twoje konto użytkownika ma przypisaną rolę logowania administratora maszyny wirtualnej, możesz użyć programu sudo do uruchamiania poleceń wymagających uprawnień głównych.

Logowanie przy użyciu usługi Azure Cloud Shell

Usługi Azure Cloud Shell można używać do nawiązywania połączenia z maszynami wirtualnymi bez konieczności instalowania niczego lokalnie na maszynie klienckiej. Uruchom usługę Cloud Shell, wybierając ikonę powłoki w prawym górnym rogu witryny Azure Portal.

Usługa Cloud Shell automatycznie łączy się z sesją w kontekście zalogowanego użytkownika. Teraz uruchom ponownie i przejdź az login przez przepływ logowania interakcyjnego:

az login

Następnie możesz użyć normalnych az ssh vm poleceń, aby nawiązać połączenie przy użyciu nazwy i grupy zasobów lub adresu IP maszyny wirtualnej:

az ssh vm -n myVM -g AzureADLinuxVM

Uwaga

Wymuszanie zasad dostępu warunkowego, które wymaga zgodności urządzeń lub dołączania hybrydowego firmy Microsoft Entra nie jest obsługiwane w przypadku korzystania z usługi Azure Cloud Shell.

Zaloguj się przy użyciu jednostki usługi Microsoft Entra do protokołu SSH na maszynie wirtualnej z systemem Linux

Interfejs wiersza polecenia platformy Azure obsługuje uwierzytelnianie za pomocą jednostki usługi zamiast konta użytkownika. Ponieważ jednostki usługi nie są powiązane z żadnym konkretnym użytkownikiem, klienci mogą używać ich do SSH na maszynie wirtualnej, aby obsługiwać wszelkie scenariusze automatyzacji, które mogą mieć. Jednostka usługi musi mieć przypisane uprawnienia administratora maszyny wirtualnej lub użytkownika maszyny wirtualnej. Przypisz uprawnienia na poziomie subskrypcji lub grupy zasobów.

W poniższym przykładzie przypisano uprawnienia administratora maszyny wirtualnej do jednostki usługi na poziomie grupy zasobów. Zastąp symbole zastępcze identyfikatorem obiektu jednostki usługi, identyfikatorem subskrypcji i nazwą grupy zasobów.

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>"

Użyj poniższego przykładu, aby uwierzytelnić się w interfejsie wiersza polecenia platformy Azure przy użyciu jednostki usługi. Aby uzyskać więcej informacji, zobacz artykuł Logowanie się do interfejsu wiersza polecenia platformy Azure przy użyciu jednostki usługi.

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

Po zakończeniu uwierzytelniania za pomocą jednostki usługi użyj normalnych poleceń SSH interfejsu wiersza polecenia platformy Azure, aby nawiązać połączenie z maszyną wirtualną:

az ssh vm -n myVM -g AzureADLinuxVM

Eksportowanie konfiguracji SSH do użycia z klientami SSH obsługującymi protokół OpenSSH

Logowanie się do maszyn wirtualnych z systemem Linux platformy Azure przy użyciu identyfikatora Entra firmy Microsoft obsługuje eksportowanie certyfikatu i konfiguracji openSSH. Oznacza to, że możesz użyć dowolnego klienta SSH, który obsługuje certyfikaty oparte na protokole OpenSSH, aby zalogować się za pośrednictwem identyfikatora Entra firmy Microsoft. Poniższy przykład eksportuje konfigurację dla wszystkich adresów IP przypisanych do maszyny wirtualnej:

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

Alternatywnie możesz wyeksportować konfigurację, określając tylko adres IP. Zastąp adres IP w poniższym przykładzie publicznym lub prywatnym adresem IP maszyny wirtualnej. (Musisz mieć własną łączność dla prywatnych adresów IP). Wprowadź ciąg az ssh config -h , aby uzyskać pomoc dotyczącą tego polecenia.

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

Następnie możesz nawiązać połączenie z maszyną wirtualną za pomocą normalnego użycia protokołu OpenSSH. Połączenie można nawiązać za pośrednictwem dowolnego klienta SSH korzystającego z protokołu OpenSSH.

Uruchamianie polecenia sudo przy użyciu logowania firmy Microsoft Entra

Po pomyślnym przypisaniu roli administratora maszyny wirtualnej do maszyny wirtualnej z systemem Linux użytkownicy będą mogli uruchomić program sudo bez innych interakcji ani wymagań dotyczących uwierzytelniania. Użytkownicy, którym przypisano rolę użytkownika maszyny wirtualnej, nie będą mogli uruchomić programu sudo.

Nawiązywanie połączenia z maszynami wirtualnymi w zestawach skalowania maszyn wirtualnych

Obsługiwane są zestawy skalowania maszyn wirtualnych, ale kroki są nieco inne w przypadku włączania i nawiązywania połączenia z maszynami wirtualnymi w zestawie skalowania maszyn wirtualnych:

  1. Utwórz zestaw skalowania maszyn wirtualnych lub wybierz taki, który już istnieje. Włącz tożsamość zarządzaną przypisaną przez system dla zestawu skalowania maszyn wirtualnych:

    az vmss identity assign --name myVMSS --resource-group AzureADLinuxVM
    
  2. Zainstaluj rozszerzenie Microsoft Entra w zestawie skalowania maszyn wirtualnych:

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

Zestawy skalowania maszyn wirtualnych zwykle nie mają publicznych adresów IP. Musisz mieć łączność z nimi z innej maszyny, która może nawiązać połączenie z siecią wirtualną platformy Azure. W tym przykładzie pokazano, jak używać prywatnego adresu IP maszyny wirtualnej w zestawie skalowania maszyn wirtualnych w celu nawiązania połączenia z maszyny w tej samej sieci wirtualnej:

az ssh vm --ip 10.11.123.456

Uwaga

Nie można automatycznie określić adresów IP maszyny wirtualnej zestawu skalowania maszyn wirtualnych przy użyciu --resource-group przełączników i --name .

Migrowanie z poprzedniej wersji (wersja zapoznawcza)

Jeśli używasz poprzedniej wersji logowania firmy Microsoft Entra dla systemu Linux opartego na przepływie kodu urządzenia, wykonaj następujące kroki, korzystając z interfejsu wiersza polecenia platformy Azure:

  1. Odinstaluj rozszerzenie AADLoginForLinux na maszynie wirtualnej:

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

    Uwaga

    Odinstalowanie rozszerzenia może zakończyć się niepowodzeniem, jeśli na maszynie wirtualnej są obecnie zalogowani użytkownicy firmy Microsoft Entra. Upewnij się, że wszyscy użytkownicy są wylogowani jako pierwsi.

  2. Włącz tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej:

    az vm identity assign -g myResourceGroup -n myVm
    
  3. Zainstaluj rozszerzenie AADSSHLoginForLinux na maszynie wirtualnej:

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

Używanie usługi Azure Policy do spełnienia standardów i oceny zgodności

Używanie usługi Azure Policy w celu:

  • Upewnij się, że logowanie firmy Microsoft Entra jest włączone dla nowych i istniejących maszyn wirtualnych z systemem Linux.
  • Ocena zgodności środowiska na dużą skalę na pulpicie nawigacyjnym zgodności.

Dzięki tej funkcji można użyć wielu poziomów wymuszania. Możesz oznaczyć nowe i istniejące maszyny wirtualne z systemem Linux w środowisku, które nie mają włączonego logowania firmy Microsoft Entra. Za pomocą usługi Azure Policy można również wdrożyć rozszerzenie Microsoft Entra na nowych maszynach wirtualnych z systemem Linux, które nie mają włączonego logowania do usługi Microsoft Entra, a także skorygować istniejące maszyny wirtualne z systemem Linux do tego samego standardu.

Oprócz tych możliwości można użyć usługi Azure Policy do wykrywania i flagowania maszyn wirtualnych z systemem Linux, które mają niezatwierdzone konta lokalne utworzone na ich maszynach. Aby dowiedzieć się więcej, zapoznaj się z tematem Azure Policy.

Rozwiązywanie problemów z logowaniem

Skorzystaj z poniższych sekcji, aby naprawić typowe błędy, które mogą wystąpić podczas próby nawiązania protokołu SSH z poświadczeniami firmy Microsoft Entra.

Nie można pobrać tokenu z lokalnej pamięci podręcznej

Jeśli zostanie wyświetlony komunikat informujący, że nie można pobrać tokenu z lokalnej pamięci podręcznej, należy uruchomić az login go ponownie i przejść przez interaktywny przepływ logowania. Przejrzyj sekcję dotyczącą logowania przy użyciu usługi Azure Cloud Shell.

Odmowa dostępu: rola platformy Azure nie została przypisana

Jeśli w wierszu polecenia protokołu SSH zostanie wyświetlony błąd "Rola platformy Azure nie przypisano", sprawdź, czy skonfigurowano zasady RBAC platformy Azure dla maszyny wirtualnej, która przyznaje użytkownikowi rolę logowania administratora maszyny wirtualnej lub rolę logowania użytkownika maszyny wirtualnej. Jeśli masz problemy z przypisaniami ról platformy Azure, zobacz artykuł Rozwiązywanie problemów z kontrolą dostępu opartą na rolach platformy Azure.

Problemy z usuwaniem starego rozszerzenia (AADLoginForLinux)

Jeśli skrypty dezinstalacji nie powiedzą się, rozszerzenie może zostać zablokowane w stanie przejściowym. W takim przypadku rozszerzenie może pozostawić pakiety, które należy odinstalować podczas jego usuwania. W takich przypadkach lepiej ręcznie odinstalować stare pakiety, a następnie spróbować uruchomić az vm extension delete polecenie.

Aby odinstalować stare pakiety:

  1. Zaloguj się jako użytkownik lokalny z uprawnieniami administratora.
  2. Upewnij się, że nie ma zalogowanych użytkowników firmy Microsoft Entra. Wywołaj polecenie , who -u aby zobaczyć, kto jest zalogowany. Następnie użyj polecenia sudo kill <pid> dla wszystkich procesów sesji zgłoszonych przez poprzednie polecenie.
  3. Uruchom polecenie sudo apt remove --purge aadlogin (Ubuntu/Debian), sudo yum remove aadlogin (RHEL) lub sudo zypper remove aadlogin (openSUSE lub SLES).
  4. Jeśli polecenie zakończy się niepowodzeniem, wypróbuj narzędzia niskiego poziomu z wyłączonymi skryptami:
    1. W systemie Ubuntu/Debian uruchom polecenie sudo dpkg --purge aadlogin. Jeśli nadal kończy się to niepowodzeniem z powodu skryptu, usuń /var/lib/dpkg/info/aadlogin.prerm plik i spróbuj ponownie.
    2. W przypadku wszystkich innych elementów uruchom polecenie rpm -e --noscripts aadogin.
  5. Powtórz kroki 3–4 dla pakietu aadlogin-selinux.

Błędy instalacji rozszerzenia

Instalacja rozszerzenia maszyny wirtualnej AADSSHLoginForLinux na istniejących komputerach może zakończyć się niepowodzeniem z jednym z następujących znanych kodów błędów.

Kod zakończenia bez zera 22

Jeśli otrzymasz kod zakończenia 22, stan rozszerzenia maszyny wirtualnej AADSSHLoginForLinux będzie wyświetlany jako Przejście w portalu.

Ten błąd występuje, ponieważ wymagana jest tożsamość zarządzana przypisana przez system.

Rozwiązaniem jest:

  1. Odinstaluj nieudane rozszerzenie.
  2. Włącz tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej platformy Azure.
  3. Uruchom ponownie polecenie instalacji rozszerzenia.

Kod zakończenia bez zera 23

Jeśli otrzymasz kod zakończenia 23, stan rozszerzenia maszyny wirtualnej AADSSHLoginForLinux będzie wyświetlany jako Przejście w portalu.

Ten błąd występuje, gdy starsze rozszerzenie maszyny wirtualnej AADLoginForLinux jest nadal zainstalowane.

Rozwiązaniem jest odinstalowanie starszego rozszerzenia maszyny wirtualnej AADLoginForLinux z maszyny wirtualnej. Stan nowego rozszerzenia maszyny wirtualnej AADSSHLoginForLinux zmieni się na Aprowizacja powiodła się w portalu.

Błędy instalacji podczas korzystania z serwera proxy HTTP

Rozszerzenie wymaga połączenia HTTP, aby zainstalować pakiety i sprawdzić istnienie tożsamości systemu. Jest on uruchamiany w kontekście walinuxagent.service i wymaga zmiany, aby poinformować agenta o ustawieniach serwera proxy. Otwórz /lib/systemd/system/walinuxagent.service plik na maszynie docelowej i dodaj następujący wiersz po :[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"

Uruchom ponownie agenta (sudo systemctl restart walinuxagent). Teraz spróbuj ponownie.

Polecenie az ssh vm kończy się niepowodzeniem z access_token KeyError

az ssh vm Jeśli polecenie zakończy się niepowodzeniem, używasz nieaktualnej wersji klienta interfejsu wiersza polecenia platformy Azure.

Rozwiązaniem jest uaktualnienie klienta interfejsu wiersza polecenia platformy Azure do wersji 2.21.0 lub nowszej.

Połączenie SSH jest zamknięte

Gdy użytkownik pomyślnie zaloguje się przy użyciu polecenia az login, połączenie z maszyną wirtualną za pośrednictwem az ssh vm -ip <address> lub az ssh vm --name <vm_name> -g <resource_group> może zakończyć się niepowodzeniem z komunikatem "Połączenie zamknięte przez <ip_address> port 22".

Jedną z przyczyn tego błędu jest to, że użytkownik nie jest przypisany do roli logowania administratora maszyny wirtualnej lub logowania użytkownika maszyny wirtualnej w zakresie tej maszyny wirtualnej. W takim przypadku rozwiązaniem jest dodanie użytkownika do jednej z tych ról RBAC platformy Azure w zakresie tej maszyny wirtualnej.

Ten błąd może również wystąpić, jeśli użytkownik znajduje się w wymaganej roli RBAC platformy Azure, ale tożsamość zarządzana przypisana przez system została wyłączona na maszynie wirtualnej. W takim przypadku wykonaj następujące akcje:

  1. Włącz tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej.
  2. Poczekaj kilka minut, zanim użytkownik spróbuje nawiązać połączenie przy użyciu polecenia az ssh vm --ip <ip_address>.

Problemy z połączeniem z zestawami skalowania maszyn wirtualnych

Połączenia maszyn wirtualnych z zestawami skalowania maszyn wirtualnych mogą zakończyć się niepowodzeniem, jeśli wystąpienia zestawu skalowania uruchamiają stary model.

Uaktualnienie wystąpień zestawu skalowania do najnowszego modelu może rozwiązać problem, zwłaszcza jeśli uaktualnienie nie zostało wykonane od czasu zainstalowania rozszerzenia Microsoft Entra Login. Uaktualnienie wystąpienia stosuje konfigurację standardowego zestawu skalowania do pojedynczego wystąpienia.

Instrukcje AllowGroups lub DenyGroups w sshd_config powodują niepowodzenie pierwszego logowania dla użytkowników firmy Microsoft Entra

Jeśli sshd_config zawiera AllowGroups instrukcje lub DenyGroups , pierwsze logowanie nie powiedzie się dla użytkowników firmy Microsoft Entra. Jeśli instrukcja została dodana po pomyślnym zalogowaniu użytkowników, mogą się zalogować.

Jednym z rozwiązań jest usunięcie AllowGroups instrukcji i DenyGroups z sshd_config.

Innym rozwiązaniem match user jest przeniesienie i DenyGroups przejście AllowGroups do sekcji w sshd_config. Upewnij się, że szablon dopasowania wyklucza użytkowników firmy Microsoft Entra.

Odmowa uprawnień podczas próby nawiązania połączenia z usługi Azure Shell z maszyną wirtualną Red Hat/Oracle 7.X z systemem Linux.

Wersja serwera OpenSSH na docelowej maszynie wirtualnej 7.4 jest zbyt stara. Wersja niezgodna z klientem OpenSSH w wersji 8.8. Aby uzyskać więcej informacji, zapoznaj się z tematem RSA SHA256 certificates (Certyfikaty SHA256 RSA nie działają już).

Obejście:

  • Dodanie opcji "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" w poleceniu az ssh vm .
az ssh vm -n myVM -g MyResourceGroup -- -A -o "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com"
  • Dodanie opcji w pliku "PubkeyAcceptedKeyTypes= +ssh-rsa-cert-v01@openssh.com" /home/<user>/.ssh/config file.

Dodaj element "PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com" do pliku konfiguracji klienta.

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

Następne kroki