본문 바로가기
Operating Systems/Windows

[Windows] key 파일 사용 시 Permission denied 오류 해결 방법 (chmod 대안)

by wrynn 2022. 12. 6.

문제 상황

 Windows 운영체제의 cmd.exe를 통해 로컬에 존재하는 파일을 AWS EC2 인스턴스로 전송을 시도하였으나, 다음과 같이 Permission denied 오류가 발생했습니다. 우선 제가 사용한 명령어는 다음과 같습니다.

scp -i .\keypair-tokyo.pem -r .\aws.zip ec2-user@54.168.234.54:~

 실행 결과 다음과 같이 key file의 권한이 너무 열려있다고 나옵니다. Linux에서는 chmod 명령으로 간단하게 600 혹은 400 권한을 부여하여 해결하였지만, Windows 에서는 chmod 바이너리가 없어 난감합니다. 이러한 경우 사용할 수 있는 icacls 라는 도구를 소개해드리겠습니다.

해결

 icacls는 지정된 파일의 DACL(임의 액세스 제어 목록)을 표시 또는 수정하고 저장한 DACL을 지정된 디렉터리의 파일에 적용합니다.[1] 쉽게 말해 Windows 운영체제 내에서 chmod처럼 파일의 액세스 권한을 제어할 수 있는 바이너리입니다.

 다음과 같이 3번의 명령을 수행하여 키 파일의 권한 문제로 인한 Permission denied 오류를 해결할 수 있습니다. 아래 명령에서 .\keypair-test.pem 대신 권한을 수정할 키 파일의 경로를 지정합니다.

icacls.exe .\keypair-test.pem /reset
icacls.exe .\keypair-test.pem /GRANT:R "$($env:USERNAME):(R)"
icacls.exe .\keypair-test.pem /inheritance:r

  성공적으로 수행이 된다면 다음과 같은 출력이 화면에 나타납니다. 

결과 

 icacls로 키 파일의 권한을 초기화한 다음, 키 파일을 사용하면 정상적으로 ssh 혹은 scp와 같은 명령이 잘 수행됨을 확인할 수 있습니다.


참고자료

[1] https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/icacls

 

 

댓글