맥북에서 aws SSH 연결은 터미널로 간단하게 할 수 있다. 그런데 자꾸 이런 에러가 뜨면서 연결이 거부된다 ㅠㅠ
해결책은 아래 블로그를 보면서 해결했다 : )
[AWS] MAC terminal로 ssh키 접속 [Permission Error]
"엘리스 AI 트랙 2기" 과정 중, "Docker EC2 띄우기" 과정에서 MAC terminal로 ssh키 접속 강의자료가 없어 해당 강의 내용을 바탕으로 추후 참고하기 위해 정리하였습니다. AWS AWS는 아마존에서 만든 클라
nyol.tistory.com
1. 맥북 터미널로 AWS의 SSH 연결하기
맥북에서는 터미널 > 셸 > 새로운 원격 연결 경로를 통해 위 UI를 통해 쉽게 연결할 수 있다. 하지만 나의 경우는 자꾸 Permission denied가 떠서 여러 방법을 알아봤다. 그리하여 cmd 방식으로 연결하는 것을 알게되었다.
1) cmd로 aws ssh 연결
ssh -i ~/<Directory path>/<private_key_name>.pem id@<퍼블릭 DNS>
위 명령어를 cmd에 입력해주면 된다.
Directory path : AWS에서 컴퓨터 1대 만들었을 때 설정했던 키페어 즉 pem키 경로이다. 나는 맥북의 Downloads 경로에 했다.
id : 나는 처음에 내가 인스턴스에 설정한 Name인 줄 알고 test1을 썼었다. 근데 우분투 인스턴스를 만들었다면 ubuntu라고 한다ㅋㅋ
2) private key 접근 모드 변경
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0770 for '/Users/nyol/Downloads/docker_practice.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 "/Users/nyol/Downloads/docker_practice.pem": bad permissions ubuntu@ec2-52-78-220-223.ap-northeast-2.compute.amazonaws.com: Permission denied (publickey).
private key가 노출이 되기 때문에 이런 문구가 뜬다. 이럴 경우 chmod 를 통해 mode를 접근 모드를 전환시켜주어야 한다.
chmod 400 <private_key_name>.pem
접근 모드 변경 후 다시 1번 코드를 실행해주면 된다.
2. chmod란?
리눅스 chmod 명령 사용 방법
chmod 명령어 소개 chmod(change mod)는 파일의 접근 권한을 변경하는 명령어입니다. chown과 달리 파일의 소유자도 명령을 내릴 수 있습니다. 당연히 소유권이 없는 사용자는 chmod 명령을 사용할 수 없
bimmermac.com
chmod(change mod)는 파일의 접근 권한을 변경하는 명령어이다.
chmod [레퍼런스] [연산자] [변경할 접근권한] [파일]
- 레퍼런스 : 변경할 대상인 소유자(user), 그룹(group), 다른 모든 사용자(others)를 의미하며, 각각 u, g, o로 표기. a(all)는 소유자, 그룹, 다른 모든 사용자 전체를 의미
- 연산자 : +는 권한을 부여, -는 권한을 해제
- 변경할 접근권한 : 읽기(read), 쓰기(write), 실행(excute)를 의미하는 문자로 각가 r, w, x로 표기
위에서 썼던 chmod 400 <private_key_name>.pem의 경우 8진수 방식으로 chmod를 이용한 것이다.
8진수 권한
400 | 파일 소유자의 읽기 권한 |
200 | 파일 소유자의 쓰기 권한 |
100 | 파일 소유자의 실행 권한 |
40 | 그룹 사용자의 읽기 권한 |
20 | 그룹 사용자의 쓰기 권한 |
10 | 그룹 사용자의 실행 권한 |
4 | 다른 모든 사용자의 읽기 권한 |
2 | 다른 모든 사용자의 쓰기 권한 |
1 | 다른 모든 사용자의 실행 권한 |
즉, 읽기 권한만 준 것이다.