Linux, Ubuntu, SSH
DEV ·리눅스
1. 개발환경
- 로컬 컴퓨터, 리모트 컴퓨터 : 웹 서버에 배포하기 위해서 로컬 컴퓨터에서 작업한 내용을 리모트 컴퓨터로 옮기게 된다.
- 로컬 컴퓨터, 가상 컴퓨터 : 물리적 환경에서만 리모트 컴퓨터를 쓸 수 있는 제약을 막기 위해 가상 컴퓨터에서의 배포를 진행해보게 되며, 이를 위해 가상 환경 구현을 진행한다.
- 유닉스 : iOS, OS X 등의 베이스가 되는 컴퓨터의 운영체제로, 1969년 벨 연구소 직원인 켄 톰슨이 게임의 원활한 진행을 위해 고안하다가 만들었다.
- 리눅스 : 윈도우, 맥OS와 달리 무료로 제공되는 운영체제로, ‘리누스 토르발스’가 1991년에 만들었다.
Linux
1. Linux의 특징
유닉스 기반의 무료 오픈 소스 운영체제이며, 윈도우와 맥과 가장 구별되는 점으로 ‘오픈 소스’를 꼽을 수 있다.
커스터마이즈된 OS를 만들 수 있는 커널로, Linux 커널을 기반으로 하며, 커널은 운영 체제의 핵심이라고 할 수 있다.
즉, 이 커널로 자신의 운영 체제를 개발할 수 있다.
Linux 아키텍처는 커널, 시스템 라이브러리, 시스템 도구와 같은 구성 요소로 이루어진다.
장치 메모리를 관리하고 프로세스를 관리하는 역할을 수행한다.
현재 여러 사용자가 기본 설정에 따라 다운로드할 수 있는 Linux 배포판을 사용할 수 있으며, 이 배포판은 여러 개발자들이 만들었다.
현재 Linux 커널은 운영 체제 역할을 위한 다양한 배포판을 지원하는데, 이 중 하나가 바로 Ubuntu이다.
2. Linux의 장점
안정적이며 안전한 운영 체제이며 여러 사용자가 동시 작업할 수 있기 때문에 다중 사용자 시스템으로 사용된다.
많은 프로세서를 지원하며 멀티 태스킹으로 많은 프로세스의 실행이 가능하다.
3. OS(Operating System, 운영체제)
컴퓨터 시스템의 하드웨어, 소프트웨어 자원들을 효율적으로 운영해, 사용자의 시스템 이용을 편리하도록 하는 시스템 소프트웨어를 말한다.
애플리케이션들이 동작하도록 자원을 관리하며 핵심 소프트웨어의 역할을 수행한다.
추가적으로, 외부의 접근을 방어하는 역할도 수행한다.
운영체제는 사용자 영역과 커널 영역으로 나눌 수 있다.
- 사용자 영역 : 사용자의 프로그램 사용을 위한 공간이다.
- 커널 영역 : 사용자 영역의 사용 프로그램을 안전하고 효율적으로 작동하기 위해 컴퓨터 자원을 관리하는 공간이다.
4. Kernal(커널)
컴퓨터의 운영체제의 핵심이 되는 프로그램으로, 시스템의 모든 것을 통제하는 역할을 수행한다.
운영체제의 프로그램 수행을 위한 여러 서비스를 제공한다.
보안, 자원관리, 추상화 같은 역할을 수행한다.
5. 배포판?
리눅스에서 작동하는 여러 프로그램을 모아 놓은 것으로, 이렇게 여러 프로그램이 모여 주어진 일을 수행하는 경우가 있으며, 이 중 하나가 Ubuntu이다.
6. Parallels, Ubuntu 설치
이미 윈도우 사용을 위해 Parallels 구입을 한 상태이기 때문에 Parallels로 Ubuntu 설치를 진행했다.
우선, Ubuntu 페이지에서 다운로드를 진행하면 ubuntu-20.04.3-desktop-amd64.iso
라는 이름의 파일이 생기게 된다.
Parallels에서 새로운 OS 설치 버튼을 클릭하면 다운로드된 iso파일을 스스로 인식해 진행할 수 있다.
일반적인 윈도우 같은 운영체제의 설치와 같은 방식으로 진행되며, 따라서 진행을 하다보면 Ubuntu의 설치가 완료된다.
7. SSH 설정
원격 접속 설정을 위해 ssh 설정을 해야 하는데, Ubuntu 내의 터미널 파일을 켜야 한다.
좌측 하단에 메뉴 버튼을 클릭 시 이러한 창이 나오는데, 거기서 terminal을 찾아서 실행하면 된다. 단축키는 Ctrl + Alt + T
(맥에서는 아직 찾지 못함)
위와 같은 창이 나오게 되고, ssh와 관련된 입력들을 넣어주면 된다.
1) SSH server install
$ sudo apt update
$ sudo apt install openssh-server
위 명령어를 입력해 SSH server를 설치한다.
설치 여부의 확인을 위해 sudo systemctl status ssh
를 입력하면 아래와 같은 결과가 나오는 것을 볼 수 있다.
여기서 active(running)이라는 표시가 있으면 제대로 동작하고 있다고 할 수 있다.
만약, 동작하지 않을 시 아래의 명령어 중 하나를 입력해 실행시킨다.
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
2) Firewall
방화벽을 사용 중일 경우, SSH를 허용해야 하며, $ sudo ufw allow ssh
를 입력해 허용할 수 있다.
방화벽 사용 여부의 확인은 $ sudo ufw status
를 통해 할 수 있다.
3) Client
Ubuntu는 기본적으로 SSH client가 설치되어 있는데, 혹시 설치되지 않은 경우에는 $ sudo apt-get install openssh-client
를 통해 설치할 수 있다.
Client에서의 실행을 위해 username과 IP주소가 필요한데, IP주소는 ip a
명령어를 통해서 확인할 수 있다.
명령어 입력 시 긴 줄이 나오게 되는데, 이 중 inet (IP주소)/24 brd~
라고 되어 있는 부분에서 IP주소를 가져오면 된다.
원래의 이용하는 PC(Client)에서 터미널로 들어가 username@IP
를 입력하면 접속과 관련된 질문이 나오고, yes를 누른 뒤 비밀번호 입력까지 완료하면 접속이 된다.
접속을 나오고 싶을 때에는 exit
를 입력하면 나올 수 있고, SSH 종료를 위해서 sudo systemctl stop ssh
를 입력하면 된다.
4) Directory 생성
mkdir (filename)
입력 시 생성이 가능하다.
이전과 같이 원격으로 접속을 하고, 입력하게 될 시, 새로운 디렉토리가 만들어지게 된다.
ls
는 디렉토리 내의 파일 목록들을 보여주는데, mkdir
을 한 뒤 다시 보면 생성된 것을 확인할 수 있다.
5) 접근 권한 부여
chmod라는 명령어를 통해서 파일과 폴더에 대한 접근권한을 부여할 수 있다.
정확한 명령어는 아래와 같다.
chmod [옵션] [사용자] [설정기호] [권한] [file or directory]
- 접근 권한 문자열
구분 | 기호 | 설명 |
---|---|---|
접근권한 | r | 읽기 |
w | 쓰기 | |
x | 실행 | |
수행 연산 | + | 권한 추가 |
- | 권한 제거 | |
+ | 권한 부여 | |
사용자 | u | user의 약자, 소유자 |
g | group의 약자, 그룹 | |
o | other의 약자, 일반 사용자 | |
a | all의 약자, 모든 사용자 | |
비어 있음 | a와 동일 |
- 접근 권한 숫자열
8진수 | 2진수 | 파일 모드 | 권한 |
---|---|---|---|
0 | 000 | - - - | 권한 없음 |
1 | 001 | - - x | 실행 |
2 | 010 | - w - | 쓰기 |
3 | 011 | - w x | 쓰기, 실행 |
4 | 100 | r - - | 읽기 |
5 | 101 | r - x | 읽기, 실행 |
6 | 110 | r w - | 읽기, 쓰기 |
7 | 111 | r w x | 읽기, 쓰기, 실행 |
숫자열 세 개를 작성하는 경우, 소유자(u)
, 그룹(g)
, 일반사용자(o)
의 순서로 권한을 부여한다.
예를 들어 754
의 경우 소유자는 7(읽기, 쓰기, 실행), 그룹은 5(읽기, 실행), 일반사용자는 4(읽기)가 가능한 것으로 설정할 수 있다.
jinjeon@ubuntu:~$ chmod 764 test
위와 같이 입력 시, test 디렉토리에 소유자 7, 그룹 6, 일반 사용자 4의 권한을 준 것이다.
링크
- VirtualBox, Ubuntu 설치 안내
https://popcorn16.tistory.com/85 - parallels, Ubuntu 설치 안내
https://m.blog.naver.com/woodkill/220790227283 - Linux, Ubuntu의 차이
https://ko.strephonsays.com/difference-between-linux-and-ubuntu - SSH 설치 및 접속 방법
https://codechacha.com/ko/ubuntu-install-openssh/
https://jmoon.co.kr/183 - Ubuntu root 계정 전환 방법
https://gabii.tistory.com/entry/Ubuntu-초기-root-계정-설정-및-계정-전환 - 폴더 권한 변경(764)
https://itworld.gmax8.com/25