Q: VM에 SSH 접속이 되지 않거나 'Connection Refused' 오류가 발생합니다.
상세 설명: 일반적으로 'Connection Refused' 는 인스턴스가 켜져 있고 네트워크 도달이 가능하지만, 22번 포트(SSH)에서 연결을 거부하고 있음을 의미합니다(서비스 미구동, 설정 오류 등).
반면, 접속 자체가 되지 않고 'Timeout' 이 발생한다면 방화벽이나 네트워크 라우팅 문제를 의심해야 합니다.
해결 가이드:
1. 자동화된 문제 해결 도구 사용
가장 먼저 gcloud CLI의 진단 도구를 사용하여 사용자 권한, 네트워크 상태, VM 상태를 한 번에 점검합니다.
gcloud compute ssh {VM_NAME} --project={PROJECT_ID} --zone={ZONE} --troubleshoot
2. 방화벽 규칙 확인 (Timeout 발생 시)
- 원인: SSH 트래픽(TCP:22)이 방화벽에서 차단되었습니다.
- 해결: VPC 방화벽 규칙에서 tcp:22 인바운드 허용 규칙을 확인합니다.
- IAP 사용 시 필수: 소스 IP 범위 35.235.240.0/20 에서 들어오는 tcp:22 트래픽을 허용해야 합니다.
3. IAM 권한 및 OS Login 확인 ('Permission denied' 발생 시)
- 원인: 사용자 계정에 적절한 IAM 역할이 부여되지 않았습니다.
- 해결: VM 설정(메타데이터)의 enable-oslogin 값에 따라 필요한 권한이 다릅니다.
- OS Login 활성화(TRUE) 시: 사용자에게 roles/compute.osLogin(일반 권한) 또는 roles/compute.osAdminLogin(관리자/sudo 권한)이 있어야 합니다.
- OS Login 비활성화(FALSE) 시: SSH 키 메타데이터를 수정할 수 있는 roles/compute.instanceAdmin.v1 역할이 필요합니다.
4. 부팅 상태 및 sshd 데몬 확인 ('Connection Refused' 발생 시)
- 원인: VM이 부팅 중이거나, sshd 데몬이 죽었거나 설정 파일(/etc/ssh/sshd_config)이 손상되었습니다.
- 해결:
- 시리얼 콘솔 출력 확인: Google Cloud Console에서 '직렬 포트 출력' 로그를 확인하여 부팅 완료 여부와 에러 메시지를 확인합니다.
- 시작 스크립트 활용: sshd 설정이 꼬여 접속이 안 될 경우, VM을 재시작하면서 시작 스크립트(Startup Script) 에 sudo service ssh restart 혹은 sudo sshd -t(설정 검사) 등의 명령어를 추가하여 복구를 시도합니다.
5. 디스크 용량 부족 (Disk Full)
- 원인: 부트 디스크가 100% 가득 차면 SSH 키를 생성하거나 로그를 쓸 수 없어 접속이 거부됩니다.
- 해결: 디스크 크기를 조정한 후 VM을 재부팅합니다.
관련 공식 문서:
[+] SSH 연결 문제 해결
[+] IAP를 사용한 TCP 전달(SSH)
TCP 전달을 위한 IAP 사용 | Identity-Aware Proxy
[+] OS 로그인 설정
댓글
댓글 0개
댓글을 남기려면 로그인하세요.