본문으로 건너뛰기

SSH 오류 메시지 및 진단

Linux 환경에서 인스턴스에 SSH로 접속할 수 없을 때 발생하는 오류 메시지를 진단하고, 원인별로 확인해야 할 항목을 안내합니다.


사전 준비​

Linux 서버의 SSH 접속 문제를 해결하기 전에, 다음 항목들을 먼저 확인하시기 바랍니다.

기본 사용자 이름 확인​

Linux 서버에 SSH로 접속하려면 운영 체제(OS)에 맞는 기본 사용자 이름이 필요합니다. 인스턴스 생성 시 사용된 OS에 따라 다르므로, 콘솔 또는 OpenAPI에서 확인합니다.

  1. 콘솔에서 확인: 해당 [⋮] 버튼 > SSH 연결 클릭 후, 팝업창에서 기본 사용자 이름(Default username)을 확인합니다.

  2. OpenAPI로 확인: Get instance API를 호출해 instance.image.os_admin 항목을 확인합니다.

    OS별 기본 사용자 이름은 아래 표를 참고하세요.

    OS기본 사용자 이름(Default username)
    Ubuntuubuntu
    CentOScentos
    Rocky Linuxrocky
    Alma Linuxalmalinux
안내

카카오클라우드는 기본으로 SSH 키 방식의 접속을 지원하며, 기본 포트는 22입니다.

보안 그룹 및 라우팅 테이블 확인​

출발지에서 Linux 서버까지 네트워크가 정상적으로 연결되어 있는지 확인합니다.

  1. 콘솔에서 확인
    • 인스턴스와 연결된 보안 그룹에서 SSH 포트(기본 22번 또는 변경된 포트)가 허용되어 있는지 확인합니다.
    • 라우팅 테이블에서 통신 경로가 올바르게 설정되었는지 점검합니다.
  2. OpenAPI로 확인
    • 보안 그룹: List security groups API를 호출하여 security_group.rules에서 SSH 포트 허용 여부를 확인합니다.
    • 라우팅 테이블: List route tables API를 호출하여 응답의 routes 배열에서 아래 항목을 확인합니다.
      • destination이 0.0.0.0/0인 경우, target_type이 인터넷 게이트웨이 또는 NAT 게이트웨이인지 확인
      • is_local_route: true인 경로가 해당 서브넷 CIDR과 일치하는지 확인

Linux 서버 상태 확인​

Linux 서버가 정상적으로 동작하며 SSH 접속이 가능한 상태인지 확인합니다.

  1. 콘솔에서 확인
    • 카카오클라우드 콘솔에서 해당 인스턴스가 Active 상태인지 확인합니다.
    • 해당 [⋮] 버튼 > 시스템 로그에 { Hostname } login: 이 출력되어 있는지 확인합니다.
  2. OpenAPI로 확인
    • Get instance API를 호출하여 instance.status 값이 ACTIVE인지 확인합니다.
    • Get instance console log API를 호출하여 로그 내용에 {Hostname} login: 문자열이 포함되어 있는지 확인합니다.

SSH 오류 메시지​

SSH 접속 시도 시 발생할 수 있는 오류 메시지와 해결 방법은 다음과 같습니다.

ssh: connect to host {서버 IP} port xx: No route to host​

이 오류는 Systemd 또는 Netplan 등 Linux 환경에서 네트워크 환경 설정 데몬을 통해, 사용자가 DHCP 비활성화 등 네트워크 설정을 임의로 변경했을 때 발생할 수 있습니다.

오류 메시지 예시
   ssh -i {SSH 키 파일} ubuntu@{서버 IP} -v
OpenSSH_9.0p1, Ubuntu-3ubuntu13.8, OpenSSL 3.0.13 30 Jan 2024
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname '{서버 IP}' is address
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/ubuntu/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/ubuntu/.ssh/known_hosts2'
debug3: channel_clear_timeouts: clearing
debug3: ssh_connect_direct: entering
debug1: Connecting to '{서버 IP}' ['{서버 IP}'] port 22.
debug3: set_sock_tos: set socket 3 IP_TOS 0x10
debug1: connect to address '{서버 IP}' port 22: No route to host
ssh: connect to host {서버 IP} port 22: No route to host

