권한 및 소유권 문제로 인해 Azure Linux VM의 SSH 연결 문제 해결
적용 대상: ✔️ Linux VM
참고 항목
이 문서에서 참조하는 CentOS는 Linux 배포이며 EOL(수명 종료)에 도달합니다. 사용 및 계획을 적절하게 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조 하세요.
이 문서에서는 RHEL의 /var/empty/sshd 디렉터리로 인해 SSH(Secure Shell)를 통해 Linux VM(가상 머신)에 연결하는 데 실패하는 문제에 대한 솔루션을 제공합니다. SUSE의 /var/lib/empty 디렉터리 또는 Ubuntu의 /var/run/sshd 디렉터리가 없거나 루트 사용자가 소유하지 않았거나 그룹 쓰기 가능 또는 세계 쓰기 가능 디렉터리입니다.
증상
SSH를 통해 Linux VM(가상 머신)에 연결하면 연결이 실패합니다. Linux 배포에 따라 영향을 받는 디렉터리에 대해 다음과 같은 오류 메시지가 표시될 수 있습니다.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
원인
이 문제는 영향을 받는 디렉터리가 루트 사용자가 소유하지 않거나 그룹 쓰기 가능 또는 세계 쓰기 가능인 경우에 발생할 수 있습니다.
이 문제를 해결하려면 다음 해결 방법 중 하나를 사용합니다.
해결 방법 1: 온라인으로 VM 복구
다음은 오프라인으로 VM을 복구하는 두 가지 방법입니다.
직렬 콘솔 사용
Azure Portal에서 VM의 직렬 콘솔에 연결합니다.
로컬 관리 계정 및 해당 자격 증명 또는 암호를 사용하여 VM에 로그인합니다.
권한 및 소유권 문제를 해결하려면 다음 명령을 실행합니다.
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
"명령 실행" 확장 사용
참고 항목
이 메서드는 Azure Linux VM 에이전트(waagent)를 사용합니다. 따라서 에이전트가 VM에 설치되어 있고 해당 서비스가 실행 중인지 확인합니다.
Azure Portal에서 VM의 속성 창을 열어 에이전트 상태를 확인합니다. 에이전트가 사용하도록 설정되어 있고 준비 상태가 있는 경우 다음 단계에 따라 사용 권한을 변경합니다.
Azure Portal로 이동하여 VM 설정을 찾은 다음 작업에서 명령 실행을 선택합니다.
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
- 스크립트 실행이 완료되면 출력 콘솔 창에 "성공 사용" 메시지가 표시됩니다.
SSH를 통해 VM에 연결할 수 있고 실행 명령 스크립트 실행의 세부 정보를 분석하려는 경우 /var/log/azure/run-command 디렉터리에서 handler.log 파일을 검사합니다.
해결 방법 2: 오프라인으로 VM 복구
참고 항목
- VM 직렬 콘솔 액세스를 사용할 수 없고 waagent가 준비되지 않은 경우 이 해결을 사용합니다.
- Ubuntu 에서 /var/run/sshd 디렉터리가 메모리에서 실행됩니다. VM을 다시 시작하면 문제가 해결됩니다. 따라서 Ubuntu VM의 오프라인 문제 해결은 필요하지 않습니다.
다음은 오프라인으로 VM을 복구하는 두 가지 방법입니다.
ALAR(Azure Linux 자동 복구) 사용
ALAR(Azure Linux 자동 복구) 스크립트는 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구에 설명된 VM 복구 확장의 일부입니다.
수동 오프라인 프로세스를 자동화하려면 다음 단계를 수행합니다.
참고 항목
다음 단계에서는 그에 따라 , $VMNAME
, $USERNAME
및 $PASSWORD
repairdiskcopy
값을 바꿉$RGNAME
다.
az vm repair create 명령을 사용하여 복구 VM을 만듭니다. 복구 VM에는 문제가 있는 VM에 대한 OS 디스크 복사본이 연결되어 있습니다.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
복구 VM에 로그인합니다. OS 디스크의 연결된 복사본의 파일 시스템에 탑재하고 크로트합니다. 자세한 크로트 지침을 따릅니다.
다음 명령을 실행하여 권한 및 소유권 문제를 해결합니다.
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
변경 내용이 적용되면 다음
az vm repair restore
명령을 실행하여 원래 VM과 자동 OS 디스크 교환을 수행합니다.az vm repair restore --verbose -g $RGNAME -n $VMNAME
수동 메서드 사용
직렬 콘솔과 ALAR 접근 방식이 모두 적용되지 않거나 실패하는 경우 복구를 수동으로 수행해야 합니다. 다음 단계에 따라 OS 디스크를 복구 VM에 수동으로 연결하고 OS 디스크를 원래 VM으로 다시 교환합니다.
OS 디스크가 복구 VM에 성공적으로 연결되면 자세한 chroot 지침 에 따라 연결된 OS 디스크의 파일 시스템에 탑재하고 크로트합니다. 그런 다음 Azure Linux ALAR(자동 복구) 섹션의 3단계에 따라 권한 및 소유권 문제를 해결합니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.