기타/클라우드

리눅스 머신 구하기 (클라우드 AWS EC2 인스턴스)

둥굴둥굴둥굴레차 2021. 6. 29. 14:53

리눅스란?

리눅스 커널에 기반을 둔 운영체제. 우리가 실제로 접하게 되는 것은 리눅스 배포판.

 

리눅스는 OS 중 하나이며 오픈소스로 현재에도 계속 성상중.

서버, 모바일, PC환경 등 다양하게 사용되고 있으며 서버 환경에서 많이 사용되고 있음.

데비안, 페도라, 우분투, 레드헷 등이 있으며 배포판마다 조금씩 차이가 있으나 같은 커널을 사용.

 

처음이라면 우분투를 사용해 볼 것을 권장.

 

 

우분투

데비안 리눅스를 기반으로 개발되며 데비안에 비해 사용 편의성에 초점을 맞춘 리눅스 배포판.

매 6개월 마다 새로운 판이 공개되며 LTS(장기지원판)은 2년에 한 번씩 출시된다.

개인용 데스크톱과 노트북에서 가장 인기 있는 리눅스 배포판이다.

 

우분투는 6개월 마다 출시되며 보통 4월과 10월에 출시된다.

버전 명의 앞 부분은 출시 연도를 의미하며 뒤의 숫자는 월(month)을 의미한다.

예를 들어, 20.04라면 20년도 04월에 나온 버전을 의미.

LTS는 짝수 해의 4월 버전이다.

 

 

Unity vs Gnome

리눅스는 다양한 배포판만큼이나 다양한 곳에서 개발이 진행되어온 OS다.

Windows처럼 한 회사에서 발전을 해온 운영체제가 아니라는 말!

커널은 리누스 토발즈에 의해 주도되어 관리되어 왔지만,

배포판은 각자만의 보여지는 형태의 배포판이 개발되어 왔다.

 

그중 유명한 것은 Gnome이 있으며 우분투의 캐노니컬이 밀고 있는 Unity가 있다.

 

우분투 기능은 같지만 보여지는 형태가 다름. (GUI가 다르다는 의미)

우분투는 캐노니컬이 주도하여 개발하였지만,

기존 다른 리눅스의 Gnome에 익숙한 리눅스 사용하를 외면할 수 없었을 것으로 추청 됨.

 

완전한 리눅스 입문 자라면 Unity부터 시작해 볼 것을 권장.

Gnome에선 문제가 발생하면 Unity보다 지원이 느린 경우가 있기 때문.

 

 

Bash shell

일반 사용자는 GUI 환경이 익숙한 경우가 대부분.

GUI와 대조적으로 텍스트 위주의 인터페이스를 CUI 혹은 CLI환경이라고 함.

 

개발자가 직접 접할 리눅스 서버는 아래와 같은 CLI환경에서 대부분 다루게 됨.

생각보다 CLI환경이 더 많은 편의를 가져다 주기 때문! (겪어봐야 안다)

 

 

OS에 접근해 사용자가 다양한 요청을 할 수 있는 환경shell이라고 함.

그중에서도 Bash 쉘은 기본적으로 설치되어 있는 경우도 많고 이전부터 많이 사용 도어진 교과서 같은 쉘.

외에는 zsh가 있는데 zsh는 좀 더 멋진 view와 편의성을 가지고 있어 상당히 인기가 많다.

 

 


 

 

리눅스를 설치하는 방법?

 

클라우드를 사용하여 설치하자

 

다양한 방법이 존재하지만, 클라우드를 사용하는 방법이 엔지니어에게 가장 편안하게 느껴질 것.

 

가장 큰 벤더이자 클라우드 기술을 개척한 AWS를 추천!

이미 많이 사용되어 안정적이며 레퍼런스가 많아 검색해보면 설치에 어려운 점이 없음.

 

AWS에서는 100여 개 이상의 서비스가 있으며,

EC2(Elastic Cloud Compute) 서비스를 사용하면 리눅스가 있는 서버 인스턴스를 사용할 수 있다.

 

EC2란, AWS에서 제공하는 가상 머신. 

 

클라우드는 유료이지만 Free Tier라는 이름으로 무료 서비스도 존재하며 무료로도 우분투 학습에는 충분하다.

 

참고로 AWS EC2 Free Tier는 1년간 제공된다.

 

