인스턴스 연결 문제 (Linux)
본 문서는 Linux 환경에서 SSH를 이용한 인스턴스 접속 문제와 해결 방법을 설명합니다.
- 사전 점검 항목
- SSH 에러 메시지
- connect to host
{서버 IP}
port 22: No Route to host - WARNING: UNPROTECTED PRIVATE KEY FILE!
- Load key
{SSH 키 파일}
: invalid format - Warning: Identity file
{SSH 키 파일}
not accessible: No such file or directory. - ssh: connect to host
{Host}
port 22: Operation timed out - WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- Permission denied (publickey), Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
- ssh connect to host
{서버 IP}
port 22: Network is unreachable
- connect to host
사전 점검 항목
Linux 서버의 SSH 접속 문제를 해결하기 전에, 다음 항목들을 먼저 확인하시기 바랍니다.
기본 사용자 이름 확인
인스턴스의 기본 사용자 이름(Default username)은 다음과 같으며, 콘솔에서도 확인 가능합니다.
- 경로: 카카오클라우드 콘솔 > Virtual Machine > 인스턴스 탭 > 해당 인스턴스의 [더 보기] 아이콘 > SSH 연결
OS | 기본 사용자 이름(Default username) |
---|---|
Ubuntu | ubuntu |
CentOS | centos |
Rocky Linux | rocky |
Alma Linux | almalinux |
카카오클라우드는 기본으로 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
등 리눅스 환경에서 네트워크 환경 설정 데몬을 통해, 사용자가 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 키 파일의 권한 설정을 변경합니다.
-
SSH 키 파일의 현재 권한을 확인합니다.
ls -al {SSH 키 파일}
-
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 키 파일을 열어 내용을 확인합니다.
정상적인 키인 경우 아래의 포맷입니다. 이 형식이 아닐 경우 정상적인 키 인지 확인하시기 바랍니다. 키 파일에 문제가 있는 경우 신규 키 페어를 발급받아 복구해야 합니다. 자세한 정보는 인스턴스 키 페어 분실 해결 문서를 참고하시기 바랍니다.
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 재접속을 수행합니다.
-
SSH 클라이언트에서
~/.ssh/known_hosts
파일을 엽니다. -
출발지 서버의 등록된 HOST 키 행을 삭제하고 저장합니다.
-
이후 다시 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 문서를 참고하여 네트워크 구성을 검토하고, 게이트웨이, 라우팅 테이블 설정을 확인합니다.