Backend/문제 해결 (Troubleshooting)

Windows에서 EC2 SSH 접속 시 WARNING: UNPROTECTED PRIVATE KEY FILE! 오류 해결

가지코딩 2025. 7. 3. 00:02

문제 상황

AWS EC2 인스턴스에 SSH로 접속을 시도했는데 다음과 같은 오류가 발생했다:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'test-server.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 "test-server.pem": bad permissions
ec2-user@ec2-xx-xxx-xx-xxx.compute.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

원인 분석

이 오류는 SSH에서 사용하는 비공개 키(.pem) 파일의 권한이 너무 널널할 때 발생한다.

  • 리눅스 기반에서는 chmod 400으로 쉽게 해결되지만, Windows에서는 NTFS 파일 시스템을 사용하기 때문에 chmod가 제대로 적용되지 않는다.
  • 특히, Windows의 기본 사용자 그룹인 BUILTIN\Users, Everyone, Administrators가 해당 파일에 접근 권한을 가지고 있으면 SSH 접속이 거부된다.

 

SSH로 접속 시도 전, git bash 로 권한 설정을 해주었지만, 적용되지 않은 듯 하다


해결 방법

 

Windows PowerShell로 파일 권한 재설정

  • PowerShell 실행 (관리자 권한 권장)
  • 아래 스크립트 실행
  • (본인의 .pem 경로에 맞게 수정)
$PemPath = "C:\Users\KNG\Desktop\key\aws_key\test-server.pem"

# 1. 상속 제거
icacls $PemPath /inheritance:r

# 2. 불필요한 사용자 권한 제거
icacls $PemPath /remove:g "Users"
icacls $PemPath /remove:g "Administrators"
icacls $PemPath /remove "NT AUTHORITY\SYSTEM"
icacls $PemPath /remove "BUILTIN\Users"
icacls $PemPath /remove "BUILTIN\Administrators"

# 3. 현재 사용자에게만 읽기 권한 부여
$CurrentUser = "$env:USERNAME"
icacls $PemPath /grant:r "$CurrentUser:R"

 

 

 

적용 여부 확인

icacls "C:\Users\KNG\Desktop\key\aws_key\test-server.pem"

 

현재 사용자: (R) 만 남아있다면 성공 !

 

 

SSH 접속도 잘 되는 것을 확인했다 !