Skip to main content

SSH 접속 불가 인스턴스, OpenAPI를 활용한 문제 해결

· 5 min read
Erin (오예진)
Cloud Engineer
update

운영 중인 서버의 SSH 포트를 변경하다 설정이 뒤엉키거나, 오랜 기간 접속하지 않아 비밀번호를 분실한 상황, 혹은 갑작스러운 파일 시스템 오류로 부팅이 되지 않는 순간... 클라우드 운영자라면 누구나 한 번쯤 겪어봤을 아찔한 경험입니다.

새로 설정한 포트로도 접속되지 않고, 기존 22번 포트마저 닫혀버려 Connection refusedConnection timeout 메시지만 무심히 반복될 때, 인스턴스는 그야말로 '살아있지만 제어할 수 없는' 고립 상태가 됩니다.

이처럼 인스턴스는 Active 상태이나 내부로 진입할 방법이 없는 절망적인 상황에서, 카카오클라우드 기술문서의 문제 해결 가이드를 바탕으로 OpenAPI를 활용해 데이터 손실 위험을 최소화하며 복구할 수 있는 두 가지 방법을 소개해 드립니다.

💡 방법 1. 사용자 스크립트(user_data)로 자동 복구하기

이 방법은 SSH 포트 설정 오류, SELinux 정책 미등록, 혹은 SSH 비밀번호 분실 같은 '소프트웨어 설정' 이슈가 발생했을 때 특히 유용합니다. 문제가 발생한 인스턴스 내부에서 해결을 시도하는 In-place(기존 환경 수정) 방식 대신, 정상적인 설정이 담긴 스크립트로 자원을 재생성하는 Immutable(불변) 인프라 기반의 교체 방식을 지향합니다.

📍 복구 흐름
기존 인스턴스 이미지 생성 → 복구용 사용자 스크립트 작성 → 스크립트를 주입한 신규 인스턴스 프로비저닝

🩺 세부 점검 및 복구 절차

Step 1. 스냅샷 생성: 인스턴스 상세 조회(Get instance)로 기존 스펙을 확인한 뒤, 이미지 생성(Create image)으로 현재 루트 볼륨의 상태를 이미지로 만듭니다.
- Tip: 메모리의 잔여 데이터까지 안전하게 기록될 수 있도록, 인스턴스 정지(Stop) 후 진행하는 것을 권장합니다.

Step 2. 복구 스크립트 작성: 22번 포트로 원복하거나, 새로운 비밀번호/키페어를 설정하는 내용을 담은 사용자 스크립트(user_data)를 작성합니다. 이 스크립트는 인스턴스 최초 부팅 시 실행되며, API 요청을 위해 Base64 형식으로 인코딩해야 합니다.

Step 3. 인스턴스 프로비저닝: 앞서 생성한 이미지에 복구 스크립트를 실어 인스턴스 생성(Create instance)을 호출합니다. 인스턴스가 생성됨과 동시에 주입된 스크립트가 실행되어, 막혔던 포트 설정을 교정하거나 계정 접속 권한을 즉시 회복합니다.

이 방식은 운영자가 인스턴스 내부에 진입할 수 없는 '고립된 상황'이라도 외부에서 원격으로 설정을 자동 교정할 수 있다는 것이 가장 큰 장점입니다. 장애가 발생한 인스턴스를 직접 수리하기보다, 검증된 환경으로 신속히 교체함으로써 복구 목표 시간(RTO)을 획기적으로 단축할 수 있습니다.

▶︎ SSH 포트 변경 후 접속 불가 복구 문제 해결 가이드

💡 방법 2. 루트 볼륨 직접 점검 활용하기

사용자 스크립트만으로 해결되지 않는 파일 시스템 손상이나 네트워크 구성 파일 오류는 조금 더 직접적인 접근이 필요합니다. 문제가 생긴 볼륨을 잠시 '서브 디스크'로 돌려 엔지니어가 직접 내용을 수정하는 일종의 구조 모드 전략입니다.

