본문으로 바로가기

최근 며칠간 ec2 instance에 vscode remote ssh로 접속하기 위해 작업해왔다. remote ssh instance가 뭔짓거리를해도 permission denied 만 내뱉는바람에 시간을 엄청나게 소모해버렸지만 나름대로 해결책이라는것을 찾게 되었다.

악의 축 key pair

ec2에는 keypair라는것이 있고 이 키페어를 사용해서 ssh 접속을 실행한다. 그런데 터미널에서 시행하면 잘만되던게 remote ssh에서만 작동하지 않았다. 이를 해결하기 위해 30시간 가량을 투자했고 반쪽짜리 이론을 생각해낼 수 있게 되었다.

 

일단 인스턴스를 생성할때 받을 수 있는 키페어의 확장자는 cer이다. 그런데 약 한달전에 생성했던 인스턴스의 키페어의 확장자는 pem이였다. 알아본 바로는 둘다 다를게 별로 없다고 하지만 remote ssh를 사용할때 발생한 이슈는 pem은 되고 cer는 안된다는것이였다. 이를 해결하기 위해 확장자도 바꿔보고 인스턴스내에서 직접 pub확장자로 키를 생성하는등 별짓거리를 다 해봤지만 도움은 되지 않았다. 나중가서는 인스턴스의 설정마저 바꿔보며(인스턴스 20개는 만들고 종료한것같다) 해본결과 한 사실을 알게되었다.

 

인스턴스를 생성할때 받을 수 있는 키페어는 이름과 생성시기에 따라 remote ssh 사용 가능여부가 갈린다는것이였다. 존나 말도안되지만 이게 사실이다. 처음에는 프로젝트 이름으로 키페어를 생성하다가 안되서 멘탈이깨진상태로 test-instance-key라는 이름으로 키페어를 생성했는데 이게 remote ssh에서 먹힌게 발단이였다. 물론 해당 키페어의 확장자는 cer이였고 수없이 생성하고 지운 cer 파일들은 remote ssh에서 오류를 일으키던 와중이였다.

 

그래서 내가 내린 결론은 키페어는 보기에는 똑같을지 몰라도(확장자가 같으니까) 이름등의 변수로 인해 사용 가능여부가 갈리며 그렇게 리세마라를 통해 얻은 키페어를 새로 생성하는 인스턴스에 적용할 경우 remote ssh에서 사용이 가능하다는것이였다. 한마디로 되는게 있고 안되는게 있다. 존나병신같다 이거.

 

어쨋든 리세마라로 뽑은 그 키페어로 새로 생성한 인스턴스에 적용시켜 사용중에 있다. 기존의 서버 세팅을 신규 인스턴스로 이전해야 하지만 그정도야 한번만 하면 되니 답도없는 오류만 쳐맞던 시절보다는 훨씬 낫다.

내가 못쓰는건가

remote ssh를 쓰기 전시절에는 vscode말고 vi툴을 쓰는 방법밖에는 없어서 git을 코드 파이프라인으로 사용하고 있었다(정신나간 행동) 어떻게쓰냐면 코드 한개 바꿀때마다 git local push, ssh connect, git pull 방식이였다ㅋㅋㅋ 이 방식에 필자도 문제의식을 가지고 remote ssh 도입을 시도해본것인데 이렇게까지 스트레스를 받게 될줄은 몰랐었다. 나중에 더 나은 방법을 찾게된다면 블로그에 쓰도록 하겠다.