리눅스는 유니스 계열의 운영체제로 주로 서버 컴퓨터에서 많이 사용되는 운영체제이며 여러 사용자가 동시에 접속해 사용할 수있는 다중 사용자용 운영체제이다. 또한 사양이 낮은 컴퓨터에서도 우수한 성능을 보여주고 있으며 운영체제의 크기를 줄이기 위해 필수 기능만 커널 부분에 두고 나머지 기능은 필요시 선택적으로 사용할 수 있도록 설계되어 매우 효율적이다.
리눅스는 커널을 중심으로 다양한 시스템 소프트웨어와 응용 소프트웨어를 묶어서 구서앟고 여기에 패키지 매니저 개발 툴 , 유틸리티 프로그램, 데스크 톱 환경 등을 하나로 통합 하여 배포되고 있는데 리눅스의 이런 배포판의 종류는 매우 다양하다.
데비안(Debian GNU Linux)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
탄력적 iP서비스는 고정 IP 주소를 제공하는 서비스로 개인적인 용도로 사용할 때는 특별히 사용할 필요가 없지만 웹 서버와 같이 고정 IP가 필요한 서버를 운영할 때는 고정 IP가 필요하므로 탄력적 IP를 설정해 사용한다.
EC2 인스턴스를 생성할 때 외부에서 접속할 수잇는 버블릭 IP가 할당되는데 이 퍼블릭 IP는 EC2 인스턴스 를 중지했다가 다시 시자가면 IP주소가 변경되는 유동적인 IP 주소 이다.
일반적인 접속은 큰 문제가 없지만 웹서버를 운영할때 DNS에 퍼블릭 IP주소를 연결했다면 DNS에도 IP 주소를 변경해야 되는 문제가 발생한다. 이런 문제를 해결하기 위해서 AWS는 IP가 한번 할당되면 변하지 않는 고정적인 IP주소인 탄력적 IP 를 제공한다.

IP주 소 할당 화면이 나타나면 기본 값 그대로 "할당" 버튼을 클릭하면 탄력적 IP가 계정에 할당된다.
탄력적 IP가 할당되면 다음과 같은 탄력적 IP 주소 화면이 나타난다.
이제 할당 받은 탄력적 IP를 EC2 인스턴스에 연결하면 된다.
“작업 –탄력적 IP 주소 연결” 메뉴를 선택하고 다음 단계로 이동
탄력적 IP 주소 연결 화면에서 탄력적 IP를 연결할 인스턴스를 선택하고 해당 인스턴스의 프라이빗 IP를 확인해 입력하고 "연결" 버튼을 클릭한다.
EC2 인스턴스의 세부 정보를 확인해 보면 탄력적 IP 주소가 할당된 것을 확인 할 수 있
다. 그리고 외부에서 EC2 서버에 접속할 수 있는 IP 주소인 퍼블릭 IPv4 주소가 탄력적
IP 주소와 동일하게 설정된 것을 확인할 수 있다.
AWS는 외부에서 EC2 서버에 접속하는 다양한 방법을 제공하고 있다.
앞에서 EC2 Instance Connect를 사용 EC2 서버에 간단히 접속해 보았다.
이번에는 원격지 컴퓨터에 접속하기 위한 프로토콜인 SSH(Secure Shell) 방식으로 EC2
인스턴스에 접속해 리눅스 사용법에 대해서 알아보려고 한다.
아래 URL은 AWS에서 Linux 인스턴스에 연결하는 방법을 설명한 문서이다.
연결할 인스턴스를 체크하고 그 인스턴스 ID에 마우스 우 클릭을 하면 나타나는 컨텍스트 메뉴에서 연결 메뉴를 클릭해 연결 화면으로 이동할 수 있다. 이외에도 인스턴스가 선택된 상태에서 위쪽의 “연결” 버튼을 클릭해 해당 인스턴스에 연결할 수 있는 화면으로 이동할 수 있다.
인스턴스에 연결 화면이 나타나면 “SSH 클라이언트” 탭을 선택하면 SSH
방식으로 접속하는 방법에 대한 설명을 볼 수 있다.
윈도우에서 SSH 방식으로 원격지 리눅스 서버에 접속할 때 많이 사용하는 PuTTy와 같
은 터미널 프로그램을 사용해도 되지만 우리는 Git Bash가 이미 설치되어 있기 때문에
VSCode 환경에서 Git Bash를 사용할 것이다.
먼저 C 또는 D 드라이브에 아래와 같이 “AWS_Study” 폴더를 만들고 앞에서 EC2 인스
턴스를 처음 만들 때 생성한 키페어 파일을 복사해 붙여넣기 하자. 그리고 아래 3번 그
림과 같이 윈도우 탐색기에서 “AWS_Study”에 마우스 우 클릭으로 “Code(으)로 열기”
를 선택해 VS Code를 실행하자.
VS Code가 실행되면 터미널 창을 열고 앞에서 클립보드에 복사한 명령을 붙여넣기 하
여 실행하면 EC2 서버에 접속하고 다음과 같은 로그가 출력된다.
만약 리눅스 또는 macOS에서 SSH 접속시에 다음과 같이 “사용 권한이 거부되었거나
[인스턴스] 포트 22에 의해 연결이 닫힘” 이라는 권한 문제로 인한 오류가 발생하면 터
미널에서 AWS_Study 폴더로 들어가 키페어 파일에 대한 권한을 변경하고 다시 SSH 접
속을 시도하면 잘 접속할 수 있을 것이다.
Host key not found in [directory], Permission denied (publickey), Authentication
failed, permission denied
또는
Connection closed by [instance] port 22
오류 중 하나가 발생하는 경우
다음 명령으로 권한을 변경하고 다시 SSH 접속을 다시 시도하자.
터미널(Terminal)은 서버에 연결된 입출력이 가능한 하드웨어 단말기를 말하는데 이를
console이라고도 부른다. 다시 말해서 터미널은 서버에 명령을 입력하고 결과를 출력하
는 단말기 화면 자체를 의미한다. 오늘날 우리가 쉽게 접할 수 있는 터미널은 물리적인
하드웨어를 소프트웨어로 구현한 것으로 터미널 에뮬레이터(Terminal Emulator)라고
부르는 것이 보다 정확한 표현일 것 같다.
쉘(Shell)은 사용자가 입력한 명령을 해석하는 명령어 해석기(Translator) 프로그램이며
운영체제의 일부분이다. 사용자는 터미널을 이용해 쉘에게 명령을 전달하고 쉘은 그 명
령을 해석해서 운영체제의 커널(Kernal)로 전달한다. 커널은 전달 받은 명령을 실행하
고 그 결과를 쉘로 전달하며 쉘은 다시 터미널을 통해 출력한다.
결론적으로 쉘은 터미널 위에서 실행되는 프로그램이며 터미널은 명령을 입력 받아서
쉘을 실행하기 위한 일종의 도구라고 볼 수 있다. 터미널이 실행되면서 동시에 그 안에
서 쉘이 실행되므로 사용자가 터미널에 명령을 입력하면 쉘이 그 명령을 전달 받아 운
영체제로 전달할 수 있게 된다.
유닉스 계열의 운영체제는 보통 텍스트 모드로 실행되는 터미널 화면에서 명령 행에 명
령을 입력해 사용한다. 이 때 입력한 명령을 해석해 주는 프로그램을 쉘(Shell이며 쉘은
운영체제의 일부로 명령어 해석기 또는 명령 행 인터페이스를 의미