AWS 외에도 MS Azure, Google Cloude Platform 등 비슷한 서비스가 존재.

 

 


 

클라우드 컴퓨팅 서비스를 활용하여 리눅스 서버를 설치 및 사용해보자!

 

 

아래의 링크로 들어가 프리 티어로 시작해보자.

 

AWS 프리 티어

12개월 무료: 이 프리 티어 오퍼는 AWS 신규 고객에게만 제공되며 AWS 가입일로부터 12개월 동안 유효합니다. 12개월의 무료 사용 기간이 만료되거나 애플리케이션 사용량이 프리 티어 범위를 초과

aws.amazon.com

 

프리티어 750시간 클릭
Amazon EC2 시작하기 클릭

 


 

루트 사용자IAM사용자 둘 중 어느 것을 선택해야 할지 고민하다가 다음의 글을 읽고 

이해는 완벽히 되지 않았지만 보안상 문제로 IAM사용자를 선택했다.

 

 

아마존 웹 서비스 계정 생성 후 해야하는 IAM 보안 조치: 루트 사용자와 IAM 사용자의 차이

하나의 AWS 계정은 루트 사용자와 다수의 IAM 사용자로 구성된 다중 사용자 환경입니다. 아마존에서는 루트 계정을 사용하기보다는 IAM 사용자를 만들어 권한을 관리할 것을 권장하고 있습니다.

www.44bits.io

 


 

이 다음 카드 등록하는 과정 등을 모두 마치면
다음의 화면을 만날 수 있다.

 

서울로 설정해준다.
3번째에 있는 18년도의 우분투 LTS버전을 사용한다.
프리티어 단계에서는 최대 30까지 가능하기 때문에 30으로 바꿔준다.
키페어를 다운로드하고 인스턴스를 시작해준다.
"실행중"을 볼 수 있다.

 

 


 

네트워크 및 보안 메뉴의 탄력적 IP 클릭

 

오른쪽 상단의 "이 탄력적 IP 주소 연결" 클릭

 

"작업"을 눌러 "탄력적 IP 주소 연결"란을 클릭

 

[참고] EC에 올릴 수 있는 것들

 - DB
 - 백엔드 서버
 - 프런트 서버
 - 레디스 서버
 - 젠킨스 

등등

 


 

본인의 PC(클라이언트)에서 EC2(서버)에 접속해보자

 

cmd창에서 사용한 명령어의 순서는 다음과 같았다.

## 1단계 - .pem파일을 저장한 경로까지 이동하기 ##
# D드라이브로 이동 (나는 .pem파일을 D드라이브에 저장해두었기 때문)
D:

# 나는 "AWS 키페어 인증서"라는 파일 안에 .pem을 저장해두었기 때문에 해당 파일을 향해 cd로 이동
cd "AWS 키페어 인증서"

## 2단계 - ssh 명령어로 접속하기 ##
# 아래형태로 명령어를 입력해 접속할 수 있음
# 인증서를 이용해서 해당 서버(인스턴스 고유 고정 IP주소)에 ubuntu 계정으로 접속한다 라는 의미
# ssh -i 폴더/전체/경로/암호키파일명.pem 서버사용자명@서버IP주소
ssh -i "D:\AWS 키페어 인증서\UbuntuSohyun.pem" ubuntu@서버IP주소

 

그러면 다음의 메시지를 얻을 수 있는데, 해당 인증서를 통해 해당 서버에 최초로 접속했으니 등록하겠냐는 의미.

yes혹은 Y를 입력해 등록하자. 그러면 해당 터미널은 이제 서버 컴퓨터의 터미널로 사용할 수 있게 된다.

D:\AWS 키페어 인증서>ssh -i "D:\AWS 키페어 인증서\UbuntuSohyun.pem" ubuntu@99.999.999.999
The authenticity of host '99.999.999.999 (99.999.999.999)' can't be established.
ECDSA key fingerprint is SHA256:QXq5wfulSa1mcE+jje6xSYqq+nmXKa2h2fCIbP4okwI.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

 

그런데.. 여기서 다음의 에러 창을 볼 수 있었다. 

