Windows에서 SCP 전송 시 PEM 권한 문제 해결

송현진·2025년 5월 18일
0

DevOps

목록 보기
3/7

Spring Boot 프로젝트를 빌드한 JAR 파일을 EC2 서버로 전송하려고 아래와 같이 scp 명령어를 실행했다.

scp -i "키페어" build/libs/giftrecommender-0.0.1-SNAPSHOT.jar ec2-user@3.39.239.7:~/

하지만 다음과 같은 오류가 발생하며 전송이 실패했다.

Permissions for 'coupang_clone.pem' are too open

이는 .pem 파일의 권한 설정이 너무 느슨해서 발생하는 보안 오류이다. UNIX 계열에서는 chmod 400 명령으로 쉽게 해결할 수 있지만 Windows에서는 수동으로 권한을 조정해야 한다.

❓chmod란?

리눅스나 maxOS와 같은 UNIX 계열 운영체제에서는 chmod라는 명령어를 통해 파일과 디렉터리의 권한(퍼미션)을 설정할 수 있다.

chmod"change mode"의 줄임말로 각 파일에 대해 누가 읽고 쓸 수 있는지 실행할 수 있는지를 설정하는 명령어다. 이 권한은 소유자(owner), 그룹(group), 그 외 사용자(other) 3단계로 나뉘며 각 권한은 숫자 또는 기호로 표현된다.

권한 종류

기호의미숫자
r읽기(read)4
w쓰기(write)2
x실행(execute)1

숫자 조합 예시

  • chmod 777 : 모든 사용자에게 읽기/쓰기/실행 허용
  • chmod 755 : 소유자 - 모든 권한 / 나머지 - 읽기 + 실행
  • chmod 400 : 소유자 - 읽기 권한 / 나머지 - 접근 불가

.pem 파일은 매우 민감한 보안 파일이기 때문에 AWS에서는 소유자만 읽기(chmod 400) 권한을 가지도록 요구한다.

Windows에서는 chmod가 안통하는 이유

Windows는 UNIX 파일 권한 모델이 아닌 NTFS 기반의 ACL(Access Control List)을 사용하기 때문에 chmod 400과 같은 명령어가 적용되지 않는다. 따라서 .pem 파일에 대한 권한도 수동으로 GUI를 통해 설정해야 한다.

💡 NTFS 기반의 ACL(Access Control List)은 Windows에서 파일이나 폴더마다 사용자별로 읽기, 쓰기, 실행 권한을 세밀하게 설정할 수 있는 보안 시스템이다. UNIX의 chmod와 달리 각 사용자 또는 그룹에 대해 개별 권한을 지정할 수 있는 것이 특징이다.

해결 방법 (Windows)

1. 사용자 이름 확인

cmd 창을 열어서 아래와 같은 명령어를 입력하면 사용자 이름을 알 수 있다.

whoami

결과 예시 : laptop-xxxxxx\송현진

2. PEM 파일 권한 수정

  1. .pem 파일이 위치한 경로로 이동
  2. .pem 파일 우클릭해서 속성으로 이동
  3. 보안 탭으로 가서 고급(V)를 클릭
  4. 상단의 소유자(Owner) 변경을 눌러서 송현진 사용자로 변경
  5. 보안 탭 편집을 누름
  6. 송현진 사용자에게 읽기(Read) 권한만 부여하고 나머지 권한은 모두 제거
  7. 모든 사용자 또는 그룹에서 제거하고 오직 본인 계정만 남김

이 과정을 통해 Windows에서도 .pem 파일이 UNIX의 chmod 400과 유사한 읽기 전용 상태가 된다.

결과

이후 다시 scp 명령어 실행 시 더 이상 권한 오류 없이 정상적으로 JAR 파일을 EC2로 전송할 수 있었다.

scp -i "키페어" build/libs/giftrecommender-0.0.1-SNAPSHOT.jar ec2-user@3.39.239.7:~/
giftrecommender-0.0.1-SNAPSHOT.jar                              100%   63MB   9.7MB/s   00:06  

📝 배운점

Windows 환경에서는 UNIX에서 사용하던 chmod 명령이 바로 적용되지 않아 파일 권한 오류를 해결하는 데 다소 시간이 걸렸다. 노트북 초기 설정 시 계정을 한글인 송현진으로 만들었는데 개발 도구에서 경로 인식 문제가 종종 발생해서 사용자 폴더명을 song으로 바꿨었다. 하지만 사용자 이름이 여전히 송현진으로 남아있어서 꽤나 골치아팠다. 결국 .pem 파일의 소유자와 권한을 GUI에서 일일이 수정하면서 SSH 보안 정책에 맞는 최소 권한(read only)을 갖도록 설정했고 이를 통해 문제를 해결할 수 있었다. 앞으로는 Windows에서 SSH 키를 사용할 때 권한 경고가 나올 경우 가장 먼저 .pem 파일의 속성부터 확인하고 조정해야겠다는 걸 확실히 깨달았다.

profile
개발자가 되고 싶은 취준생

0개의 댓글