<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를 검색해서 들어온다
- 지역을 서울로 맞추고 인스턴스 시작 버튼을 클릭한다
- 아래 이미지를 따라한다
인스턴스 시작 클릭
인스턴스 이름을 정하고 OS는 우분투 22.04(현재 가장 최신 버전)를 선택하고 스크롤을 내린다
인스턴스 유형은 t2.micro(무료), 키페어는 없으면 만들고 있으면 선택한다(키페어 파일이 어딨는지 알고 있어야 함)
보안 그룹은 미리 만든 거 있으면 그거 선택하고 없으면 SSH, HTTP, HTTPS 다 선택한다
- 원래 SSH는 내 IP로만 접속 가능하게 해야 하지만 지금은 테스트이므로 위치 무관으로 해도 상관없다
스토리지는 최대 30기가까지 무료로 쓸 수 있다
- 인스턴스 상태가 실행 중으로 바뀌면 사용할 준비 완료!!
<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