Udostępnij za pośrednictwem


Połączenie SSH z maszynami wirtualnymi z systemem Linux na platformie Azure nie powiodło się z powodu błędnej konfiguracji architektury SELinux

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

Uwaga

CentOS, do których odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz CentOS End Of Life guidance (Wskazówki dotyczące zakończenia życia systemu CentOS).

Ten artykuł zawiera rozwiązanie problemu polegającego na tym, że połączenie protokołu Secure Shell (SSH) z maszyną wirtualną platformy Azure kończy się niepowodzeniem z powodu błędnej konfiguracji selinux.

Tło

Model zabezpieczeń systemu Unix jest oparty na uznaniowej kontroli dostępu (DAC). System Linux z rozszerzonymi zabezpieczeniami (SELinux) implementuje obowiązkową kontrolę dostępu (MAC) dla systemu Linux przy użyciu modułów jądra i narzędzi do przestrzeni użytkownika. Komputer MAC zapewnia bardziej kontrolowane środowisko dostępu do zasobów i usuwa możliwość dostępu użytkownika głównego do wszystkich zasobów w systemie operacyjnym bez ograniczeń. Ogranicza również wiele rodzajów zagrożeń bezpieczeństwa dzięki wykorzystaniu tradycyjnego modelu zabezpieczeń systemu Unix.

Różne dystrybucje obejmują rozwiązanie SELinux z pudełka lub zapewnienie prostego sposobu aktywowania obsługi jądra i instalowania narzędzi do przestrzeni użytkownika. Aby uzyskać więcej informacji, zobacz następujące artykuły SELinux od niektórych głównych dostawców systemu Linux:

Obrazy oparte na systemie Red Hat na platformie Azure są dostarczane z włączonym programem SELinux; inne dystrybucje nie. W przypadku korzystania z programu SELinux w systemie Ubuntu jest wyświetlane ostrzeżenie dotyczące stanu niezamierzonego w tej dystrybucji. System Ubuntu implementuje inne rozwiązanie dla komputerów MAC o nazwie AppArmor.

Wymagania wstępne

Upewnij się, że konsola szeregowa jest włączona i funkcjonalna na maszynie wirtualnej z systemem Linux.

Objawy

Błędna konfiguracja seLinux może spowodować, że system operacyjny nie może załadować zasad SELinux, co uniemożliwia systemowi operacyjnemu ukończenie rozruchu.

Sprawdź konsolę szeregową w witrynie Azure Portal lub za pośrednictwem interfejsu wiersza polecenia platformy Azure. Na końcu danych wyjściowych pojawi się następujący komunikat:

Zrzut ekranu przedstawiający błąd

Konfiguracja SELinux jest zarządzana przez administratora systemu. Administrator systemu może rozwiązać ten problem przy użyciu jednej z następujących metod.

Rozwiązanie 1. Uruchamianie maszyny wirtualnej z wyłączonym programem SELinux przy użyciu konsoli szeregowej

  1. Wyzwól ponowne uruchomienie maszyny wirtualnej (hard) z konsoli szeregowej platformy Azure.

  2. Przerwij maszynę wirtualną w menu GRUB za pomocą ESC .

  3. Wybierz pozycję E , aby zmodyfikować pierwszy wpis jądra w menu GRUB.

  4. Przejdź do linux16 wiersza i dodaj selinux=0 polecenie , aby tymczasowo wyłączyć seLinux.

    Animowany plik GIF pokazujący proces przerywania rozruchu na poziomie menu GRUB w celu tymczasowego wyłączenia programu SELinux.

  5. Zweryfikuj i popraw konfigurację selinux w pliku /etc/selinux/config.

    Na przykład jednym z typowych błędów jest ustawienie SELINUXTYPE klucza na jedną z wartości używanych dla SELINUX klucza. Zobacz poniższy zrzut ekranu jako przykład:

    Zrzut ekranu pokazujący, że klucz SELINUXTYPE jest niepoprawnie ustawiony na wyłączone.

    Zwróć uwagę na ostatni wiersz : SELINUXTYPE=disabled. Klucz SELINUXTYPE powinien być ustawiony na targeted, minimumlub mls zamiast disabled. Poniższy zrzut ekranu przedstawia poprawną konfigurację:

    Zrzut ekranu przedstawiający poprawną konfigurację /etc/selinux/config.

Rozwiązanie 2. Naprawianie błędnej konfiguracji programu SELinux przy użyciu ratowniczej maszyny wirtualnej

Napiwek

Jeśli masz najnowszą kopię zapasową maszyny wirtualnej, przywróć maszynę wirtualną z kopii zapasowej, aby rozwiązać problem z konfiguracją.

  1. Jeśli konsola szeregowa platformy Azure nie działa na określonej maszynie wirtualnej lub nie jest opcją w ramach subskrypcji, rozwiąż ten problem przy użyciu maszyny wirtualnej ratowniczej/naprawy. Użyj poleceń naprawy maszyny wirtualnej, aby utworzyć maszynę wirtualną naprawy, która ma kopię dołączonego dysku systemu operacyjnego maszyny wirtualnej, której dotyczy problem. Zainstaluj kopię systemów plików systemu operacyjnego na maszynie wirtualnej naprawy przy użyciu katalogu chroot.

    Uwaga

    Alternatywnie możesz ręcznie utworzyć ratunkową maszynę wirtualną przy użyciu witryny Azure Portal. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z maszyną wirtualną z systemem Linux przez dołączenie dysku systemu operacyjnego do maszyny wirtualnej odzyskiwania przy użyciu witryny Azure Portal.

  2. Zweryfikuj i popraw konfigurację selinux w pliku /etc/selinux/config. Aby to zrobić, wykonaj krok 5 w rozwiązaniu 1: Uruchamianie maszyny wirtualnej z wyłączoną funkcją SELinux z konsoli szeregowej.

  3. Po skorygowaniu konfiguracji SELinux wykonaj następujące czynności:

    1. Zamknij plik chroot.
    2. Odinstalowywanie kopii systemów plików z maszyny wirtualnej ratownictwa/naprawy.
    3. Uruchom polecenie , az vm repair restore aby zamienić naprawiony dysk systemu operacyjnego na oryginalny dysk systemu operacyjnego maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz krok 5 w temacie Naprawianie maszyny wirtualnej z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.
    4. Sprawdź, czy maszyna wirtualna może uruchomić się, przeglądając konsolę szeregową platformy Azure lub próbując nawiązać połączenie z maszyną wirtualną.

Następne kroki

Jeśli problem nie jest spowodowany błędną konfiguracją środowiska SELinux, zobacz Rozwiązywanie problemów z błędami rozruchu maszyn wirtualnych z systemem Linux na platformie Azure, aby uzyskać dalsze opcje rozwiązywania problemów.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pomoc techniczną społeczności platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.