Rozwiązywanie problemów z połączeniem SSH na maszynie wirtualnej z systemem Linux platformy Azure z powodu problemów z uprawnieniami i własnością
Dotyczy: ✔️ maszyny wirtualne z systemem Linux
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.
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 głównego, lub jeśli jest zapisywalny lub zapisywalny w grupie.
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:
Korzystanie z konsoli szeregowej
Połącz się z konsolą szeregową maszyny wirtualnej z witryny 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ą:
Używanie rozszerzenia "Uruchom polecenie"
Uwaga
Ta metoda opiera się na agencie maszyny wirtualnej z systemem Linux platformy Azure (waagent). W związku z tym upewnij się, że agent jest zainstalowany na maszynie wirtualnej i że jego usługa jest uruchomiona.
W witrynie 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 witryny 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 pozycję Uruchom skrypt RunShellScript>:
- Po zakończeniu wykonywania skryptu w oknie konsoli danych wyjściowych 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 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 tego rozwiązania, jeśli dostęp do konsoli szeregowej maszyny wirtualnej jest niedostępny i agent 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:
Korzystanie z polecenia az vm repair
Część az vm repair
rozszerzenia vm-repair dla interfejsu wiersza polecenia platformy Azure została opisana w temacie Naprawianie maszyny wirtualnej 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 zastąp $RGNAME
odpowiednio wartości , $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 repairdiskcopy
Zaloguj się do naprawy maszyny wirtualnej. 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 restore
polecenie, 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 zarówno konsola szeregowa, jak i az vm repair
podejście nie mają zastosowania do Ciebie lub nie powiedzie się, 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 witryny 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 w systemach plików dołączonego dysku systemu operacyjnego. Następnie wykonaj krok 3 w sekcji Używanie polecenia az vm repair , 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 na temat platformy Azure.