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
iaadsshlogin-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:
- 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.
- Wybierz pozycję Utwórz w obszarze Ubuntu Server 18.04 LTS w widoku Popularne.
- Na karcie Zarządzanie:
- Zaznacz pole wyboru Login with Microsoft Entra ID (Zaloguj się przy użyciu identyfikatora entra firmy Microsoft).
- 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 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.
- 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 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:
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 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
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-id
a 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:
- Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji w chmurze.
- Przejdź do aplikacji dla przedsiębiorstw usługi Identity>Applications>.
- 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:
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
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:
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.
Włącz tożsamość zarządzaną przypisaną przez system na maszynie wirtualnej:
az vm identity assign -g myResourceGroup -n myVm
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:
- Zaloguj się jako użytkownik lokalny z uprawnieniami administratora.
- 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 poleceniasudo kill <pid>
dla wszystkich procesów sesji zgłoszonych przez poprzednie polecenie. - Uruchom polecenie
sudo apt remove --purge aadlogin
(Ubuntu/Debian),sudo yum remove aadlogin
(RHEL) 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ę to niepowodzeniem z powodu skryptu, usuń/var/lib/dpkg/info/aadlogin.prerm
plik 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 nieudane rozszerzenie.
- 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.
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:
- 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ć 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 poleceniuaz 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