윈도우 AWS EC2 서버 접속 시 Permission Denied (publickey,gssapi-keyex,gssapi-with-mic)

·2023년 5월 15일
0

TROUBLE SHOOTING

목록 보기
4/5

⚡ 발생한 문제

  • AWS EC2 강의에서 AWS를 터미널을 통해 접속하기 위해 키 페어의 .ppk 파일의 권한을 변경해야 하는 부분이 있었다.

  • 권한을 변경하지 않고 EC2에 접근하는 다음과 같은 명령어를 호출할 시 ssh -i "ec2_test.ppk" ec2-user@ec2-54-180-82-198.ap-northeast-2.compute.amazonaws.com 다음과 같은 오류가 발생했다. Load key "ec2_test.ppk": invalid format ec2-user@ec2-54-180-82-198.ap-northeast-2.compute.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

  • 강사님은 이 상황에서 chmod 400 명령어를 통해 키 페어 파일의 권한을 변경해 주어 이 문제를 해결했다. 다만 맥 환경에서는 아무런 문제 없이 실행됐지만 윈도우 환경에서는 다음과 같은 문제가 발생했다.

  • 먼저 cmd로 해 보았을 때는, chmod 400 ec2_test.ppk의 명령어를 입력하자 'chmod' is not recognized as an internal or external command, operable program or batch file. 다음과 같은 오류가 발생하였다.

  • 그래서 powershell로 시도해 보았는데 다음과 같이 동일한 오류가 발생하였다.

  • 일단 chmod라는 명령어 자체를 아예 인식하지 못하는 것으로 보였다. 윈도우 환경이나 맥 환경에서 차이가 발생하는 건 자주 있는 일이라 윈도우에서는 없는 명령어라고 판단하여 대체할 수 있는 명령어를 찾았다.


🔑 해결 방법

  • 확인 결과 진짜 윈도우에서는 chmod 400이라는 명령어가 되지 않았다.
  • 직접 .ppk 속성으로 들어가 보안 탭에서 권한을 변경해 주는 방법이 있다고 하지만 chmod 명령어와 같은 방법으로 대체할 수는 없을까라는 생각에 더 대체할 수 있는 명령어를 찾았다.

1) icacls.exe 명령어 사용 - 실패

  • 이 명령어는 cmdpowershell에서의 실행 방법이 달랐다. 결론적으로 나는 .pem 파일이 아니라 .ppk 파일이라 그런지 성공했다고는 뜨지만 되지 않았다. .pem.ppk의 차이인지 확실하지는 않지만 대부분 성공한 블로그의 사람들을 보면 .pem 파일이었다.
- cmd 명령어
icacls.exe ec2_test.ppk /reset
icacls.exe ec2_test.ppk /grant:r %username%:(R)
icacls.exe ec2_test.ppk /inheritance:r
- powershell 명령어
icacls.exe ec2_test.ppk  /reset
icacls.exe ec2_test.ppk /grant:r "$($env:username):(r)"
icacls.exe ec2_test.ppk /inheritance:r

2) puTTY Key Generator 사용 - 성공

  • .ppk 파일인지라 예전에 PuTTY를 사용해 해결했던 방법이 떠올랐다. 그래서 웬만하면 PuTTY를 사용하지 않고 명령어로 가 보려고 했지만 PuTTY를 사용할 수밖에 없었다.
  • 방법은 간단하다. 먼저 PuTTYgen을 실행해 준다. 이게 PuTTY Key Generator이다.
  • 이후 ConversionsImport Key를 선택해 발급받은 키 페어 파일을 import 해 준다.
  • 그 다음 Export OpenSSH key (force new file format)을 선택해 준다. 기존 키 페어를 완전히 지워 버리지 않고 backup 파일로 두는 걸 추천한다. 나는 PuTTY로 생성된 새로운 키 페어를 ec2_test.ppk로 해 두고 기존 키 페어는 이름만 살짝 변경해 두었다.
  • 이 방법을 사용해 EC2에 접근할 수 있었다.

이 과정에 기재해 두지는 않았지만 직접 속성 -> 보안 탭으로 들어가 설정을 해 주는 것도 시도해 봤는데 실패했다. 결국 마지막 방법으로 EC2에 접근할 수 있었다.


참고

profile
송의 개발 LOG

0개의 댓글