▶️ 해결 방법

  • 네트워크 환경 설정 데몬의 설정 확인: Systemd 또는 Netplan에서 임의의 네트워크 설정을 변경하지 않았는지 확인합니다. 예를 들어, DHCP를 비활성화하는 등의 변경이 있을 경우 정상적으로 SSH 접속이 불가능할 수 있습니다. 문제가 지속되면, 루트 볼륨 점검 및 인스턴스 복구 가이드를 참고하여 문제를 해결합니다.

WARNING: UNPROTECTED PRIVATE KEY FILE!​

이 오류는 SSH 키 파일에 너무 많은 권한이 부여된 경우 발생할 수 있습니다.

오류 메시지 예시
ssh -i {SSH 키 파일} ubuntu@{서버 IP} -v

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0666 for '{SSH 키 파일}' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

▶️ 해결 방법: 다음 단계를 따라 SSH 키 파일의 권한 설정을 변경합니다.

  1. SSH 키 파일의 현재 권한을 확인합니다.

    ls -al {SSH 키 파일}
  2. SSH 키 파일을 소유자만 read 할 수 있도록 권한을 변경합니다.

    chmod 0400 {SSH 키 파일}


Load key {SSH 키 파일} : invalid format​

이 오류는 SSH 키 파일이 올바른 형식이 아닐 경우 또는 파일이 손상되었거나 잘못 저장되었을 경우에 발생합니다.

오류 메시지 예시
ssh -i {SSH 키 파일} ubuntu@{서버 IP}
Load key "{SSH 키 파일}": invalid format
{서버 IP}: Permission denied (publickey).

▶️ 해결 방법: SSH 키 파일을 열어 내용을 확인합니다. 키 파일이 정상적인 경우 아래와 같은 포맷을 가지고 있어야 합니다. 만약 이 형식이 아니라면, 키가 올바른지 확인하시기 바랍니다. 키 파일에 문제가 있는 경우, 신규 키 페어를 발급받아 복구해야 합니다. 자세한 정보는 인스턴스 키 페어 분실 해결 문서를 참고하시기 바랍니다.

RSA ssh key format
vi {SSH 키 파일}

-----BEGIN RSA PRIVATE KEY-----
내용...
-----END RSA PRIVATE KEY-----


Warning: Identity file {SSH 키 파일} not accessible: No such file or directory.​

이 오류는 SSH 키 파일을 찾지 못했을 때 발생합니다.

오류 메시지 예시
ssh -i {SSH 키 파일} ubuntu@{서버 IP}
Warning: Identity file {SSH 키 파일} not accessible: No such file or directory.
{서버 IP}: Permission denied (publickey).

▶️ 해결 방법: SSH 키 파일이 존재하는지 확인하고, 해당 키 파일이 저장된 디렉터리에 접근 가능한지 점검합니다.

ls -al {SSH 키 파일}


ssh: connect to host {서버 IP} port xx: Operation timed out​

이 오류는 서버 연결을 시도 중, 타임아웃이 발생했을 때 표시됩니다.

오류 메시지 예시
ssh -i {SSH 키 파일} ubuntu@{서버 IP} -v
OpenSSH_9.0p1, LibreSSL 3.3.6
debug1: Reading configuration data /Users/kakao_ent/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files
debug1: /etc/ssh/ssh_config line 54: Applying options for *
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to '{서버 IP}' port 22.
debug1: connect to address '{서버 IP}' port 22: Operation timed out
ssh: connect to host {서버 IP} port 22: Operation timed out

