윈도우 10 에서 pem 파일을 사용하기 – 아마존 라이트세일 리눅스 서버에 접속하는 방법(SSH)

5

최근 방문자분 중 한분이 윈도우에서 우분투 리눅스 서버 접속용 암호키 파일(.pem)을 사용하는 데 어려움이 있어서 댓글로 문의를 주시게되어 저도 윈도우를 재설치해서 CLI환경으로 아마존 라이트세일 서버에 접속할 방법을 모색해보았습니다.

이 글은 윈도우10 이상을 사용하는 컴퓨터에서의 방법입니다. 맥에서의 방법은 아래링크를 참고하세요.

제 경우macOS(아이맥)을 사용하는 관계로 리눅스 환경과 유사, 명령어또한 비슷한게 많습니다만 윈도우 컴퓨터(PC)를 사용환경에서는 개발 및 서버관리 환경이 어찌되는지 잘 알지 못했습니다.  개발일은 윈도우즈(Windows)를 사용한적이 없기도 했고요. 제가 윈도우가 없는 것은 아니고 윈도우 10을 오래전에 구매를 해두긴 했습니다.  윈도우는 1년에 한 두번 세금신고 할 때나 켠지 수 년이 되어가서 되려 불편하게 느껴질 정도네요.

윈도우에서 chmod가 없어서 pem파일 사용할 수 없는 문제

제 지난 글에서 아마존 라이트세일(AWS Lightsail)의 서버 인스턴스에 접속하기위해서는 암호키 파일인 .pem파일을 다운로드 받아 해당파일을 이용해 ssh 명령어로 접속할 수 있다고 했었는데요. 문제는 아마존에서 주는 이 pem 파일의 사용권한을 바꿔줘야하고 리눅스나 맥컴퓨터에서는 터미널에서 chmod 명령어를 이용해 권한을 바꿀 수 있습니다. (아래링크 참고)

 

하지만 윈도우에서는 chmod 명령어가 없어서 CLI환경에서 파일권한을 바꿀수가 없었습니다.

“chmod은(는) 내부 또는 외부 명령, 실행할 수 잇는 프로그램, 또는 배치 파일이 아닙니다. (chmod’ is not recognized as an internal or external command, operable program or batch file.)”

 

ssh 접속도 Putty 같은 별도 다른 프로그램을 설치해 사용해야 했던 것같더군요. 

참고: Windows 10이 업데이트되면서 리눅스 명령어를 쓸 수 있는 환경을 꾸밀 수 있게 된건 최근이라는군요.(OpenSSH, Bash)

어쨌든 제가 윈도우 10에서 아마존 라이트세일에 접속하는 방법을 아래에 정리하였습니다.

윈도우 10 업데이트 확인 및 OpenSSH 설치확인

이게 얼마나 영향이 있을지는 모르겠지만 cmd에서 ssh 접속을 사용할 수 있게 해주는 것같아요. 그리고 Windows 컴퓨터에서도 사용가능한 리눅스 개발환경이 업데이트되었다고 하니까 OpenSSH가 설치되면 좋을 것같습니다. 설치확인이 안되더라도 다음 단계를 해보고 안되면 그때 윈도우 업데이트를 통해서 openSSH 클라이언트를 설치해보세요.

 

먼저 윈도우10의 설정을 열어주고 아래그림처럼 앱-설치 제거,옵션기능을 선택해주세요.

윈도우10 설정 화면 - 앱

 

그리고 아래그림처럼 앱 및 기능 섹션에서 선택적 기능 관리를 클릭해줍니다.

윈도우10 설정 - 선택적 앱기능

 

그럼 설치된 목록들이 나오는데 여기에서 OpenSSH 클라이언트가 있는지 확인해보세요. 없다면 +기능 추가를 클릭해서 설치해줘야합니다. 기능추가로도 OpenSSH를 찾을 수 없다면 윈도우10을 업데이트해야해요.

OpenSSH 클라이언트 설치 확인화면

