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:
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
Wyzwól ponowne uruchomienie maszyny wirtualnej (hard) z konsoli szeregowej platformy Azure.
Przerwij maszynę wirtualną w menu GRUB za pomocą ESC .
Wybierz pozycję E , aby zmodyfikować pierwszy wpis jądra w menu GRUB.
Przejdź do
linux16
wiersza i dodajselinux=0
polecenie , aby tymczasowo wyłączyć seLinux.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 dlaSELINUX
klucza. Zobacz poniższy zrzut ekranu jako przykład:Zwróć uwagę na ostatni wiersz :
SELINUXTYPE=disabled
. KluczSELINUXTYPE
powinien być ustawiony natargeted
,minimum
lubmls
zamiastdisabled
. Poniższy zrzut ekranu przedstawia poprawną konfigurację:
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ą.
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.
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.Po skorygowaniu konfiguracji SELinux wykonaj następujące czynności:
- Zamknij plik chroot.
- Odinstalowywanie kopii systemów plików z maszyny wirtualnej ratownictwa/naprawy.
- 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. - 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.