본문 바로가기
삽질/Ubuntu, Linux

[ Ubuntu 삽질 ] SSH 접속이 안될때 해결법 (REMOTE HOST IDENTIFICATION HAS CHANGED)

by SteadyForDeep 2021. 3. 15.
반응형

//1

삽질이라 할 것 까지는 없고 아주 간단하게 해결이 된다.

 

ssh는 ECDSA key라는 키를 통해서 누가 접속하는지 확인하고

확인되는 접속자에 한해서 접속을 허락한다.

 

그런데 빡쳐서 우분투를 밀어버렸거나 ssh를 새로 받았거나 하는 등의 이벤트가 발생하면

이 키가 달라질 수 있다.

 

정상적으로 SSH 키를 발급받고 관리하는 사람들과는 달리 일반적으로는

자동으로 발급해주는 키를 사용하므로 이런 문제가 발생하면 당황하는 경우가 있다.

 

 

 

 

//2

누군가 더러운 짓을 했을 수도 있다고 친절히 알려주는 ssh.

이 경우에는 아주 쉽게 해결이 가능하다.

 

몇줄 더 내려가보면 SHA로 시작하는 함호가 있을텐데 이게 우리가 발급받은 ssh키에 해당한다.

그리고 

 

Please contact your system administrator.
Add correct host key in KNOWN_HOSTS to get rid of this message.

 

이라는 워닝이 나올텐데 내 컴퓨터의 WSL이 지금 어디에서 SSH키를 얻어오는지 알려주는 것이다.

KNOWN_HOSTS 라는 것이 어디에 위치하는지는 제각각일 수 있다.

따라서 저 디렉토리에 접근해서 키를 지워버리면 키를 새로 발급받을 수 있다.

Power Shell을 쓰는 경우에는 윈도우 유저 디렉토리이기 때문에 쉽게 접근이 가능해

지워 버릴 수 있지만 WSL의 경우는 이 디렉토리에 GUI로 접근하는게 불가능하다.

 

따라서

$ ssh-keygen -f "KNOWN_HOST" -R "[HOST_IP]:PORT"

이 명령어로 지워버릴 수 있다.

따옴표, 대괄호 모두 그대로 적고 대입하면 된다.

 

ssh-keygen : ssh 키의 생성과 관리를 수행하는 명령어다.

-f "file_name" : 따옴표 안에 지정한 파일을 관리하고자 할때 쓰는 옵션이다.

-R "[host_ip]:port" : 따옴표 안에 지정한 컨넥션에 관한 키를 지우는 작업이다.

 

참고로 계정 명이 AAA라면 /home/AAA에서

$ ls -a

를 통해서 숨겨진 디렉토리를 모두 볼 수 있다.

리눅스에서는 .으로 시작하는 디렉토리를 숨겨준다.

여기서 .ssh 로 들어가보면 키를 관리하는 파일이 무엇인지 확인할 수 있다.

 

 

 

 

반응형

댓글