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
Uwaga 16.
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ą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ą:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
Używanie rozszerzenia "Uruchom polecenie"
Uwaga 16.
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>:
#!/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 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 16.
- 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 automatycznej naprawy systemu Linux platformy Azure (ALAR)
Skrypty automatycznej naprawy systemu Linux (ALAR) platformy Azure są częścią rozszerzenia naprawy maszyny wirtualnej opisanego 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 16.
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ą:
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 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 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 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 usługi Azure Linux Auto Repair (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 na temat platformy Azure.