Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ maszyny wirtualne z systemem Linux
Podsumowanie
Ten artykuł zawiera rozwiązania problemu, w którym 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 systemie RHEL, katalog /var/lib/empty w systemie 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 zapisywalny na świecie.
Ważne
Nowość! Wypróbuj pomoc maszyny wirtualnej, aby rozwiązać najważniejsze problemy. Zalecamy uruchomienie asysty VM dla Windows lub VM assist for Linux. Te narzędzia diagnostyczne oparte na skryptach ułatwiają identyfikowanie typowych problemów, które mają wpływ na agenta gościa maszyny wirtualnej Azure i ogólną kondycję maszyny wirtualnej.
Jeśli występują problemy z wydajnością na maszynach wirtualnych, uruchom te narzędzia najpierw przed skontaktowaniem się z pomoc techniczna firmy Microsoft.
Symptomy
Po nawiązaniu połączenia z maszyną wirtualną z systemem Linux za pośrednictwem protokołu SSH połączenie nie powiedzie się. 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 root, lub jeśli jest zapisywalny przez grupę lub przez wszystkich użytkowników.
Aby rozwiązać ten problem, użyj jednego z następujących rozwiązań:
- Rozwiązanie 1: Napraw maszynę wirtualną w trybie online.
- Rozwiązanie 2. Naprawa maszyny wirtualnej w trybie offline.
Rozwiązanie 1. Naprawianie maszyny wirtualnej w trybie online
Poniżej przedstawiono dwie metody naprawy maszyny wirtualnej w trybie offline:
Użyj konsoli szeregowej
Z portalu Azure, nawiąż połączenie z konsolą szeregową maszyny wirtualnej.
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ą:
Używanie rozszerzenia "Uruchom polecenie"
Uwaga
Ta metoda opiera się na agencie maszyny wirtualnej Azure Linux (waagent). W związku z tym upewnij się, że agent jest zainstalowany na maszynie wirtualnej i że jego usługa jest uruchomiona.
W portalu Azure otwórz okno Properties 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 portalu Azure, znajdź ustawienia maszyny wirtualnej, a następnie wybierz pozycję Uruchom polecenie w obszarze Operations.
Wykonaj następujący skrypt powłoki, wybierając RunShellScript>Uruchom:
- Po zakończeniu wykonywania skryptu w oknie konsoli danych wyjściowych zostanie wyświetlona informacja "Włączenie zakończone pomyślnie".
Jeśli możesz nawiązać połączenie z maszyną wirtualną za pośrednictwem protokołu SSH i chcesz przeanalizować szczegóły wykonywania skryptu Uruchom polecenie, sprawdź plik handler.log w katalogu /var/log/azure/run-command .
Rozwiązanie 2. Naprawa maszyny wirtualnej w trybie offline
Uwaga
- Użyj tej rezolucji, jeśli konsola szeregowa maszyny wirtualnej jest niedostępna i waagent nie jest gotowy.
- W systemie Ubuntu katalog /var/run/sshd jest uruchamiany w pamięci. Ponowne uruchomienie maszyny wirtualnej spowoduje również rozwiązanie problemu. 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żyj polecenia az vm repair
az vm repair, część rozszerzenia vm-repair dla Azure CLI, jest opisany w Naprawa maszyny wirtualnej z systemem Linux przy użyciu polecenia naprawy maszyny wirtualnej Azure.
Wykonaj następujące kroki, aby zautomatyzować manualny proces offline:
Uwaga
W kolejnych krokach odpowiednio zastąp wartości: $RGNAME, $VMNAME, $USERNAME, $PASSWORD, i repairdiskcopy.
Użyj polecenia az vm repair create, aby utworzyć maszynę wirtualną naprawy. Maszyna wirtualna naprawy 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 repairdiskcopyZaloguj się do maszyny wirtualnej do naprawy. Zainstaluj i chroot w systemie 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ą:
Po zastosowaniu zmian uruchom następujące
az vm repair restorepolecenie, aby wykonać automatyczną zamianę dysku systemu operacyjnego na oryginalną maszynę wirtualną.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Korzystanie z metody ręcznej
Jeśli ani konsola szeregowa, ani metoda az vm repair nie mają zastosowania lub zawodzą, naprawa musi zostać przeprowadzona ręcznie. Aby ręcznie dołączyć dysk systemu operacyjnego do maszyny wirtualnej do odzyskiwania i przywrócić dysk systemowy do pierwotnej maszyny wirtualnej, wykonaj poniższe kroki:
- Podłącz dysk systemu operacyjnego do maszyny wirtualnej odzyskiwania przy użyciu portalu Azure.
- Dołącz dysk systemu operacyjnego do maszyny wirtualnej odzyskiwania przy użyciu Azure CLI.
Po pomyślnym dołączeniu dysku systemu operacyjnego do maszyny wirtualnej odzyskiwania postępuj zgodnie ze szczegółowymi instrukcjami chroot, aby zainstalować i chroot w systemach plików dołączonego dysku systemu operacyjnego. Następnie wykonaj krok 3 w sekcji 'Użycie az vm repair', aby rozwiązać problemy z uprawnieniami i własnością.