ssh를 이용하여 서버에 접속하려는데, 다음과 같은 오류가 발생하였다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:NsWXs0xi+0042P6rd0ZFLll0Cd4aJUOhITBpMcKerYU.
Please contact your system administrator.
Add correct host key in /Users/ybeen/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/ybeen/.ssh/known_hosts:7
Host key for {YOUR_IP_ADDRESS} has changed and you have requested strict checking.
Host key verification failed.

발생 상황부터 설명하자면 이전에 이미 해당 IP주소에 다른 pem파일로 접속했었는데, aws 인스턴스를 삭제했다가 다시 만들면서 pem 파일을 변경하고 변경한 pem파일로 접속하려니 에러 메세지가 발생했다.

찾아보니 IP로 기존에 접속한 적이 있는 서버와 RSA 공유키를 교환한 상태에서, 서버가 바뀌었기 때문에 오류가 발생하는 것이라 한다.

위의 경고 메시지는 Man in the Middle Attack 이라는 일명 ‘중간자 공격’에 대해 경고한다. 즉, 기존에 서버가 알고있던 정보를 찾아서 따라갔더니- 기존과는 전혀 다른 서버로 접속되었다는 것이다. 하지만 나의 경우는 관리자인 내가 직접 변경한 것이기 때문에 문제는 없다.

해결 방법

해결하기 위해서는 ssh keygen을 초기화 해주면 된다.

ssh-keygen -R {YOUR_IP_ADDRESS}
ex) ssh-keygen -R 123.456.78.9

결과

# Host 123.456.78.9 found: line 5
# Host 123.456.78.9 found: line 6
# Host 123.456.78.9 found: line 7
/Users/.ssh/known_hosts updated.

위 과정을 완료하고 ssh 접속 시도시 아래와 같이 권한 오류가 발생한다면 pem 파일에 400권한을 주면 된다. 자세한 내용은 요기에서 확인!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'asdf.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "asdf.pem": bad permissions
user@123.456.78.9: Permission denied (publickey).

해결방법

chmod 400 asdf.pem

Reference