위처럼 OpenSSH 가 설치되어있다면 리눅스 개발환경이 준비되어있는 것입니다.

 pem 파일 파일권한 변경하기

위에 말했듯 윈도우에서는 CLI에서 chmod를 사용할 수 없었습니다. (리눅스 서버에 접속하기 전, 윈도우 컴퓨터 자체 명령어). 리눅스 명령어를 사용할 수 있게 해주는 이런 저런 프로그램들이 있는 모양이지만 우리에게 단순히 필요한건 아마존 라이트세일 서버 접속을 위한 .pem 파일에대한 권한을 변경하는 것 뿐이고 이것은 마우스클릭으로도 할 수 있습니다(GUI환경).

 

라이트세일 인스턴스를 생성하면서 .pem파일을 다운로드 받았다면 이 파일의 권한이 너무 관대하거나(아무나 사용가능 – 윈도우의 경우), 너무 엄격(아무도 사용할 수 없음-맥컴퓨터의 경우)한 관계로 ssh 명령어가 거부합니다. (아마존, 너는 왜 이런 파일을 줘서 우리에게 이런 시련을 주는거니?) 

아래 그림처럼 WARNING:UNPROTECTED PRIVATE KEY FILE! 메시지가 나오고 접속을 실패합니다.

윈도우10 명령프롬프트 warning unprotected private key file
Permissions for XXX.pem are too open. It is required that your private key files are NOT accessible by others

 

그래서 현재 사용자만 읽기와 실행이 가능하도록 아래처럼 파일권한을 바꿔야합니다. 먼저 pem파일을 다운로드 받은 폴더를 열어주고 해당파일을 마우스 우클릭 -> 속성을 선택해줍니다.

윈도우10 폴더보기에서 pem 파일 우클릭

 

 그리곤 새롭게 뜨는 창에서 위쪽에 보안탭을 눌러주세요. 그러면 아래 그림처럼 그룹 또는 사용자이름 목록에 여러 계정이 나옵니다. 제 경우엔 알 수 없는 계정SYSTEM(시스템), 저 자신(Kyle KIM – 현재 컴퓨터에 로그인된 계정), 그리고 Administrators(관리자) 계정들이 등록되어있고 클릭해보면 각각의 계정마다 이파일에대한 읽기 쓰기 권한을 볼 수 있습니다.

여기에서 편집(E)… 버튼을 클릭해주세요.

파일 속성창에서 보안 탭 선택, 편집클릭

 

 

또다시 새롭게 창이 나옵니다. 아래그림은 권한 설정을 끝낸 화면인데요. 그룹 또는 사용자 이름(G) 목록에서 SYSTEM현재 자신의 계정이름(제경우 Kyle KIM), 관리자만 남기고 모두 선택해서 제거(R)버튼을 통해 모두 삭제해주세요.

pem파일 권한 변경한 모습

 

그리고 위그림에서처럼 자기 자신의 계정이름을 선택하면 아래쪽엔  XXX의 사용권한(p) 처럼 해당계정에대한 파일권한이 나오고 모든 권한이 열려있을 겁니다. 위 그림처럼 읽기 및 실행, 읽기 권한 두개만 남기고 체크를 해제해주세요.

