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 명령어
와 같은 방법으로 대체할 수는 없을까라는 생각에 더 대체할 수 있는 명령어를 찾았다.1) icacls.exe 명령어 사용 - 실패
cmd
와 powershell
에서의 실행 방법이 달랐다. 결론적으로 나는 .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
이다.Conversions
의 Import Key
를 선택해 발급받은 키 페어 파일을 import
해 준다.Export OpenSSH key (force new file format)
을 선택해 준다. 기존 키 페어를 완전히 지워 버리지 않고 backup
파일로 두는 걸 추천한다. 나는 PuTTY로 생성된 새로운 키 페어를 ec2_test.ppk로 해 두고 기존 키 페어는 이름만 살짝 변경해 두었다.이 과정에 기재해 두지는 않았지만 직접 속성 -> 보안 탭으로 들어가 설정을 해 주는 것도 시도해 봤는데 실패했다. 결국 마지막 방법으로 EC2에 접근할 수 있었다.
참고