본문 바로가기
카테고리 없음

OCI SSH 접속 오류 “Server refused our key” 완벽 해결 가이드 (Ubuntu · Oracle Cloud · Cloud-init)

by 염옥지 2025. 11. 20.
반응형

Oracle Cloud Infrastructure(OCI)로 무료 인스턴스를 만들다 보면 가장 많이 발생하는 오류가 있습니다. 바로 아래 메시지입니다.

Server refused our key
No supported authentication methods available (server sent: publickey)

처음에는 SSH 클라이언트 문제라고 생각하기 쉽지만, 실제 원인은 다릅니다. 이 글에서는 OCI에서 이 오류가 발생하는 구조적 이유와, Ubuntu 계열 인스턴스에서 cloud-init이 SSH 키를 반영하지 않는 문제까지 모두 정리해드립니다.

또 오류가 나니까 좀 딥하게 톺아봤습니다

반응형

1. 오류 원인: “키가 틀려서”가 아니라 “키가 서버에 등록 안 됨”

대부분의 사용자는 “키 파일이 맞는데 왜 연결이 안 되지?”라고 생각합니다. 하지만 이 오류는 거의 100% 다음 두 가지 중 하나입니다.

① 자동 생성된 키쌍이 서버에 반영되지 않음

OCI에서 인스턴스를 생성할 때 자동으로 SSH 키쌍을 생성할 수 있습니다. 문제는 Ubuntu·Sydney 리전 조합에서 cloud-init이 이 키를 authorized_keys에 정상적으로 기록하지 못하는 버그가 자주 발생한다는 점입니다.

즉, 클라이언트가 가진 키는 맞지만, 서버에는 그 키가 등록되지 않은 상태입니다. 그러면 당연히 SSH는 실패합니다.

② 자동 생성 키쌍을 다른 인스턴스에 재등록하면 충돌

OCI의 자동 생성 키쌍은 “그 인스턴스 전용”입니다. 다운로드한 .pub 파일을 다른 인스턴스에 업로드해도 cloud-init이 정상적으로 처리하지 못하는 경우가 많습니다.

특히 Windows 환경에서 .pub 파일을 저장할 때 CRLF 줄바꿈(BOM)이 삽입되면 cloud-init이 공개키를 올바르게 파싱하지 못합니다. 이 경우도 같은 오류가 발생합니다.

2. 문제를 유발하는 조합 (실제 사례 기반)

  • Ubuntu 20.04 / 22.04 / 24.04 기반 이미지 (내가아 우분투로 바꾸다니ㅠ)
  • Region: Sydney, Frankfurt, Seoul
  • SSH 자동 키 생성 + MobaXterm 연결 환경
  • Windows에서 .pub 파일 다운로드 후 업로드한 경우

이 조합에서는 cloud-init이 SSH 키를 정상 등록하지 못하는 사례가 매우 많습니다. DevOps 포럼, Reddit, Oracle 커뮤니티에서도 동일한 패턴이 반복 보고됩니다.

지팔지꼰임..

3. 해결 방법 1 (가장 확실함): 직접 키 생성 → .pub 업로드

가장 성공률이 높은 방법은 로컬에서 직접 SSH 키를 생성한 뒤, 인스턴스 생성 시 .pub 파일을 업로드하는 방식입니다.

ssh-keygen -t rsa -b 4096 -m PEM -f mykey

mykey.pub 파일을 인스턴스 생성 시 “퍼블릭 키 업로드” 항목에 넣어주세요. 이 방식은 AWS · GCP · Azure에서도 통하는 표준 방법이며 Cloud-init 파싱 오류가 거의 없습니다.

SSH 접속은 다음처럼 합니다.

ssh -i mykey ubuntu@{퍼블릭IP}
반응형

4. 해결 방법 2: Serial Console로 authorized_keys 직접 복구

지금 이미 만든 인스턴스가 있고 당장 접근해야 한다면, OCI에서 제공하는 Serial Console을 이용하면 됩니다.

연결 후 아래 명령어로 SSH 키를 수동 등록할 수 있습니다.

sudo mkdir -p /home/ubuntu/.ssh
sudo nano /home/ubuntu/.ssh/authorized_keys

여기에 본인이 가진 .pub 파일 내용을 붙여넣고, 권한 설정을 합니다.

sudo chmod 700 /home/ubuntu/.ssh
sudo chmod 600 /home/ubuntu/.ssh/authorized_keys
sudo chown ubuntu:ubuntu /home/ubuntu/.ssh -R

이렇게 하면 SSH 접속이 즉시 정상 작동합니다.

5. Oracle Linux에서는 왜 잘 되고 Ubuntu에서만 문제일까?

Oracle Linux는 OCI에서 공식적으로 테스트되는 기본 OS 계열이기 때문에 cloud-init 스크립트가 안정적입니다.

반면 Ubuntu는 cloud-init의 버전별 차이 + 지역별 메타데이터 반영 시점 차이 때문에 SSH 공개키 등록 실패율이 더 높습니다. 그래서 안정적인 운영 목적이라면 Ubuntu 대신 Oracle Linux를 권장하는 이유가 이것입니다.

반응형

정리

“Server refused our key” 오류의 진짜 원인은 대부분 SSH 키가 틀린 것이 아니라, OCI 서버에서 키가 등록되지 않은 상태입니다. Ubuntu·Sydney 조합에서는 cloud-init 버그로 인해 이러한 현상이 자주 발생합니다.

가장 좋은 해결책은 직접 생성한 SSH 키를 사용하고, .pub 파일을 정확히 업로드하는 것입니다. 이미 생성된 인스턴스라면 Serial Console을 사용하여 직접 authorized_keys를 복구할 수 있습니다.

이 글이 같은 문제를 해결하려는 분들께 도움이 되셨다면, 댓글로 질문 남겨주세요!

 

반응형