▶️ 해결 방법

  • 네트워크 연결 상태 확인: 출발지에서 Linux 서버까지의 네트워크가 정상적으로 연결되어 있는지 확인합니다.
  • 보안 설정 점검: 보안 그룹에서 연결이 허용되었는지, 라우팅 테이블에 문제가 없는지 점검하여 통신 구간에 장애가 없는지 확인합니다.
  • 인스턴스 상태 확인: 카카오클라우드 콘솔에서 해당 인스턴스가 Active 상태인지 확인합니다.
  • SSH 데몬 문제 해결: SSH 데몬에 문제가 있어 서버에 SSH로 접속할 수 없는 경우, 직접 접근이 어려운 상황에서는 인스턴스를 재기동하는 방법을 고려합니다.
  • 다중 네트워크 인터페이스 설정 여부 확인: 다중 네트워크 인터페이스를 연결하기 전, 해당 인스턴스에 단일 네트워크 인터페이스를 연결한 상태에서 SSH로 접속하여 라우팅 테이블을 적절히 설정합니다.
  • 정상적으로 SSH 접속을 할 수 없어 문제 해결이 어려운 경우, 루트 볼륨 점검 및 인스턴스 복구 가이드를 참고하여 문제를 해결합니다.

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!​

이 오류는 SSH 클라이언트가 이전에 연결한 서버의 식별 정보가 변경되었음을 나타냅니다. 이는 보안 위협 가능성을 암시할 수 있으므로 신중히 확인해야 합니다. 다음과 같은 상황에서 이러한 오류가 발생할 수 있습니다.

  • 서버의 HOST 키가 변경: SSH 서버의 HOST 키가 변경된 경우 발생할 수 있습니다. HOST 키는 서버를 고유하게 식별하고 연결의 보안성을 보장하기 위해 사용됩니다.

    • HOST 키는 SSH 클라이언트가 서버에 처음 연결할 때 저장되며, 이후 연결 시 동일한 키를 사용해 서버를 인증합니다.
    • 서버가 재설정되거나 재설치된 경우, 새로운 HOST 키가 생성되므로 이러한 경고가 발생할 수 있습니다.
  • 중간자 공격 가능성: 중간자 공격(Man-in-the-Middle Attack)이 발생했을 가능성도 있습니다.

    • 이는 악의적인 공격자가 네트워크 트래픽을 가로채거나 변경하는 공격 방식으로, SSH 연결의 보안을 위협할 수 있습니다.
    • 이 경우, SSH 클라이언트는 서버 식별 정보가 예상과 다르다는 경고를 표시합니다.
    오류 메시지 예시
    ssh -i {SSH 키 파일} ubuntu@{서버 IP}
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that a host key has just been changed.
    The fingerprint for the ED25519 key sent by the remote host is
    SHA256:PtRMM9ps+sHDxMmgDlabcdefghaddfQQpylRabcdefg6bPI.
    Please contact your system administrator.
    Add correct host key in ~/.ssh/known_hosts to get rid of this message.
    Offending ECDSA key in ~/.ssh/known_hosts:25
    Host key for {서버 IP} has changed and you have requested strict checking.
    Host key verification failed.

▶️ 해결 방법: 서버의 HOST 키 변경을 확인하고, 보안 문제가 없음을 전제한 경우, 아래의 방법으로 문제를 해결할 수 있습니다.

  • 해결 방안 1: HOST 키 삭제 후 재접속

    호스트 키를 삭제한 후 SSH 재접속을 수행합니다.

    1. SSH 클라이언트에서 ~/.ssh/known_hosts 파일을 엽니다.

    2. 출발지 서버의 등록된 HOST 키 행을 삭제하고 저장합니다.

    3. 이후 다시 SSH 접속을 시도합니다.

      ssh -i {SSH 키 파일} ubuntu@{서버 IP}
  • 해결 방안 2: -o StrictHostKeyChecking=no 옵션 사용

    해당 서버에 접속할 때마다, -o StrictHostKeyChecking=no 옵션을 추가합니다.

    ssh -i {SSH 키 파일} -o StrictHostKeyChecking=no ubuntu@{서버 IP}


Permission denied (publickey,gssapi-keyex,gssapi-with-mic)​

