윈도우 .pem 키 권한 에러(UNPROTECTED PRIVATE KEY FILE!)

GreatCloud·2026년 3월 17일

백엔드

목록 보기
10/14

새로운 프로젝트를 진행하며 AWS EC2 CI/CD 파이프라인 구축을 위해 진행하면서 발생하는 문제들을 분석하고 정리해보려고 한다.

발생한 문제 UNPROTECTED PRIVATE KEY FILE!

환경
1. Window 10
2. AWS EC2 Ubuntu 24.04 LTS

일단 한번 읽어보자

1. WARNING: UNPROTECTED PRIVATE KEY FILE!

(경고: 보호되지 않은 개인키 파일!)

"Permissions for 'testkeypair.pem' are too open."
(testkeypair.pem 파일의 권한이 너무 많이 열려 있습니다.)
"It is required that your private key files are NOT accessible by others."
(개인키 파일은 반드시 다른 사람들이 접근할 수 없어야 합니다.)

"이 열쇠 주인놈은 관리 안하니까 위험해서 안쓸거임 ㅅㄱ"

SSH 클라이언트가 testkeypair.pem 파일을 확인해보니 주인이 아닌 다른 사람도 볼 수 있게 방치되어 있다고 한다

"엥 컴퓨터 주인은 나고 나밖에 안쓰는데?"

주인은 나 하나 아닌가? 하며 이해가 안될 수 있다. 그러나 우리는 개발자이고 운영체제(OS)에 대해 자세히 이해 하고 있어야 한다.

윈도우 안에는 '나말고 다른 존재가 있다.'

윈도우는 혼자 쓰는 컴퓨터라도 내부적으로 여러 가상 계정들이 시스템을 돌리고 있다.

  • System Account: 윈도우 운영체제 그 자체이며 업데이트를 하거나 파일을 관리 할 때 쓰인다.
  • Administrator Group: 아마 대부분의 사용자의 계정이 속해있으며 '관리자'라는 별도의 권한 묶음이 존재한다.
  • Authenticated Users: 윈도우에 정상적으로 로그인한 '모든' 사용자에 대한 그룹이다.

Window는 너무 친절한 나머지 파일을 만들면 "나중에 다른 계정을 만들거나 시스템이 이 파일을 관리해야 할 수도 있으니, 일단 모두 읽을 수 있게 만들게?"라며 권한을 그냥 뿌려버린다!!

User & Admin group

컴퓨터를 사용하는 입장에서 '나'는 하나지만 시스템은 두 가지의 모습으로 나를 바라본다.

  1. 일반 사용자 '나'
  2. 관리자 그룹의 일원인 '나'

SSH는 말한다. "야 니가 관리자 그룹 멤버인 건 알겠는데, '관리자 그룹 전체'에 이 파일 권한이 있으면 나중에 다른 관리자가 추가 되었을 때 그 관리자도 이 키를 볼 수 있잖아"

그래서 SSH는 뭘 바라는데

SSH(Secure Shell)는 이름에 부터 보안이 붙어있다.
이놈은 확고하게 보안을 중시하다보니
"열쇠관리 똑바로 못하는 놈이랑은 일 안할거다"라고 말하고 있다
SSH가 바라는건 단 한명의 주인이다
"이 .pem 파일은 오직 개인 사용자 한 명만 읽을 수 있도록 설정해" 라는 것이다

2. Window에서의 키 권한 해결 방법

그럼 권한을 한번 정리해보자

  1. 상속된 권한 제거 및 본인 계정만 권한 부여
:: 1. 파일의 소유권을 현재 사용자에게 가져온다
icacls "파일명.pem" /grant:r %username%:F /inheritance:r

:: 2. 다른 모든 계정(Authenticated Users 등)의 권한을 제거합니다.
:: (위 명령어의 /inheritance:r 옵션이 이미 상속을 끊어주지만, 확실히 하기 위해 한 번 더 수행)
icacls "파일명.pem" /remove "NT AUTHORITY\Authenticated Users"
icacls "파일명.pem" /remove "BUILTIN\Users"

3. GUI

보안

고급

상속 차단

나빼고 전부 삭제
System도 남겨두면 안된다!

정상적으로 접속된다

끝!

내긴 아쉬우니

2. 다른 환경

리눅스나 Mac 같은 Unix 계열 OS에서는 윈도우 처럼 "동아리냐 개인이냐 상속이냐 아니냐"를 복잡하게 따지지 않고 아주 단순한 9비트 체계로 표현한다.

1. chmod 400

Unix 시스템은 터미널에서

chmod 400 testkeypair.pem

한줄이면 끝난다. 물론 끝난다 로 끝내면 안된다.

2. Unix 시스템 권한 구조

Unix에서 파일 상세 정보를 보기 위해 ls -l을 치면 --rwxr-xr-같은 복잡한 문자열이 나온다.
이걸 끊어서 보면

  1. 첫 번째 칸(Type): -면 파일, d면 디렉토리(폴더)이다.
  2. 첫 번째 묶음(Owner): 소유자의 권한.
  3. 두 번째 묶음(Group): 같은 그룹원의 권한.
  4. 세 번째 묶음(Other): 그 외의 모든 사람의 권한.

권한 2진법

각 권한은 고유한 값을 가진다(규약)

  • Read(r): 4
  • Write(w): 2
  • Execute(x): 1

왜 4 2 1임?
2진법을 써서 그렇다. 비트가 켜져있으면 1 꺼져 있으면 0

권한 (rwx)2진수합계의미
r--1004읽기만 가능
-w-0102쓰기만 가능
--x0011실행만 가능
rw-1106읽기 + 쓰기
rwx1117모든 권한 (읽기+쓰기+실행)

정처기 공부할 때 나오는 그것이다

자주 쓰는 chmod

몇개만 좀 보고 가자

  • chmod 777: 누구나 쓰고 읽고 가능(당연히 위험)
  • chmod 755: 주인은 다 할 수 있고 외에는 읽고 실행만가능(실행파일이나, 디렉토리의 기본 설정)
  • chmod 644: 주인은 읽고 쓰기 가능하지만 외에는 읽기만 가능(설정 파일 배포시에 많이 사용)

진짜 끝!

profile
모르는 것에 부끄러워 말고 아는 것에 자만하지 말 것

0개의 댓글