중요: 이때(모든 권한의 체크표시를 먼저 해제 해버리면 읽기 권한조차 회색으로 비활성화되니 다시해야합니다.

그리고 확인 또는 적용(A)버튼을 눌러 완료해주면 ssh 명령어를 통한 pem파일을 사용할 준비가 된 것입니다. 

윈도우에서의 기본 CLI 프로그램 소개 – CMD(명령 프롬프트)

맥컴퓨터(아이맥, 맥북)에서는 기본 CLI(커맨드 라인 인터페이스) 프로그램으로 터미널이라는 앱이 있는데 윈도우의 기본설치된 CLI 프로그램은 명령 프롬프트입니다. 다른걸 쓰시는 분들도 있어요.

윈도우 시작메뉴에서 cmd 를 검색해보면 명령 프롬프트 라는 프로그램이 나옵니다. 그걸 실행해주세요.

명령 프롬프트로 라이트세일 인스턴스 서버에 접속하기(ssh)

명령 프롬프트를 실행시킨 뒤 ssh 라고 명령어를 써보면 아래그림처럼 usage 도움말이 나오고 이러면 CLI용 ssh 프로그램을 사용할 수 있는 컴퓨터인 것입니다.

SSH 명령어 사용가능

 

이제 ssh 명령어로 접속하려면 아래형태로 명령어를 입력해 접속할 수 있습니다.

ssh -i 폴더/전체/경로/암호키파일명.pem 서버사용자명@서버IP주소

제 블로그 글 중에 라이트세일에서 비트나미 워드프레스 설치하기 연재작을 따라했다면 서버사용자명은 bitnami , LEMP스택 시리즈글을 따라 인스턴스 생성을ㄹ 우분트Only로 선택했다면 ubuntu 입니다.

서버IP주소는 여러분의 인스턴스 서버의 Public IP 또는 고정아이피를 연결했다면 StaticIP 주소입니다. 아래처럼 말이죠

bitinami@52.00.11.222

 

그래서 제경우 아래처럼 입력했습니다.  최초접속일경우 Are you sure you want to continue connecting? 질문이 나오면 yes를 입력하고 엔터키를 눌러주세요.

ssh 명령어로 리눅스 서버 접속 pem파일 사용

한가지 팁이라면 pem파일 경로를 입력할 때 ssh -i 한칸띄우고 까지만 입력한 뒤 윈도우 탐색기에서 .pem파일을 마우스로 끌어다 명령 프롬프트 화면에 가져다 놓으면 위처럼 전체경로가 입력됩니다. C:D: 처럼 디스크이름부터 시작하는 전체경로여야하고 경로나 파일이름 중간에 스페이스바(띄어쓰기)가 있다면 스페이스바 앞에 백슬래시(\)가 붙어야합니다.

 

아래그림 처럼 Welcome to Ubuntu 메시지 또는 bitnami 환영 메시지가 나오면서 명령어 시작줄이 서버사용자명@ip주소:~$ 처럼 바뀌면 리눅스 서버에 접속완료 된것이고 이제 리눅스 명령어를 통해서 서버를 제어할 수 있습니다.

서버 접속 완료

관련글

5 댓글

  1. 안녕하세요~~ 이게 거의 다 되어 가는데 도움 받아서 감사합니다..~~ pem파일이 전부 회색깔로 다 설정 되어 있는데, 변경이 안되는데 몇번을 다시 해봐도 안되는데 어떻게 해야 하는지요 ? ^^

  2. 안녕하세요! 좋은 글 공유해주셔서 감사합니다. 시리즈대로 웹사이트를 만드는 도중에 여기에서 문제가 생겼는데요. 저는 윈도우10을 씁니다. cmd에 ssh 되는것 확인하고 .pem 키 보안을 편집하려고 했는데 제 pem 속성에는 보안을 편집할 수 있는 페이지 자체가 아예 없네요. 흠.. 어떻게 해야할까요? cmd 에 경로와 유저 아이피를 입력하였더니 경고만 계속 뜨고있습니다.

    • 아 아닙니다 ㅎㅎ 제가 SSD 저장소에 키를 옮겨놓고 거기로 디렉토리 해놨었는데, 키를 데스크탑으로 옮겨두니 해결되었습니다. 아주 초보자라 이것저것 다 시도하고 막히고 난리네요 ㅎㅎ. 아이피 입력하고 서버 접속되는데 소리지를 뻔했네요.

  3. 저는 pem 파일을 다운로드 받고 그 경로 그대로 해서 아무리 해도 안되길래 그냥 C드라이브에 파일을 바로 넣었더니 되네요 ㅠㅠㅠ 저처럼 헤메는 다른 초보분 있을까봐 주저리 남겨봅니다 ㅋㅋㅋㅋ 저도 윗분처럼 소리지를뻔했어요 ㅋㅋㅋ

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)