Zaloguj się do maszyny wirtualnej z systemem Linux na platformie Azure przy użyciu Azure AD i protokołu OpenSSH

Aby zwiększyć bezpieczeństwo maszyn wirtualnych z systemem Linux na platformie Azure, można zintegrować z uwierzytelnianiem usługi Azure Active Directory (Azure AD). Teraz można użyć Azure AD jako podstawowej platformy uwierzytelniania i urzędu certyfikacji do SSH na maszynie wirtualnej z systemem Linux przy użyciu uwierzytelniania opartego na certyfikatach Azure AD i OpenSSH. Ta funkcja umożliwia organizacjom zarządzanie dostępem do maszyn wirtualnych za pomocą 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 Azure AD przy użyciu uwierzytelniania opartego na certyfikatach OpenSSH.

Ważne

Ta funkcja jest teraz ogólnie dostępna. Poprzednia wersja, która korzystała z przepływu kodu urządzenia, została wycofana 15 sierpnia 2021 r. Aby przeprowadzić migrację ze starej wersji do tej wersji, zobacz sekcję Migrowanie z poprzedniej (wersja zapoznawcza).

Istnieje wiele korzyści zabezpieczeń związanych z używaniem Azure AD z uwierzytelnianiem opartym na certyfikatach OpenSSH w celu logowania się do maszyn wirtualnych z systemem Linux na platformie Azure. Obejmują one:

  • Zaloguj się do maszyn wirtualnych platformy Azure z systemem Linux przy użyciu poświadczeń Azure AD.
  • 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 starych kluczy publicznych SSH, które mogą spowodować nieautoryzowany dostęp.
  • Zmniejsz zależność od kont administratora lokalnego, kradzieży poświadczeń i słabych poświadczeń.
  • Zabezpieczanie maszyn wirtualnych z systemem Linux przez skonfigurowanie zasad złożoności hasła i okresu istnienia hasła dla Azure AD.
  • Za pomocą kontroli dostępu opartej na rolach określ, kto może logować 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 kontroli dostępu opartej na rolach platformy Azure dla maszyny wirtualnej w celu udzielenia dostępu zgodnie z potrzebami. Gdy pracownicy opuszczają organizację, a ich konta użytkowników są wyłączone lub usuwane z Azure AD, nie mają już dostępu do Twoich zasobów.
  • W przypadku dostępu warunkowego skonfiguruj zasady, aby wymagać uwierzytelniania wieloskładnikowego lub wymagać zarządzania urządzeniem klienckim (na przykład zgodnych lub hybrydowych Azure AD dołączonych) przed użyciem go do maszyn wirtualnych z systemem Linux.
  • Użyj zasad wdrażania i inspekcji platformy Azure, aby wymagać Azure AD logowania dla maszyn wirtualnych z systemem Linux i flagować niezatwierdzone konta lokalne.

Logowanie do maszyn wirtualnych z systemem Linux za pomocą usługi Azure Active Directory działa w przypadku klientów korzystających z 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
CentOS CentOS 7, CentOS 8
Debian Debian 9, Debian 10, Debian 11
openSUSE openSUSE Leap 42.3, openSUSE Leap 15.1+
RedHat Enterprise Linux (RHEL) RHEL 7.4 do RHEL 7.10, RHEL 8.3+
SUSE Linux Enterprise Server (SLES) SLES 12, SLES 15.1+
Ubuntu Server Ubuntu Server 16.04 do Ubuntu Server 22.04

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

  • Globalny platformy Azure
  • Azure Government
  • Azure w Chinach — 21Vianet

Korzystanie z rozszerzenia SSH dla interfejsu wiersza polecenia platformy Azure w klastrach 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 Azure AD przy użyciu uwierzytelniania opartego na certyfikatach OpenSSH

Aby włączyć logowanie Azure AD za pomocą uwierzytelniania opartego na certyfikatach SSH dla maszyn wirtualnych z systemem Linux na platformie Azure, należy spełnić następujące wymagania dotyczące sieci, maszyny wirtualnej i klienta (klienta SSH).

Sieć

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

Globalny platformy Azure:

  • https://packages.microsoft.com: w przypadku instalacji i uaktualnień pakietów.
  • 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ń pakietów.
  • 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.

