본문으로 건너뛰기

인스턴스 연결 문제 (Linux)

본 문서는 Linux 환경에서 SSH를 이용한 인스턴스 접속 문제와 해결 방법을 설명합니다.


사전 점검 항목​

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

기본 사용자 이름 확인​

인스턴스의 기본 사용자 이름(Default username)은 다음과 같으며, 콘솔에서도 확인할 수 있습니다.

  • 경로: 카카오클라우드 콘솔 > Virtual Machine > 인스턴스 탭 > 해당 인스턴스의 [더보기] 아이콘 > SSH 연결
OS기본 사용자 이름(Default username)
Ubuntuubuntu
CentOScentos
Rocky Linuxrocky
Alma Linuxalmalinux
안내

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

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

  • 출발지에서 Linux 서버까지 네트워크가 정상적으로 연결되어 있는지 확인합니다.
  • 인스턴스와 연결된 보안 그룹에서 연결이 허용되었는지, 또는 라우팅 테이블을 확인하여 통신 구간에 문제가 없는지 점검합니다.

Linux 서버 상태 확인​

Linux 서버가 정상적으로 동작하고 있는지 상태를 확인합니다.

  • 카카오클라우드 콘솔에서 해당 인스턴스가 Active 상태인지 확인합니다.
  • 인스턴스의 시스템 로그에 { Hostname } login: 이 출력되어 있는지 확인합니다.
    • 경로: 카카오클라우드 콘솔 > Virtual Machine > 인스턴스 탭 > 해당 인스턴스의 [더보기] 아이콘 > 시스템 로그 확인

SSH 오류 메시지​

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

connect to host {서버 IP} port 22: No Route to host​

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

ssh -i {SSH 키 파일} ubuntu@'{HOST}' -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 '{HOST}' 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 '{HOST}' ['{HOST}'] port 22.
debug3: set_sock_tos: set socket 3 IP_TOS 0x10
debug1: connect to address '{HOST}' port 22: No route to host
ssh: connect to host '{HOST}' port 22: No route to host

▶️ 해결 방법

  • 네트워크 환경 설정 데몬의 설정 확인: Systemd 또는 Netplan에서 임의의 네트워크 설정을 하지 않았는지 확인합니다. DHCP를 비활성화하도록 설정을 변경하는 등 네트워크 작업이 있을 경우 정상적으로 SSH 접속을 할 수 없으므로, 오류 메시지가 발생할 경우 설정이 정상인지 점검합니다.

WARNING: UNPROTECTED PRIVATE KEY FILE!​

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

키 파일 권한 문제
ssh -i {SSH 키 파일} ubuntu@'{HOST}' -v

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0666 for '{SSH 키 파일}' are too open.
It is required that your private 키 파일s 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@{HOST}  
Load key "{SSH 키 파일}": invalid format
{HOST}: 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@{HOST}
Warning: Identity file {SSH 키 파일} not accessible: No such file or directory.
{HOST}: Permission denied (publickey).

▶️ SSH 키 파일이 있는지 확인하고, SSH 키 파일이 위치한 디렉터리에 접근이 가능한지 확인합니다.

ls -al {SSH 키 파일}


ssh: connect to host {Host} port 22: Operation timed out​

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

ssh -i {SSH 키 파일} ubuntu@'{HOST}' -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 '{HOST}' port 22.
debug1: connect to address '{HOST}' port 22: Operation timed out
ssh: connect to host '{HOST}' port 22: Operation timed out

▶️ 문제 해결을 위해 다음 항목을 확인합니다.

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

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!​

이 오류는 SSH 클라이언트가 이전에 연결한 서버의 식별 정보가 변경되었음을 나타냅니다. 이러한 변경은 보안 문제를 나타낼 수 있으므로 신중하게 처리해야 합니다.
이 오류는 다음 상황에서 발생할 수 있습니다.

  • 서버의 HOST 키가 변경됨: SSH 서버의 HOST 키가 변경되었을 때 발생합니다. HOST 키는 서버를 고유하게 식별하고 연결의 보안성을 보장하는 데 사용됩니다. HOST 키는 일반적으로 SSH 클라이언트에서 처음 연결할 때 생성되며, 서버에서 HOST 키가 변경된 경우에는 이러한 경고가 발생할 수 있습니다.
    SSH 서버가 재설정되거나 재설치된 경우에도 HOST 키가 변경될 수 있습니다.

  • 중간자 공격: 중간자 공격의 가능성도 있습니다. 이는 악의적인 공격자가 네트워크 트래픽을 가로채고 변경하는 것을 의미합니다.

    ssh -i {SSH 키 파일} ubuntu@'{HOST}'
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ 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 {HOST} 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@'{HOST}' 
  • 해결 방안 2

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

    ssh -i {SSH 키 파일} -o StrictHostKeyChecking=no ubuntu@'{HOST}' 


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

이 오류는 다양한 원인으로 발생하며 주로 아래와 같은 원인이 있습니다. 아래 명시된 원인뿐만 아니라 다른 이유로도 오류가 발생할 수 있습니다.

  • 다른 SSH 키를 사용하여 SSH 접속을 시도한 경우

  • 잘못된 사용자로 SSH 접속을 시도한 경우

  • 키를 지정하지 않고 SSH 접속을 시도한 경우

  • 인스턴스 생성 후 인스턴스의 SSH 키 설정이 정상적으로 완료되지 않은 상태에서 SSH 접속을 시도한 경우 등

    ssh -i {SSH 키 파일} ubuntu@'{HOST}'

    '{SSH 키 파일} ubuntu@{HOST}': Permission denied (publickey).

▶️ 이 오류의 원인은 다양하므로, 원인에 맞게 필요한 조치를 합니다.

특히 카카오클라우드에서 최초 인스턴스 생성 시 인스턴스 설정을 위해 169.254.169.254(카카오클라우드 메타데이터) 서버와 통신해야 합니다. 보안 그룹 설정으로 인해 169.254.169.254 서버와 통신할 수 없는 경우, 인스턴스의 SSH 키 설정에 문제가 발생하여 해당 오류가 발생할 수 있습니다.
따라서 최초 인스턴스 생성 시 169.254.169.254와 통신을 할 수 있도록 보안 그룹을 설정해야 합니다.



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

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

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

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

    ssh -i {SSH 키 파일} ubuntu@'{HOST}'

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

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