같이 공부하는 스터디 동료분이 다음과 같은 문제를 겪었다고 하여 같이 해결해보았다.
$ chmod 777 /user/key/directory/yourkey.pem
사실 777
로 때려박으면 안되지만 일단 그냥 넘어갑니다.
이렇게 해서 접속이 된다면 매우 해피하다!
스터디 팀원분이 이렇게 해도 안된다고 하여 이 단계로 넘어오게 되었다.
서버에는 어떤 키 파일로 접속을 할 수 있는지에 대한 정보를 보관하게 되고
거기 있는 정보에 대한 키 파일로만 접속을 할 수 있게 된다.
이렇게 접속이 안되는 상황을 대비해 클라우드 서비스들은 자체 콘솔에서 인스턴스 접속을 할 수 있도록 지원해준다.
(1) EC2 콘솔의 내 인스턴스를 선택해 연결
버튼 클릭
(2) 연결
을 클릭해 접속!
(3) 등록된 authorized_keys
정보를 확인한다.
ubuntu@yourip:~$ cd
ubuntu@yourip:~$ cd ~/.ssh
ubuntu@yourip:~/.ssh$ ls
ubuntu@yourip:~/.ssh$ sudo cat authorized_keys
authorized_keys
자체가 없거나 본인이 소유한 키 파일과 정보가 다르면 접속 인가가 나지 않는다.
위 이미지의 mykey
는 본인이 소유한 키파일 이름이다. EX) mykey.pem
아예 존재조차 하지 않았다면 그냥 두고 있다면 노란 박스 부분을 제외한 저 이상한 문자들을 복사해 잘 저장해둡니다.
(4) 내 키 확인하기
본인 키.pem 파일을 메모장으로 열어 내용물을 확인해보면 서버에 있는 정보와 형식 자체가 아예 다른 걸 알 수 있다.
그럼 어떡하나요
변환하면 된다. pem 형식의 내용물을 서버에 저장된 형태인 ssh 공개키 형태로 바꿔 출력해준다.
$ ssh-keygen -f mykey.pem -y
변환하니까 아까 서버에 있던 그 형태가 나왔다.
(5) 비교하기
서버의 값과 내 키에서 얻은 값이 동일한지 비교합시다.
(6) 키 정보가 다르다면
다르면 당연히 접속이 안되기 때문에 서버의 키 정보를 변경해주어야 합니다.
똑같은 형태로 바꿔줄 것이다.
ssh-rsa 내용물 본인키이름
다시 콘솔에서 접속한 ec2 서버로 돌아와 다음과 같이 입력해줍니다.
authorized_keys
가 있었던 없었던 상관없습니다.
sudo vi authorized_keys
내용물을 모두 지워주고
메모장에 해당 포맷으로 작성해 붙여넣기를 해줍니다.
내 키파일로 부터 얻은 ssh 키 값을 그대로 대체해주는 것입니다.
붙여넣었다면 화면에서 그대로 :
입력 후 wq
를 입력해 저장!
(7) 접속 시도해보기
실수한 게 없다면 키 파일 정보가 같아졌기 때문에 접속이 되어야 합니다.
요렇게 접속이 잘 되면 성공!
구글링 좀 해보니 될 것 같아서 직접 해보면서 도와드렸는데 되서 다행이었다.
사실 사용하면서 저렇게 인증키 정보가 달랐던 적이 한 번도 없었는데
역시 무슨 일이든 언제 어떤 문제가 어떻게 발생할 지 모르기에 늘 긴장해야 하는 것 같다! ㅎㅎ
접속이 잘 되었을 때 안도의 한숨을 내쉬었다.
덕분해 해결했습니다.. 감사합니다..!