Linux 인스턴스 연결 문제
본 문서는 Linux 환경에서 SSH를 이용한 인스턴스 접속 문제와 해결 방법을 설명합니다.
- 사전 점검 항목
- SSH 오류 메시지
- 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
사전 점검 항목
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 접속 시도 시 발생할 수 있는 오류 메시지와 해결 방법은 다음과 같습니다.
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 키 파일이 존재하는지 확인하고, 해당 키 파일이 저장된 디렉터리에 접근 가능한지 점검합니다.
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 서버까지의 네트워크가 정상적으로 연결되어 있는지 확인합니다.
- 보안 설정 점검: 보안 그룹에서 연결이 허용되었는지, 라우팅 테이블에 문제가 없는지 점검하여 통신 구간에 장애가 없는지 확인합니다.
- 인스턴스 상태 확인: 카카오클라우드 콘솔에서 해당 인스턴스가 Active 상태인지 확인합니다.
- 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@'{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 키 삭제 후 재접속
HOST 키를 삭제 후 SSH 재접속을 수행합니다.
-
SSH 클라이언트에서
~/.ssh/known_hosts
파일을 엽니다. -
출발지 서버의 등록된 HOST 키 행을 삭제하고 저장합니다.
-
이후 다시 SSH 접속을 시도합니다.
ssh -i {SSH 키 파일} ubuntu@'{HOST}'
-
-
해결 방안 2:
-o StrictHostKeyChecking=no
옵션 사용해당 서버에 접속할 때마다,
-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).
▶️ 해결 방법: 이 오류의 원인을 파악한 후, 상황에 따라 아래 조치를 취합니다.
1. SSH 키 파일 확인: 올바른 SSH 키 파일을 사용하고 있는지, 키 파일의 경로와 권한이 적절히 설정되었는지 점검합니다.
ssh -i {SSH 키 파일} ubuntu@{HOST}
2. 사용자 이름 확인: 인스턴스에 설정된 정확한 사용자 이름(예: ubuntu 또는 root)을 확인하고, 올바르게 입력했는지 점검합니다.
3. 키 지정 여부 확인: SSH 접속 명령어에 -i 옵션으로 키 파일이 지정되었는지 확인합니다.
4. 인스턴스 SSH 키 세팅 점검: 카카오클라우드에서 인스턴스를 생성할 때, 인스턴스가 메타데이터 서버(169.254.169.254
)와 통신하여 SSH 키를 설정합니다.
만약 보안 그룹 설정으로 인해 메타데이터 서버와의 통신이 차단되면 SSH 키 세팅이 실패할 수 있습니다. 이와 같은 경우에는 보안 그룹 설정을 통해 해결할 수 있습니다.
-
최초 인스턴스 생성 시, 메타데이터 서버(169.254.169.254)와 통신이 가능하도록 다음과 같이 보안 그룹 규칙을 설정할 수 있습니다.
프로토콜 출발지 포트 번호 HTTP 0.0.0.0/0
(또는 적절한 범위)80
이와 같은 조치를 통해 대부분의 Permission denied
오류를 해결할 수 있습니다.
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 문서를 참고하여 네트워크 구성을 검토하고, 게이트웨이, 라우팅 테이블 설정을 확인합니다.