<Linux OS>
- Linux OS란?
- Git을 창시한 리눅스 토발즈가 1991년 Unix를 기반으로 개발한 OS
- 서버용 OS로 많이 사용됨
- Windows에 Windows 98, X, 7, 10 등이 있는 것처럼 Linux에는 Debian, Ubuntu, Redhat, CentOS 등 다양한 OS가 존재함
- Linux의 특징
- 소스코드를 자유롭게 보고 수정할 수 있는 오픈 소스(리눅스 소스코드가 깃허브에 전체공개 되어 있어서 내 입맛대로 변경 가능)
- 마우스 / 키보드를 사용해 조작하는 GUI(Graphical User Interfafe) 환경의 Windows, Mac과 달리 기본적으로 CLI(Command Line Interface) 환경에서 사용됨
리눅스 명령어
- [명령어 -옵션] 구조로 이루어짐
- 2개 이상의 옵션을 한 번에 사용할 수 있고 옵션의 순서는 무관함
ls # 파일 목록을 보여주는 명령어
ls -l # -l : 파일 목록을 더 자세히 보여주는 옵션
ls -a # -a : 숨김 파일까지 보여주는 옵션
- 일부 명령어는 source와 destination의 구조로 이루어져 있음
cp a.txt a_copy.txt # a.txt를 a_copy.txt로 복사
cp -r folder folder_copy # folder를 복사할 때는 -r 옵션이 필요함
- cp는 copy의 약자로, 파일 또는 폴더를 복사할 때 사용하는 명령어
- Linux를 사용하는 이유
- 무료로 사용할 수 있기 때문에
- 리눅스는 오픈 소스이기 떄문에 전세계의 엔지니어들이 보안성을 향상시키기 위해 노력해왔음 -> 보안성이 좋음
- 다른 종류의 OS에 비해 비교적 안정적인 환경에서 운영할 수 있음
<Linux 기반 EC2 instance 생성 방법>
- AWS에 로그인 후 검색창에 EC2를 검색해서 들어온다
- 지역을 서울로 맞추고 인스턴스 시작 버튼을 클릭한다
- 아래 이미지를 따라한다
- 키페어는 인스턴스에 접속할 때 필요하다
- 원래 SSH는 내 IP로만 접속 가능하게 해야 하지만 지금은 테스트이므로 위치 무관으로 해도 상관없다
- 이제 인스턴스 시작을 클릭한다!
- 인스턴스 상태가 실행 중으로 바뀌면 사용할 준비 완료!!
<instance 접속 방법>
- SSH 연결하기
- 맥은 터미널을 열고, 윈도우는 cmd나 파워쉘을 연다
- 나는 윈도우이므로 cmd를 열었다
ssh -i .pem파일경로 ubuntu@인스턴스의퍼블릭IP
- .pem 파일을 cmd 창에 드래그 해서 넣으면 자동으로 .pem 파일의 경로가 아래와 같이 적힘
- 인스턴스퍼블릭IP는 인스턴스 클릭해서 보면 확인할 수 있고 cmd에 붙여 넣을 때는 오른쪽 마우스를 클릭하면 붙여짐
- 하지만 권한이 없어서 접속이 안 된다 ㅎ
- AWS 강의 떄 WSL에서 권한을 설정했으므로 그냥 cmd말고 WSL을 켜서 하겠다
- 모르는 사람은 위 링크 따라가서 설정하고 오면 된다
- 아 WSL도 안 되네,,,
- 위에 링크에서 설정했던 대로 루트 폴더로 가서 거기 내가 만들었던 AWS 폴더에 권한을 줘야 하는군....
- 바로 이렇게....
- 근데 소유주로 변경하는 건 이전에 했어서 아마 할 필요가 없었을 거 같다
- 만약 소유주로 안 되어 있다면 소유주를 내 계정으로 하고 나서 chmod 400 해서 읽기 권한을 줬어야 했을거다
- 내 계정이 소유주가 되면 이미 권한이 다 생겨서 상관이 없을지도........? 아무튼
- 처음에 /AWS 일 때 내 컴퓨터 경로가 아니라 .pem 파일을 입력했으면 바로 됐을 듯?
- .pem 파일이 내 컴퓨터에 경로가 있고 wsl의 루트 폴더에 AWS 폴더 안에도 복사를 해놨는데
- 내 컴퓨터 경로를 못 찾아서 그냥 루트 폴더에 내가 전에 만든 AWS 폴더에 권한을 주고 거기에 있는 .pem 파일을 이용해서 인스턴스에 접속했다
- 하지만...cmd에서도 접속하는 방법을 알아보겠다
- 일단 지금 내가 로그인한 윈도우 계정인 l에 .pem파일이 있는 AWS 폴더의 소유자로 만들고 사용권한을 줘야 한다(WSL에서 한 것처럼)
- 그래서 win + R을 누르고 나온 창에 cmd 입력 후 아래 이미지와 같이 ctrl + shift + enter를 클릭해서 관리자 권한으로 cmd를 실행했다
- 그리고 아래 명령어를 입력해서 AWS 폴더의 소유자가 되었다(명령어 참고 블로그로 이동!)
- 폴더 경로는 그냥 cmd 열어서 폴더를 cmd 창으로 드래그 하면 경로가 입력된다 그걸 복사해서 넣었다
- 관리자로 실행하면 드래그해서 경로를 가져오는 게 안 먹힌다
takeown /F AWS폴더경로 /R /D Y
icacls AWS폴더경로 /GRANT l:F /T /Q
- 그 다음 위 명령어를 사용해서 l 계정에 AWS 폴더와 하위 폴더 및 파일에 대한 모든 권한을 주었다
- 그렇게 하고 다시 cmd창을 켜서(관리자 X) 인스턴스에 접속하는 명령어를 치면 여전히 같은 에러가 뜬다
- 열심히 구글링한 결과 당연히 권한 문제였는데 해당 파일에 너무 많은 사용자가 권한을 가지고 있어서 그런 거였다
- 캡쳐는 못 했지만...
- .pem 파일을 오른쪽 마우스 클릭해서 속성에 들어간다
- 보안 탭을 보면
- 지금은 권한을 다 삭제해서 하나만 있지만 원래는 빨간 박스를 다 채울 정도로 한 5갠가? 있었다
- 만약 그렇게 되어 있는 경우 아래 고급을 클릭한다
- 나는 지금 상속 사용 안함을 눌러서 상속 사용으로 보이지만 여러 사용자가 권한을 가지고 있다면 높은 확률로 상속 사용 안함 버튼으로 보일 거다
- 그걸 누른 다음 2번째걸 클릭한다 뭐 상속된 권한 제거? 이런 식으로 써있을 거다
- 그렇게 깨끗하게 해준 다음 아래 명령어를 입력하면 드디어 cmd를 이용해서 ssh로 인스턴스에 접속을 했다!!
ssh -i C:\Users\l\Desktop\sparta\AWS\newkeypair.pem ubuntu@3.37.128.85