Azure (Chiny) — 21Vianet:

  • https://packages.microsoft.com: w przypadku instalacji i uaktualnień pakietów.
  • 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 podczas używania Azure Portal do tworzenia maszyn wirtualnych i wybierania opcji logowania Azure AD. Tożsamość zarządzaną przypisaną 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 Azure Portal lub interfejsu wiersza polecenia platformy Azure do tworzenia maszyn wirtualnych i włączania logowania Azure AD (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 (w wersji 2.21.1 lub nowszej Cloud Shell) z protokołem OpenSSH (dołączonym do 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 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. (ProxyCommand lub SSH przesyłania dalej do maszyny z łącznością również działa).

Ważne

Klienci SSH oparty na programie PuTTY nie obsługują certyfikatów OpenSSH i nie można ich używać do logowania się przy użyciu uwierzytelniania opartego na certyfikatach Azure AD OpenSSH.

Włączanie logowania Azure AD dla maszyny wirtualnej z systemem Linux na platformie Azure

Aby użyć Azure AD logowania dla maszyny wirtualnej z systemem Linux na platformie Azure, należy najpierw włączyć opcję logowania Azure AD 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ługa Azure Cloud Shell, do protokołu SSH na maszynie wirtualnej z systemem Linux.

Istnieją dwa sposoby włączania logowania Azure AD dla maszyny wirtualnej z systemem Linux:

  • Środowisko Azure Portal podczas tworzenia maszyny wirtualnej z systemem Linux
  • Środowisko usługi Azure Cloud Shell podczas tworzenia maszyny wirtualnej z systemem Linux lub korzystania z istniejącej maszyny wirtualnej

Azure Portal

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

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

  1. Zaloguj się do 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 Zaloguj się przy użyciu usługi Azure Active Directory .
    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 Cloud Shell, a następnie wybrać klawisz 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 Azure AD przy użyciu polecenia az vm extension set.

Poniższy przykład wdraża maszynę wirtualną, a następnie instaluje rozszerzenie w celu włączenia logowania Azure AD dla maszyny wirtualnej z systemem Linux. Rozszerzenia maszyn wirtualnych to małe aplikacje, które zapewniają konfigurację po wdrożeniu i zadania automatyzacji na maszynach wirtualnych platformy Azure. Dostosuj przykład zgodnie z potrzebami, aby obsługiwać wymagania dotyczące testowania.

az group create --name AzureADLinuxVM --location southcentralus
az vm create \
    --resource-group AzureADLinuxVM \
    --name myVM \	
    --image UbuntuLTS \
    --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 w celu włączenia uwierzytelniania Azure AD. Jeśli wdrażasz to rozszerzenie na wcześniej utworzonej maszynie wirtualnej, maszyna wirtualna musi mieć co najmniej 1 GB przydzielonej 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 należy skonfigurować zasady kontroli dostępu opartej na rolach platformy Azure, aby określić, kto może zalogować się do maszyny wirtualnej. Dwie role platformy Azure są używane do autoryzowania logowania maszyny wirtualnej:

  • Logowanie administratora maszyny wirtualnej: użytkownicy, którzy mają przypisaną tę rolę, mogą zalogować 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ę Logowania administratora maszyny wirtualnej lub Logowania 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 Azure AD logowania się do maszyny wirtualnej za pośrednictwem protokołu SSH. Istnieje celowe (i poddane inspekcji) rozdzielenie zestawu osób, które kontrolują maszyny wirtualne i zestaw osób, które mogą uzyskiwać dostęp do maszyn wirtualnych.

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

  • środowisko portalu Azure AD
  • Ś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 zasobu, a nie na poziomie poszczególnych maszyn wirtualnych. Ta praktyka pozwala uniknąć ryzyka osiągnięcia limitu przypisań ról platformy Azure na subskrypcję.

portal Azure AD

Aby skonfigurować przypisania ról dla maszyn wirtualnych z systemem Linux z obsługą Azure AD:

  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 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 w Azure Portal.

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. Uzyskasz nazwę użytkownika bieżącego konta platformy Azure przy użyciu polecenia az account show i ustawisz zakres na maszynę wirtualną utworzoną 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 Azure AD i domena nazwy użytkownika logowania nie są zgodne, musisz określić identyfikator obiektu konta użytkownika przy użyciu metody , a nie tylko nazwy użytkownika dla --assigneeelementu --assignee-object-id. Identyfikator obiektu dla konta użytkownika można uzyskać za pomocą polecenia az ad user list.

Aby uzyskać więcej informacji na temat sposobu zarządzania dostępem do zasobów subskrypcji platformy Azure przy użyciu kontroli dostępu opartej na rolach 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 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ę, używając 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 Azure AD, na przykład:

  • Wymaganie uwierzytelniania wieloskładnikowego.
  • Wymaganie zgodnego lub hybrydowego urządzenia przyłączonego do Azure AD 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 maszyny wirtualnej z systemem Linux platformy Azure.

Uwaga

Wymuszanie zasad dostępu warunkowego, które wymaga zgodności urządzeń lub przyłączania hybrydowego Azure AD na urządzeniu z uruchomionym klientem SSH działa tylko z interfejsem wiersza polecenia platformy Azure działającym w systemach Windows i macOS. Nie jest obsługiwana w przypadku korzystania z interfejsu wiersza polecenia platformy Azure w systemie Linux lub azure Cloud Shell.

Brak aplikacji

Jeśli brakuje aplikacji Sign-In maszyny wirtualnej platformy Azure z systemem Linux z dostępu warunkowego, upewnij się, że aplikacja nie znajduje się w dzierżawie:

  1. Zaloguj się w witrynie Azure Portal.
  2. Przejdź do aplikacji usługi Azure Active Directory>Dla przedsiębiorstw.
  3. Usuń filtry, aby wyświetlić wszystkie aplikacje i wyszukać maszynę wirtualną. Jeśli w związku z tym nie widzisz Sign-In maszyny wirtualnej z systemem Linux platformy Azure, w dzierżawie brakuje jednostki usługi.

Innym sposobem weryfikacji jest użycie programu PowerShell programu Graph:

  1. Zainstaluj zestaw SDK programu PowerShell programu Graph , jeśli jeszcze tego nie zrobiono.

  2. Wprowadź polecenie Connect-MgGraph -Scopes "ServicePrincipalEndpoint.ReadWrite.All","Application.ReadWrite.All".

  3. Zaloguj się przy użyciu konta globalnego Administracja.

  4. Zgoda na monit z prośbą o zgodę.

  5. Wprowadź polecenie Get-MgServicePrincipal -ConsistencyLevel eventual -Search '"DisplayName:Azure Linux VM Sign-In"'.

    Jeśli to polecenie nie zwróci żadnych danych wyjściowych i powróci do wiersza polecenia programu PowerShell, możesz utworzyć jednostkę usługi przy użyciu następującego polecenia programu Graph PowerShell: New-MgServicePrincipal -AppId ce6ff14a-7fdc-4685-bbe0-f6afdfcfa8e0.

    Pomyślne dane wyjściowe pokazują, że utworzono identyfikator aplikacji i nazwę aplikacji maszyny wirtualnej platformy Azure z systemem Linux Sign-In.

  6. Wyloguj się z programu PowerShell programu Graph przy użyciu następującego polecenia: Disconnect-MgGraph.

Zaloguj się przy użyciu konta użytkownika Azure AD 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 Azure AD.

az login 

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

az ssh vm -n myVM -g AzureADLinuxVM

Jeśli zostanie wyświetlony monit, wprowadź swoje Azure AD poświadczenia logowania na stronie logowania, wykonaj uwierzytelnianie wieloskładnikowe i/lub sprawdź, czy urządzenie jest sprawdzane. Zostanie wyświetlony monit tylko wtedy, gdy sesja interfejsu wiersza polecenia platformy Azure 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ą.

Zalogowaliśmy się do maszyny wirtualnej z systemem Linux przy użyciu przypisanych uprawnień roli, takich 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ć polecenia sudo do uruchamiania poleceń, które wymagają uprawnień administratora.

Logowanie przy użyciu usługi Azure Cloud Shell

Możesz użyć usługi Azure Cloud Shell, aby nawiązać połączenie z maszynami wirtualnymi bez konieczności instalowania niczego lokalnie na maszynie klienckiej. Rozpocznij Cloud Shell, wybierając ikonę powłoki w prawym górnym rogu Azure Portal.

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 przyłączania hybrydowego Azure AD, nie jest obsługiwane w przypadku korzystania z usługi Azure Cloud Shell.

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

Interfejs wiersza polecenia platformy Azure obsługuje uwierzytelnianie przy użyciu 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 nawiązywania protokołu SSH z maszyną wirtualną w celu obsługi scenariuszy automatyzacji, które mogą mieć. Jednostka usługi musi mieć przypisane prawa 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 identyfikatora obiektu jednostki usługi, identyfikatora subskrypcji i nazwy 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>"

Skorzystaj z 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 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 Azure AD 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 Azure AD. 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

Możesz też 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 Azure AD logowania

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 Azure AD 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 identyfikatora logowania Azure AD 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ą aktualnie zalogowani użytkownicy Azure AD. 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 Azure Policy do spełnienia standardów i oceny zgodności

Używanie usługi Azure Policy w celu:

  • Upewnij się, że logowanie Azure AD 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 możliwości można użyć wielu poziomów wymuszania. W środowisku można flagować nowe i istniejące maszyny wirtualne z systemem Linux, które nie mają włączonego logowania Azure AD. Można również użyć Azure Policy, aby wdrożyć rozszerzenie Azure AD na nowych maszynach wirtualnych z systemem Linux, które nie mają włączonego logowania Azure AD, 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ć 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, przejrzyj 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 przy użyciu poświadczeń Azure AD.

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, musisz 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 została przypisana", 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ścia. W takim przypadku rozszerzenie może pozostawić pakiety, które ma odinstalować podczas 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 Azure AD. 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 erase aadlogin (RHEL lub CentOS) 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ę 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 rozszerzenie, które zakończyło się niepowodzeniem.
  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.

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

Po pomyślnym zalogowaniu się użytkownika przy użyciu programu az loginpołą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 <port 22 ip_address> ".

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 czynności:

  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ć ten problem, zwłaszcza jeśli uaktualnienie nie zostało wykonane od czasu zainstalowania rozszerzenia logowania Azure AD. Uaktualnianie 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 Azure AD

Jeśli sshd_config zawiera AllowGroups instrukcje lubDenyGroups, pierwsze logowanie nie powiedzie się dla użytkowników Azure AD. Jeśli instrukcja została dodana po pomyślnym zalogowaniu użytkowników, może się zalogować.

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

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

Następne kroki