📍 복구 흐름
루트 볼륨 스냅샷 생성 → 점검용 인스턴스 연결(Attach) → 데이터 교정(Repair) 및 분리(detach) → 신규 인스턴스 복구

🩺 세부 점검 및 복구 절차

Step 1. 볼륨 스냅샷 및 복원: 원본 데이터 훼손을 막기 위해 문제가 된 루트 볼륨의 스냅샷을 생성(Create snapshot)하고, 이를 기반으로 새로운 볼륨을 복원(Restore snapshot)합니다. 이 과정을 통해 안전한 작업 환경을 확보합니다.

Step 2. 점검용 볼륨 연결: 정상 동작 중인 다른 인스턴스를 '구조대'로 지정하고, 위에서 복원된 볼륨을 해당 인스턴스에 볼륨 연결(Attach volume)합니다.

Step 3. 데이터 마운트 및 교정: 점검용 인스턴스에서 해당 볼륨을 마운트하여 문제가 된 지점을 직접 수정합니다. 주요 점검 및 조치 사항은 다음과 같습니다.

  • 네트워크: /etc/netplan 또는 /etc/sysconfig/network-scripts 내 설정 파일의 오타나 구성 오류를 즉시 수정합니다.
  • 파일 시스템: 마운트 해제 후 xfs_repair 또는 fsck 등의 명령어를 통해 디스크 오류 검사 및 복구를 진행합니다. 이 외에도 시스템 로그 및 구성 환경에 따라 다양한 원인이 있을 수 있으므로 정밀한 진단이 필요합니다.

Step 4. 이미지 생성 및 프로비저닝: 문제를 해결한 볼륨을 다시 분리 (Detach volume)한 뒤, 해당 볼륨을 기반으로 새로운 이미지를 생성합니다. 마지막으로 이 이미지를 사용하여 정상화된 신규 인스턴스를 배포하면 복구가 완료됩니다.

이 방식의 핵심은 장애 인스턴스를 무리하게 복구하는 대신, 정상 인스턴스의 환경을 활용해 문제가 되는 부분(파일 시스템과 네트워크 설정 등)을 직접 수정하는 데 있습니다. 모든 수정이 완료된 볼륨은 다시 이미지화되어, 결함이 해소된 상태의 신규 인스턴스로 재배포됩니다.

▶︎ 루트 볼륨 점검을 통한 인스턴스 복구 문제 해결 가이드

📝 운영자가 기억해야 할 '복구 골든룰'

운영자가 실무에서 체득해야 할 복구의 핵심은 단순히 개별 기능을 사용하는 단계를 넘어 시스템 차원의 복구 체계를 구조적으로 마련하는 데 있습니다. 무엇보다 이미지 생성, 설정 교정, 재배포로 이어지는 클라우드 기반의 흐름을 활용하면, 접속이 차단된 상황에서도 복구 경로를 확보할 수 있습니다.

이 과정에서 데이터 보호는 기본 전제입니다. 복구 작업 전 인스턴스를 정지하고 스냅샷을 생성하는 절차를 습관화하면 데이터 손실 위험을 최소화할 수 있습니다. 또한 복구가 완료된 이후에는 임시 스냅샷, 복원 볼륨, 기존 인스턴스를 정리하여 불필요한 비용이 발생하지 않도록 관리하는 것이 바람직합니다.

장애는 예고 없이 발생하지만, 복구 절차는 사전에 준비할 수 있습니다. 카카오클라우드의 문제 해결 가이드와 OpenAPI를 함께 활용하면 대부분의 접속 장애 상황에서 재현 가능한 복구 경로를 확보할 수 있습니다. 지금 바로 기술문서를 참고하여 여러분의 인프라 환경에 맞는 자동화 복구 시나리오를 점검해 보시기 바랍니다.

👉 지금 바로 카카오클라우드 시작하기