일상 정보

[IT] Google Cloud VM에서의 "SSH authentication has failed"

주인 주시자 2025. 5. 27. 18:14
728x90
반응형
SMALL

부제: 인증 문제 없는 인증 문제🤣

 

구글 클라우드(GCP)에서 "SSH authentication has failed"라는 오류를 처음 접하면, 일반적으로 키 인증 문제를 의심하게 된다. 하지만 이번에 필자가 경험한 사례처럼, 디스크 용량 부족(No space left on device)으로 인해 SSH 자체가 정상 작동하지 못하는 경우도 있다😨.

이 글에서는 해당 문제의 정확한 원인과 해결 과정을 기록해두며, 유사한 문제를 겪는 사용자에게 실질적인 도움을 주고자 한다.


🔍 문제 상황 요약

    • GCP VM에 SSH 접속을 시도할 때 아래와 같은 오류 메시지 출력
      • 터미널에서 ssh로 접속하면 "Permission denied (publickey)" 등의 메시지가 뜬다
      • GCP 콘솔에서는 "SSH authentication has failed"가 뜬다.
      • GCP 콘솔 > VM 인스턴스 > 인스턴스 클릭 > 로그 문단의 직렬 포트 1(콘솔)을 클릭하면 로그 말미에 " No space left on device"가 있다.

🎯 근본 원인 분석

이 오류는 사실상 디스크 용량이 100% 찬 상태에서 발생한 문제였다. GCP에서는 디스크 용량이 가득 차면 다음과 같은 일이 발생한다😱. 

  1. 사용자 로그인 후 필요한 임시 파일(.Xauthority, .bash_history 등)을 생성할 수 없고, 로그인 후 세션을 유지하거나, .bashrc, .profile 등을 읽어오는 등 실행되어야 할 것들이 정상적으로 실행되지 않음
  2. 따라서, 인증 이후에도 세션이 유지되지 않아 접속이 강제로 끊김
  3. 결과적으로 SSH 인증 실패처럼 보이는 현상이 나타남

이와 같은 원인으로 단순히 디스크 사이즈를 늘려도, 이미 가득 찬 상태에서는 OS 내에서 디스크 파티션 재확장, 파일 삭제 등 조작 자체가 불가하다. 이 때문에 다음과 같은 작업이 필수다.

 

🛠 해결 방법

1. 문제가 발생한 VM 종료 및 디스크 분리

  • GCP 콘솔(Google Cloud Console) 접속
  • Compute Engine > VM 인스턴스로 이동
  • 문제가 발생한 VM 선택 후, 인스턴스를 중지 (⚠️ 이 작업은 인스턴스가 반드시 중지된 상태에서 진행해야 한다)
  • 부팅 디스크 항목 클릭 → 디스크 관리 화면으로 이동
  • 해당 디스크를 Detach(연결 해제)
    .

2. 새 임시 VM 인스턴스 생성

  • 같은 리전에 임시로 사용할 새 VM 생성 (예: temp-vm)
  • 디스크는 작고 가벼운 이미지(예: Ubuntu minimal)로 생성

3. 문제 디스크를 임시 VM에 마운트

  • 생성한 임시 VM의 디스크 설정으로 이동
  • 앞서 분리한 문제 디스크를 추가 디스크로 연결(인스턴스에서 수정을 하면 추가 디스크를 연결 항목이 있음)
  • 콘솔에서 SSH로 temp-vm 접속 후, 디스크 확인
lsblk

 

  • 일반적으로 /dev/sdb1 또는 /dev/sdc1 등으로 나타남
  • 디스크 마운트
sudo mkdir /mnt/recover 
sudo mount /dev/{추가된 디스크의 부팅 영역(ex> sdb1)} /mnt/recover

 


4. 디스크 내 불필요한 파일 삭제

  • 디스크 사용량 분석(/mnt/recovery 1 depth 폴더와 파일 기준으로 용량 기준 상위 20개 출력)
sudo du -sh /mnt/recover/* | sort -hr | head -n 20
 
  • 주로 아래 위치에서 공간을 많이 차지함:
    • /var/log → 로그 누적
    • /tmp → 임시파일
    • /home/사용자/Downloads, .cache
    • /usr/lib 또는 /var/lib/docker (도커 이미지 누적)
  • 불필요한 로그 및 캐시 파일 삭제

5. 디스크 언마운트 후 다시 원래 VM에 부착

  • 정리가 끝난 디스크는 임시 VM에서 디스크 언마운트
sudo umount /mnt/recover
  • GCP 콘솔에서 해당 디스크를 임시 VM에서 제거
  • 다시 원래 문제가 발생했던 VM에 부팅 디스크로 설정 후 연결

6. VM 재시작 및 SSH 접속 테스트

  • 원래 VM 인스턴스를 시작
  • GCP 콘솔에서 SSH 접속 재시도

이후 정상적으로 접속이 이루어진다면, 용량 부족으로 인해 정상 동작하지 못했던 것이 주요 원인임을 확인할 수 있다 ✅


📌 팁: VM 디스크 자동 용량 모니터링 스크립트

  • 서버에 아래와 같은 스크립트를 주기적으로 실행하거나, 접속 시, .bashrc에서 불러오도록 하면 좋다.
#!/bin/bash 

THRESHOLD=90 
USAGE=$(df -h / | grep -v Filesystem | awk '{print $5}' | sed 's/%//') 

if [ "$USAGE" -gt "$THRESHOLD" ]; then 
    echo "⚠️ 디스크 사용량 $USAGE% 초과! 정리 필요!" 
fi
  • 크론탭에 등록하거나, Cloud Monitoring 알림 조건에 디스크 사용량 90% 이상 트리거를 설정하는 것도 추천한다.

이와 같은 절차를 미리 알고 있으면, VM이 “접속 불가” 상태로 멈추는 사태를 빠르게 해결할 수 있다. GCP를 실무에서 활용하는 사용자라면(이런 일이 발생하지 않게 모니터링하고 있겠지만🤣) 꼭 숙지해야 할 팁이다 💡.

(필자는 반나절을 날렸다😥)

 

인증 문제 없는 인증 문제🤣

728x90
LIST