Rozwiązywanie problemów z połączeniem SSH na maszynie wirtualnej z systemem Linux na platformie Azure z powodu problemów z uprawnieniami i własnością
Uwaga
CentOS, do którego odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ użycie i odpowiednio zaplanuj. Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące końca życia systemu CentOS.
Ten artykuł zawiera rozwiązania problemu polegającego na tym, że nawiązywanie połączenia z maszyną wirtualną z systemem Linux za pośrednictwem protokołu Secure Shell (SSH) kończy się niepowodzeniem, ponieważ katalog /var/empty/sshd w RHEL, katalog /var/lib/empty w usłudze SUSE lub katalog /var/run/sshd w systemie Ubuntu nie istnieje lub nie jest własnością użytkownika głównego lub jest zapisywalny w grupie lub można go zapisywać na całym świecie.
Symptomy
Po nawiązaniu połączenia z maszyną wirtualną z systemem Linux za pośrednictwem protokołu SSH połączenie kończy się niepowodzeniem. W zależności od dystrybucji systemu Linux może zostać wyświetlony następujący komunikat o błędzie dotyczący katalogu, którego dotyczy problem.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Przyczyna
Ten problem może wystąpić, jeśli katalog, którego dotyczy problem, nie jest własnością użytkownika głównego lub jest zapisywalny w formie grupy lub zapisywalny na całym świecie.
Aby rozwiązać ten problem, użyj jednej z następujących rozwiązań:
- Rozwiązanie 1. Napraw maszynę wirtualną w trybie online.
- Rozdzielczość 2. Napraw maszynę wirtualną w trybie offline.
Rozwiązanie 1. Naprawianie maszyny wirtualnej w trybie online
Poniżej przedstawiono dwie metody naprawy maszyny wirtualnej w trybie offline:
Korzystanie z konsoli szeregowej
Połącz się z konsolą szeregową maszyny wirtualnej z Azure Portal.
Zaloguj się do maszyny wirtualnej przy użyciu lokalnego konta administracyjnego i odpowiedniego poświadczenia lub hasła.
Uruchom następujące polecenia, aby rozwiązać problem z uprawnieniami i własnością:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
Korzystanie z rozszerzenia "Uruchom polecenie"
Uwaga
Ta metoda opiera się na agencie maszyny wirtualnej platformy Azure z systemem Linux (waagent). W związku z tym upewnij się, że agent jest zainstalowany na maszynie wirtualnej i że jego usługa jest uruchomiona.
W Azure Portal otwórz okno Właściwości maszyny wirtualnej, aby sprawdzić stan agenta. Jeśli agent jest włączony i ma stan Gotowe , wykonaj następujące kroki, aby zmienić uprawnienie:
Przejdź do Azure Portal, znajdź ustawienia maszyny wirtualnej, a następnie wybierz pozycję Uruchom polecenie w obszarze Operacje.
Wykonaj następujący skrypt powłoki, wybierając polecenie RunShellScript>Run:
#!/bin/bash #Script to change permissions on a file mkdir -p /var/empty/sshd;chmod 755 /var/empty/sshd;chown root:root /var/empty/sshd
- Po zakończeniu wykonywania skryptu w oknie konsoli wyjściowej zostanie wyświetlony komunikat "Włącz powiodło się".
Jeśli możesz nawiązać połączenie z maszyną wirtualną za pośrednictwem protokołu SSH i chcesz przeanalizować szczegóły wykonywania skryptu run-command, sprawdź plik handler.log w katalogu /var/log/azure/run-command .
Rozdzielczość 2. Naprawianie maszyny wirtualnej w trybie offline
Uwaga
- Użyj tej rozdzielczości, jeśli dostęp do konsoli szeregowej maszyny wirtualnej nie jest dostępny, a waagent nie jest gotowy.
- W systemie Ubuntu katalog /var/run/sshd działa w pamięci. Ponowne uruchomienie maszyny wirtualnej również rozwiąże problem. W związku z tym rozwiązywanie problemów w trybie offline na maszynach wirtualnych z systemem Ubuntu nie jest konieczne.
Poniżej przedstawiono dwie metody naprawy maszyny wirtualnej w trybie offline:
Używanie automatycznej naprawy systemu Azure Linux (ALAR)
Skrypty automatycznej naprawy systemu Azure Linux (ALAR) są częścią rozszerzenia naprawy maszyny wirtualnej opisanego w artykule Napraw maszynę wirtualną z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.
Wykonaj następujące kroki, aby zautomatyzować proces ręcznego trybu offline:
Uwaga
W poniższych krokach odpowiednio zastąp $RGNAME
wartości , $VMNAME
, $USERNAME
, $PASSWORD
i .repairdiskcopy
Użyj polecenia az vm repair create , aby utworzyć maszynę wirtualną naprawczą. Naprawa maszyny wirtualnej ma kopię dysku systemu operacyjnego dla problematycznej maszyny wirtualnej dołączonej.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
Zaloguj się do naprawy maszyny wirtualnej. Zainstaluj i chroot do systemu plików dołączonej kopii dysku systemu operacyjnego. Postępuj zgodnie ze szczegółowymi instrukcjami chroot.
Uruchom następujące polecenia, aby rozwiązać problemy z uprawnieniami i własnością:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
Po zastosowaniu zmian uruchom następujące
az vm repair restore
polecenie, aby przeprowadzić automatyczną wymianę dysku systemu operacyjnego z oryginalną maszyną wirtualną.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Używanie metody ręcznej
Jeśli zarówno konsola szeregowa, jak i podejście ALAR nie mają zastosowania do Ciebie lub kończą się niepowodzeniem, naprawa musi zostać wykonana ręcznie. Wykonaj poniższe kroki, aby ręcznie dołączyć dysk systemu operacyjnego do maszyny wirtualnej odzyskiwania i zamienić dysk systemu operacyjnego z powrotem na oryginalną maszynę wirtualną:
- Dołącz dysk systemu operacyjnego do maszyny wirtualnej odzyskiwania przy użyciu Azure Portal.
- Dołącz dysk systemu operacyjnego do maszyny wirtualnej odzyskiwania przy użyciu interfejsu wiersza polecenia platformy Azure.
Po pomyślnym dołączeniu dysku systemu operacyjnego do maszyny wirtualnej odzyskiwania postępuj zgodnie ze szczegółowymi instrukcjami chroot , aby zainstalować i chroot do systemów plików dołączonego dysku systemu operacyjnego. Następnie wykonaj krok 3 w sekcji Korzystanie z automatycznej naprawy systemu Azure Linux (ALAR), aby rozwiązać problemy z uprawnieniami i własnością.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla