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.
aadsshloginiaadsshlogin-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:
- 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.
- Wybierz pozycję Utwórz w obszarze Ubuntu Server 18.04 LTS w widoku Popularne .
- Na karcie Zarządzanie :
- Zaznacz pole wyboru Zaloguj się przy użyciu usługi Azure Active Directory .
- Upewnij się, że pole wyboru Tożsamość zarządzana przypisana przez system jest zaznaczone.
- 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.
- Utwórz grupę zasobów, uruchamiając polecenie az group create.
- Utwórz maszynę wirtualną, uruchamiając polecenie az vm create. Użyj obsługiwanej dystrybucji w obsługiwanym regionie.
- 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:
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.
Wybierz pozycję Kontrola dostępu (IAM) .
Wybierz pozycję Dodaj>przypisanie roli , aby otworzyć stronę Dodawanie przypisania roli .
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 
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:
- Zaloguj się w witrynie Azure Portal.
- Przejdź do aplikacji usługi Azure Active Directory>Dla przedsiębiorstw.
- 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:
Zainstaluj zestaw SDK programu PowerShell programu Graph , jeśli jeszcze tego nie zrobiono.
Wprowadź polecenie
Connect-MgGraph -Scopes "ServicePrincipalEndpoint.ReadWrite.All","Application.ReadWrite.All".Zaloguj się przy użyciu konta globalnego Administracja.
Zgoda na monit z prośbą o zgodę.
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.
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:
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 AzureADLinuxVMZainstaluj 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:
Odinstaluj rozszerzenie AADLoginForLinux na maszynie wirtualnej:
az vm extension delete -g MyResourceGroup --vm-name MyVm -n AADLoginForLinuxUwaga
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.
Włącz tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej:
az vm identity assign -g myResourceGroup -n myVmZainstaluj 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:
- Zaloguj się jako użytkownik lokalny z uprawnieniami administratora.
- Upewnij się, że nie ma zalogowanych użytkowników Azure AD. Wywołaj polecenie ,
who -uaby zobaczyć, kto jest zalogowany. Następnie użyj poleceniasudo kill <pid>dla wszystkich procesów sesji zgłoszonych przez poprzednie polecenie. - Uruchom polecenie
sudo apt remove --purge aadlogin(Ubuntu/Debian),sudo yum erase aadlogin(RHEL lub CentOS) lubsudo zypper remove aadlogin(openSUSE lub SLES). - Jeśli polecenie zakończy się niepowodzeniem, wypróbuj narzędzia niskiego poziomu z wyłączonymi skryptami:
- 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.prermplik i spróbuj ponownie. - W przypadku wszystkich innych elementów uruchom polecenie
rpm -e –noscripts aadogin.
- W systemie Ubuntu/Debian uruchom polecenie
- 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:
- Odinstaluj rozszerzenie, które zakończyło się niepowodzeniem.
- Włącz tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej platformy Azure.
- 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:
- Włącz tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej.
- 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.