ssh 인증 방법을 public key 로 하면 ssh client 는 개인키(private key) 가 있는 폴더의 권한과 개인 키 파일(보통 id_rsa)의 권한 설정 여부를 확인하고 잘못 설정되었을 경우

다음과 같은 에러 창을 띄우고 동작을 하지 않습니다.


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


Permissions 0644 for 'ubuntu@example.com/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "ubuntu@example.com/id_rsa": bad permissions
ubuntu@example.com: Permission denied (publickey).


SSH 개인키는 중요한 정보이기 때문에 소유자외 다른 이가 읽을수 있으면 위와 같은 에러를 만나게 됩니다.


해결책

다음과 같이 group 과 other 의 모든 권한을 막아주면 됩니다.

chmod 0400 ~/.ssh/ubuntu@example.com/id_rsa
CODE



0600 으로 설정해도 되지만 실수로 개인키를 삭제하는 것을 방지하기 위해 읽기만 가능한 0400 을 권장합니다.


그외 ssh client 의 설정 파일인 config 권한 문제때문에 에러 날수도 있으므로 config 파일은 편집이 가능한 0600 으로 설정해 주면 됩니다.

chmod 0600 ~/.ssh/config
CODE


개인키 디렉터리는 0700 으로 설정하면 됩니다.

chmod 0700 ~/.ssh/ubuntu@example.com
CODE


여러 개의 디렉터리가 있을 경우 다음 스크립트로 한 번에 여러 디렉토리의 권한을 변경할 수 있습니다.

for i in `ls --color=never -d ~/.ssh/*/`;do chmod 0700 $i; done  
CODE


Ref