이 오류는 다양한 원인으로 발생할 수 있으며, 주로 아래와 같은 이유가 해당됩니다. 다만, 여기서 언급된 원인 외에도 다른 요인으로 인해 오류가 발생할 가능성이 있습니다.

  • 다른 SSH 키 사용: 인스턴스에 등록된 것과 다른 SSH 키를 사용하여 접속을 시도한 경우
  • 잘못된 사용자 이름: 올바르지 않은 사용자 계정으로 SSH 접속을 시도한 경우
  • 키 미지정: SSH 접속 시 필요한 키를 지정하지 않고 접속을 시도한 경우
  • SSH 키 세팅 오류: 인스턴스 생성 후 SSH 키 설정이 정상적으로 적용되지 않은 상태에서 접속을 시도한 경우
오류 메시지 예시
ssh -i {SSH 키 파일} ubuntu@{서버 IP}

{서버 IP}: Permission denied (publickey).

▶️ 해결 방법: 이 오류의 원인을 파악한 후, 상황에 따라 아래 조치를 취합니다.

1. SSH 키 파일 확인: 올바른 SSH 키 파일을 사용하고 있는지, 키 파일의 경로와 권한이 적절히 설정되었는지 점검합니다.

ssh -i {SSH 키 파일} ubuntu@{서버 IP}

2. 사용자 이름 확인: 인스턴스에 설정된 정확한 사용자 이름(예: ubuntu 또는 root)을 확인하고, 올바르게 입력했는지 점검합니다.

3. 키 지정 여부 확인: SSH 접속 명령어에 -i 옵션으로 키 파일이 지정되었는지 확인합니다.

4. 인스턴스 SSH 키 세팅 점검: 카카오클라우드에서 인스턴스를 생성할 때, 인스턴스가 메타데이터 서버(169.254.169.254)와 통신하여 SSH 키를 설정합니다. 만약 보안 그룹 설정으로 인해 메타데이터 서버와의 통신이 차단되면 SSH 키 세팅이 실패할 수 있습니다. 이와 같은 경우에는 보안 그룹 설정을 통해 해결할 수 있습니다.

  • 최초 인스턴스 생성 시, 메타데이터 서버(169.254.169.254)와 통신이 가능하도록 다음과 같이 보안 그룹 규칙을 설정할 수 있습니다.

    프로토콜출발지포트 번호
    HTTP0.0.0.0/0 (또는 적절한 범위)80

이와 같은 조치를 통해 대부분의 Permission denied 오류를 해결할 수 있습니다.



ssh connect to host {서버 IP} port xx: Network is unreachable​

이 오류는 목적지 호스트의 경로가 없거나 도달할 수 없을 때 발생합니다. 주로 다음과 같은 이유로 발생할 수 있습니다.

  • 네트워크 구성 오류: 시스템의 네트워크 구성이 잘못되었을 수 있습니다. 잘못된 IP 주소, 서브넷 마스크, 라우팅 테이블 설정 등이 원인이 될 수 있습니다.

  • 게이트웨이 설정 오류: 목적지 호스트로의 경로를 찾기 위해 사용하는 게이트웨이가 올바르게 설정되지 않았을 수 있습니다. 게이트웨이가 네트워크와 연결되어 있지 않거나, 게이트웨이의 설정이 잘못되었을 경우에도 이 오류가 발생할 수 있습니다.

    오류 메시지 예시
    ssh -i {SSH 키 파일} ubuntu@{서버 IP}

    ssh: connect to host {서버 IP} port 22: Network is unreachable

▶️ 해결 방법: VPC 문서를 참고하여 네트워크 구성을 검토하고, 게이트웨이, 라우팅 테이블 설정을 확인합니다.


ssh: connect to host {서버 IP} port xx: Connection refused​

이 오류는 SSH 데몬이 정상적으로 실행 중이더라도, 변경한 포트로의 접속이 차단되거나 해당 포트에서 리스닝하지 않는 경우에 발생할 수 있습니다.

▶️ 해결 방법: SSH 접속 포트 복구 가이드를 참고하여 SSH 포트를 기본값(22번)으로 복원하거나, 변경한 포트를 SELinux 정책에 등록해 허용한 뒤 SSH 서비스를 재시작하여 문제를 해결하세요.