WARNING: UNPROTECTED PRIVATE KEY FILE!

2019. 3. 15. 16:48AWS

1. AWS EC2에 접속할 때 보안을 위해 .pem 파일을 사용해서 접속을 할 때가 있습니다.

  그럴 때 자주 겪는 경고가 있지요.

ssh -i ~/key/test.pem ubuntu@ec2-xx-xx-xx-xx.ap-northeast-2.compute.amazonaws.com

The authenticity of host 'ec2-xx-xx-xx-xx.ap-northeast-2.compute.amazonaws.com (xx.xx.xx.xx)' can't be established.

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'ec2-xx-xx-xx-xx.ap-northeast-2.compute.amazonaws.com,xx.xx.xx.xx' (ECDSA) to the list of known hosts.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Permissions 0644 for '/Users/jieunyi/project/key/test.pem' are too open.

It is required that your private key files are NOT accessible by others.

This private key will be ignored.

Load key "/Users/jieunyi/project/key/test.pem": bad permissions

Permission denied (publickey).


2.  .pem 파일의 권한 문제입니다.

  이럴 땐 "chmod 400 [파일 경로]" 또는 "chmod 600 [파일 경로]" 이 두 가지 명령어로 권한을 설정하고 다시 접속하면 해결 됩니다.

  "chmod 400 [파일 경로]" 명령어는 파일에 읽기, 쓰기 권한을 모두 줄 때 사용하고, 

"chmod 600 [파일 경로]" 명령어는 파일에 읽기 권한만 주고 싶을 때 사용합니다.

  .pem 파일은 수정할 일도 없고 굳이 쓰기 권한을 줄 필요가 없으므로 저는 "chmod 600 [파일 경로]" 명령어를 사용했습니다.

$ chmod 600 ~/key/test.pem

※ 어째서 400은 읽기/쓰기고 600은 읽기냐!! 숫자의 의미가 무엇이냐!! 라고 물으신다면 대답해 드리는게 인지상정입니다.

  직접 적기는 글이 길어질 것 같으니 아래 링크를 참고하세요. ㅎㅎ

  https://ss64.com/bash/chmod.html

  영어로 되어있다는건 함정.

  링크로 가시면 아래처럼 권한에 관한 숫자를 내맘대로 만들수도 있습니다.

  예를 들면 600은 2진수로 표현하자면 0110 0000 0000이라고 하면 힌트가 되려나요.


3. 끝.