D:\AWS 키페어 인증서>ssh -i "D:\AWS 키페어 인증서\UbuntuSohyun.pem" ubuntu@99.999.999.999
The authenticity of host '99.999.999.999 (99.999.999.999)' can't be established.
ECDSA key fingerprint is SHA256:QXq5wfulSa1mcE+jje6xSYqq+nmXKa2h2fCIbP4okwI.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '99.999.999.999' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'D:\\AWS \355\202\244\355\216\230\354\226\264 \354\235\270\354\246\235\354\204\234\\UbuntuSohyun.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 "D:\\AWS \355\202\244\355\216\230\354\226\264 \354\235\270\354\246\235\354\204\234\\UbuntuSohyun.pem": bad permissions
ubuntu@99.999.999.999: Permission denied (publickey).

 

음.. 너무 오픈되어있다..?

 

권한 문제라고 생각이 들어 조금 더 알아보니 다음의 해답을 찾을 수 있었다.

 

Windows SSH: Permissions for 'private-key' are too open

I've OpenSSH 7.6 installed in Windows 7 for testing purposes. SSH client & server work just fine till I tried to access one of my AWS EC2 box from this windows. It seems like I need to change ...

superuser.com

 

위 링크의 내용을 정리하자면,

. pem파일이 다양한 유저들에게 오픈되어있었기 때문에 발생한 문제(파일 권한 문제)라는 것이었다.

나의 계정 외에는 모두 삭제해주자.

 

. pem파일을 우클릭하여 속성을 클릭하고 보안 탭의 고급설정에 들어가 보자.

나 이외의 다양한 유저들이 존재할 것이고 상속관계이기도 한 모습을 볼 수 있을 것이다.

모든 상속과 권한을 해제하고, 궁극적으로는 나의 계정만 남겨두고 모두 삭제해준다.

끝으로 나의 계정에는 모든 권한을 위임해준다.

 

그런 다음 다시 다음의 명령어를 cmd창에 입력하니 아래와 같이 환영한다는 메시지를 받을 수 있었다.

(만약 그래도 안된다면 컴퓨터를 재부팅해보자.)

 

이제 해당 터미널은 서버 컴퓨터의 터미널로 사용할 수 있게 된다.

D:\AWS 키페어 인증서>ssh -i "D:\AWS 키페어 인증서\UbuntuSohyun.pem" ubuntu@99.999.999.999
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1045-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Jun 29 15:43:37 UTC 2021

  System load:  0.0               Processes:           92
  Usage of /:   3.9% of 29.02GB   Users logged in:     0
  Memory usage: 19%               IP address for eth0: 999.99.9.99
  Swap usage:   0%

0 packages can be updated.
0 of these updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@ip-999-99-9-99:~$

 

위의 파일 권한 설정이 귀찮다면 다음의 명령어를 사용해도 된다.

단, 맥 사용자라면 가능! 윈도에선 chmod가 없어 사용불가

# 아래는 shell명령어이며 파일의 소유자만 해당 파일을 읽을 수 있도록 제한한다는 명령어이다.
# 즉, 파일의 권한을 변경하는 명령어
chmod 400 인증서이름

 

 

[🔽 주로 참고한 사이트의 링크]

 

#1 리눅스의 역사 간단하게 알아보기

리눅스(LINUX) 리눅스는 서버에서 많이 사용되는 운영체제입니다. 서버라고 하면 간단하게 브라우저(클라이언트) 주소창에 특정한 주소를 입력(요청)하면 요청받은 데이터(보통은 HTML 파일)을 전

velog.io

 

사용자 디렉터리 접근제한

개요- 사용자 계정별 홈 디렉터리의 권한이 제한되어 있지 않을 경우 임의의 사용자가 파일 및 디렉터리에 ...

blog.naver.com

 

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

개발도구, 서버 설치 세팅 및 데이터관리, 소프트웨어 아마존 라이트세일, 서버세팅, 서버관리, 리눅스 명령어, 윈도우10, 윈도우 개발환경, OpenSSH, Lightsail WP Series 최근 방문자분 중 한분이 윈도

swiftcoding.org

 

 


[참고] cmd창에서 D드라이브로 이동하는 법

D:

 

[참고] 컴퓨터에서 자신의 계정 이름 (username)을 알 수 있는 간단한 방법

 

탐색기를 열고 다음의 위치로 이동하면 폴더가 보일 것이다.

C:\Users

 

 

여기서 공용이 아닌 파일의 이름이 나의 username이다.