EC2 SSH 접속 오류

HS L·2023년 6월 1일
0

내일배움캠프

목록 보기
61/73

문제

EC2 SSH 접속시 권한 오류

Bad permissions. Try removing permissions for user: BUILTIN\\Users (S-1-5-32-545) on file C:/Users/HS/Desktop/docker/my_ubuntu.pem.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\\Users\\HS\\Desktop\\docker\\my_ubuntu.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 "C:\\Users\\HS\\Desktop\\docker\\my_ubuntu.pem": bad permissions
ubuntu@3.39.25.92: Permission denied (publickey).

EC2 인스턴스에 SSH접속시 위와같은 오류가 발생했다.
구글링 결과 파일자체에 권한 설정이 너무 많이 부여됐기 때문에 권한설정을 제한해줘야 한다고 한다.

시도

권한 설정을 다시 지정하는 방법에는 운영체제에 따라 방법이 달랐다.

리눅스?

리눅스 운영체제의 경우 해당위치 경로상에서 아래 명령어를 사용하여 권한을 변경할 수 있다고 한다.

chmod 400 <파일명.pem>
ex) chmod 400 my_ubuntu.pem

나의 경우 윈도우 운영체제를 사용하기 때문에 위 명령어를 사용할 수 없다고 한다.

C:\Users\HS\Desktop\docker>cmod 400 my_ubuntu.pem
'cmod'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

윈도우

윈도우의 경우는 속성 → 보안탭에서 바꾸는 방법도 있고 cmd창에서 직접 명령어를 입력하는 방법도 있었다.

속성 → 보안 탭에서 변경

아래 참고링크를 보면 해당 방법이 잘 정리되어 있다.
이 방법으로 진행시 제대로 권한적용이 안되는 경우들도 있었다는 것을 보고 다른 방법도 같이 찾아봤다.
참고링크

cmd창에서 명령어 입력

아래 명령어를 순차적으로 입력하여 pem파일의 권한을 초기화 → 권한부여 순서로 진행해준다.

# cmd에서만 되고 powershell에서는 안됨
# myec2.pem 자리에 본인의 pem 파일 명을 대입하면 됨
# cmd는 pem 파일이 있는 폴더에서 실행해야 함

icacls.exe <파일명.pem> /reset
icacls.exe <파일명.pem> /grant:r %username%:(R)
icacls.exe <파일명.pem> /inheritance:r

ex)
icacls.exe my_ubuntu.pem /reset
icacls.exe my_ubuntu.pem /grant:r %username%:(R)
icacls.exe my_ubuntu.pem /inheritance:r

해결

cmd창에 명령어 입력

cmd창에서 위의 명령어를 순차적으로 입력하여 해결했다.
powershell과는 문법이 조금 차이가 있어 실행이 안될 수 있다고 한다. 혹시나 안되는 경우 cmd창으로 진행해봐도 좋을 것 같다.

위의 해당 명령어들은 각각

icacls.exe my_ubuntu.pem /reset

→ "my_ubuntu.pem" 파일의 ACL을 기본값으로 재설정한다.
즉, 모든 ACL 항목을 제거하고 파일에 대한 기본 ACL을 적용한다.
icacls.exe my_ubuntu.pem /grant:r %username%:(R)

→ "my_ubuntu.pem" 파일에 대해 %username%에 사용자에게 읽기(R) 권한을 부여한다.
%username%은 현재 로그인된 사용자의 사용자 이름을 나타내는 환경 변수라고 한다.
icacls.exe my_ubuntu.pem /inheritance:r

→ "my_ubuntu.pem" 파일에서 상위 디렉토리로부터 상속된 ACL 항목을 제거한다.
이렇게 하면 파일이 속한 폴더의 ACL이 더 이상 파일에 영향을 주지 않게된다고 한다.

+++ 같은 캠퍼분의 경우도 이와같은 오류를 만나셨다고 했는데 오류발생시 동일했던 원인은 기존 pem파일의 경로에서 다른 경로로 위치를 변경했던 부분이었다.
동료 캠퍼분의 경우 pem파일을 기존 위치로 되돌렸을때 오류 없이 해결이 됐다고 하셨었다.

ACL이란?

ACL(Access Control List)은 컴퓨터 시스템에서 파일, 폴더 또는 리소스에 대한 접근 권한을 관리하는 방법 중 하나이다.
ACL은 각 개체에 대해 허용되거나 거부되는 사용자 또는 그룹의 목록을 지정한다.

위의

profile
식이

0개의 댓글