돌할우밤 공부방

1. SSH 인증키 생성하여  접속해보기.

4일 차에서 SSH를 다뤄보았는데 이번에는 SSH의 큰 특징 중 하나인 '암호와 패킷 전송'을 사용하여 접속할 때 비밀번호 없이 접속해 보겠다.

 

- SSH 인증키란? SSH 인증키는 공개키 암호화 방식 및 인증 확인과 응답 인증을 사용하여 SSH 서버에 인증하는 방식이다. 기존 비공개 서버에 접속하기 위해서는 비밀번호 인증으로 접속을 했지만 SSH인증키가 있으면 암호를 생각하고 접속할 수 있다

 

- SSH 인증키 동작 방식

인증키의 동작 방식은 이러하다.

1. 클라이언트에서 공개키(public key), 개인키(private key)를 생성.

2. 서버에 생성한 공개키를 전달.

3. 클라이언트가 SSH로 서버에 개인키로 로그인 접속.

이 때 여기서 '개인키는 절대 타인에게 노출되어서는 안 되는 키'이다 때문에 공개키를 서버에 전달하게 되며

공개키로 암호화한 것은 개인키로, 역으로 개인키로 암호화한 것은 공개키로 풀 수 있다.

 

  • 클라이언트 ---> 서버

여기서 '클라이언트에서 서버로 메시지가 전달'할 때의 동작 방식.

1. 클라이언트에서 개인키로 메시지를 암호화함.

2. 서버에서 공개키로 복호화를 함.

자기가 만든 개인키로 만든 메시지는 오로지 자신만의 공개키로 복호화 가능하기 때문에 자신이 만든 메세지라는 것을 증명하게 된다.

 

  • 서버 ---> 클라이언트

'서버에서 클라이언트로 메세지 전달될 때' 동작 방식.

1. 서버에서 공개키로 암호화함.

2. 클라이언트에서 개인키로 복호화

이제 슬슬 감이 잡힐 것이다 이렇게 반대로 서버에서 전송되는 암호화된 정보는 개인키를 소지한 나 자신만이 해독이 가능하다.

 

이제 위에 나온 대로 순서를 진행하며  실습을 해보자

사용된 명령어 : ssh-keygen [option] - 인증키 생성 명령어

ssh-keygen의 간단 옵션

옵션 설명
-t 암화 방식 사용 지정
-b 생성할 인증키 비스수 지정
-f 파일명 지정 및 경로 지정 가능
-c 주석 입력 가능

서버 : root 클라이언트 : ubam (각각 ip가 다른 vm머신을 준비했다.)

1. 클라이언트에 키(공개키, 개인키) 생성

ssh-keygen [option] 명령어로 공개키/개인키 생성

이때 간단한 옵션으로만 -t와 -b로 생성해보겠다.

(이름을 따로 지정하거나 저장 경로를 지정하지 않았으면 'id_rsa', 'id_rsa.pub'라고 생성됨.)

흔히 사용되는 rsa타입으로 만들어본 모습 이 때 이름이나 경로를 기본값으로 지정했기 때문에'/home/.ssh'라는 디렉토리에 개인키와 공개키가 생성된다.
성공적이다.(여기서 id_rsa_pub가 대놓고 공개키라고 광고하고 있따.)

2.  클라이언트에서 서버로 공개키 전달

여기서 서버로 공개키를 전달/복사하는 방법이 2가지 정도가 있다 바로 'scp 명령어'와 'ssh-copy'라는 명령어이다

ssh-copy-id -i [경로] [서버 ip]

scp [공개키] [username@서버 ip:경로지정]

나는 여기서 ssh-copy-id를 사용하겠다.

여기서 접속을 계속할지 물어본다 yes로 입력하고 난 다음에는 접속할 서버의 비밀번호를 입력하고 파일이 복사된 모습
성공적으로 복ㅇ사가 된 모습을 볼 수 있따 이 때 chown 명령어로 소유자를 자신으로 변경하면 보안에도 좋다.

3. 자 이제 클라이언트에서 서버로 접속해보자

암호를 물어보는 것 없이 바로 접속이 가능해진 모습

 

2. systemctl 개념과 필요한 기초 systemctl명령어 연습하기.

- systemctl이란? 먼저 systemctl을 알기 전에 'systemd'를 먼저 알아야 한다 여기서 systemd란? systemd(system daemon)은 전통적으로 Unix 시스템이 부팅 후에 가장 먼저 생성된 후에 다른 프로세스를 실행하는 init 역할을 대체하는 데몬이다

즉 systemctl은 systemd(데몬 서비스), 서비스 매니저를 제어하는 리눅스 명령하 할 수 있겠다.

(4일 차에서 했던 런레벨도 변경 가능하며 방화 멱 관리도 할 수 있다)

 

- systemctl 간단 기초 명령어

사용법 : systemctl [명령어] [servicename]

명령 설명
status 서비스 상태 확인
start 서비스 시작
restart 서비스 재시작
stop 서비스 멈.춰!
enable 재부팅 했을 때 자동으로 서비스 실행
disable enable시킨 서비스 해제
kill 서비스와 관련된 프로세스 사망
reset-failed 서비스 disable했을 때에도 서비스 구동중일때 리셋
mask 서비스 잠금
unmask 서비스 잠금해제

 

3. rpm, yum, repository  개념과  실습하기.

먼저 'rpm'과 'yum'은 공통적으로 Linux환경에서 패키지를 설치하는 방식이자 명령어이다.

 

-RPM (Redhat Package Manager)

레드헷에서 먼저 정의한 것이며 'Linux(킹 갓 리눅스...)' window체제와 비슷하게 exe와 비슷하다 즉 프로그램을 실행한다 확정명은*rpm이며 이를 패키지라고 부른다 rpm은 패키지 인스톨하기 위해 그 패키지의 필요 요소를 전부 따로 다운로드해야 하는 단점이 있고 의존성이 강하다 쉽게 말해 의존하는 패키지를 모두 직접 설치해야 한다. (인터넷 없이 rpm으로만 설치 가능 즉 cd를 넣고 rpm으로 돌리는 방식이다)

RPM 사용법 : rpm [option] [패키지 파일(*. rpm)]

옵션 설명
-Uvh 설치
-e 삭제
-qa 설치 된 rpm 쿼리(찾기)
-qi 패키치 정보 쿼리
-qf 연관된 rpm 파일 정보 출력

 

- YUM (Yellodog Updater Modified)

rpm명령어의 패키지 의존성 문제를 완전하게 해결한 명령어가 되겠다 차이점은 인터넷을 통해서 필요한 파일을 저장소에서 자동으로 모두 다운로드해서 설치하는 방식이며 yum은 외부 레파지토리 서버랑 통신이 가능해야 한다 즉 네트워크 설치 후 사용이 가능하다 rpm은 의존성이 강하다 하지만 yum은 구성요소들을 웹에서 다운로드하여 와서 알아서 설치해주므로 의존성 단점을 보완했다

YUM 사용법 : yum [option] [패키지 파일] - 여기서 '-y'는 모든 상황에 yes로 답한다는 뜻.

옵션 설명
install/-y install 설치 / 모든상황에 yes라 답하고 설치
check-update 업데이트 가능 목록 확인
update 업데이트
remove 삭제
'고오급 사용법' ------------------------------------------------------------------
groupinstall 패키지 그룹 설치
list 패키지 리스트 확인
provides 특정 파일이 속한 패키지 이름 확인
repository 현재 활성화 된 패키지 저장소 확인

 

- repository란?

말 그대로 저장소, 패키지 저장소이다 우리는 리눅스에서 패키지를 설치할 때 그 패키지가 어디에 존재하며 어떤 방법으로 가져와 설지가 되는가? 이 모든 것이 respository에서 가져오는 것이다 추가로 respository 파일 위치는 /etc/yum.repos.d이며 저장소를 추가할 경우 해당 위치에 repository파일이 저장된다

4. root 비밀번호 복구/변경 후 접속해보기.

초기에 root비밀번호를 설정했을 텐데 어쩌다 root계정의 비밀번호를 분실했다면 이렇게 해보자

 

1.

부팅시 키보드 위아래 위위아래를 눌러 고정시킨다음 'e'버는을 눌러 Eidt모드로 들어가자

2.

밑으로 쭉~ 내려가서 'rhgb auiet LANG=en US.UTF-8부분뒤로 이동한다

3.

그 다음 rd.break라고 입력후 Ctrl+x를 눌러 재시작 해주자

4.

#mount -o rw,remount /sysroot입렵 후 #chroot /sysroot입력 그다음 #passwd입력하면 비밀번호를 입력하라고 한다 그 때 원하는 번호 입력 후 #touch/.autorelabel입력하고 exit를 두번 입력하면 되겠다.

5.

ㄷㄷㄷㅈ! 바뀐 비밀번호로 로그인한 모습

 

5. cron(tab)과 at 개념 알아보고 실습해보기.

cron과 at명령어는 리눅스 대표 작업 스케줄 관리 명령어(프로세스)이다 이 두 개의 명령어를 알아보자

 

- crontab이란? crontab은 일정한 날자와 시간에 지정된 작업을 실행하는 프로세스이며 보통 반복적인 작업을 수행할 때 사용한다 크게 두 가지 작업으로 나뉘는데 '시스템 운영에 필요한 작업'은 root 권한으로 /etc/crontab에 등록해서 수행한다 다른 하나는 사용자가 필요에 의해 지정하는 작업은 crontab 명령어를 통해 등록할 수 있다.

  /etc/crontab

- crontab 사용하기

사용법 : crontab [option] [filename]

옵션 설명
-l 설정된 스케줄링 출력
-e 현재 사용자 계정에 작업 등록
-r 저장된 스케줄링 삭제
-u 다른 사용자의 스케줄링 수정

crontab의 필드(총 7개의 필드로 구성되어있다)

밑의 표를 예로 알아보자

crontab 구조
1 2 3 4 5 6 7
(0-59) (0-23) (1-31) (1-12) (0-7) user-name command
요일 사용자 명령
메타문자
* : 조건에 무조건참
- : 범위지정
, : 다수 값 설정
*/n : n마다 실행

자 이제 만들어 보자

crontab -e 를 입력했을 때 vi편집기가 나온다 여기서 나는 10월 17일 10시 정각에 ls-al 값을 /home/ls.txt로 저장하라고 값을 넣어보겠다.
예약된 작업이 확인되는 모습
예약된 작업이 삭제되는 모습 -r옵션으로 삭제하게 되면 모든 예약 작업이 삭제되니 조심하자

 

- at란? at명령의 경우는 한 번만 처리가 실행된다 1회성 작업의 경우에는 at를 사용하는 것이 더 용이하다

 

- at 사용하기

사용법 : at [option] [time]

옵션 설명
-c 작업정보 출력
-d 예약 작업을 삭제
-l 큐에 있는 작업 출력
-f 파일명 파일이나 스크립트 틍을 실행
시간지정 HHMM, HH:MM (am과pm구분이 가능함)
날짜지정 MMDDYY, MM/DD/YY, MM.DD.YY

자 이제 13시 정각에 2021년 6월 27일에 red.txt를 실행하게 만들어 보자

at 명령어로 지정한 값에 red.txt가 실행이 예약되었다

 

이번에는 삭제시킨 모습 crontab과 달리 at는 작업번호로 삭제시킨다.

 

6. tuned 개념 알아보고 실습하기

-Tuned란? 시스템 모듈로서 시스템 사용에 대한 데이터를 모니터링 하고 수집하여  데이터를 기반으로 동적으로 시스템 설정을 조절하기 위한 데몬이며  보통 CPU 전력 소비 비활성화를 Disable 하거나, CPU/네트워크/디스크네트웍/디스크 등의 설정을 조정하기 위해 사용하며, Profile  패키지로 묶여있어, 리눅스 튜닝에 대해 잘 몰라도 쉽게 튜닝하도록 만들어진 모듈이라고 볼수 있다.

 

-실습해보자

tuned를 yum명령어로 설치해주자
설치완료
설치한 다음에는 tuned를 시작해주자
서버용 프로파일 등록 및 자동 시작명령어 이다
tuned의 profile 리스틀 볼 수 있다 이것이 모드를 프로세스이자 명령어이다 밑에 사용법과 설명을 해주겠다

사용법 : tuned-adm [option]

옵션 설명
default 디폴트 전원절약 프로파일
desktop-powesave 데스크탑 시스템을 위한 전원 절약 프로파일
server-powersave 서버 시스템을 위한 전원 절약 프로파일
network-throughput 네트워크 처리량 개선에 중점을 둔 서버 프로파일
network-latency 네트워크 대기 시간 단축에 중점을 둔 서버 프로파일
throughput-perfomance 서버를 위한 전형적인 처리속도 성능에 비중을 둔 튜닝 프로파일
latenct-performance 서버를 위한 응답 시간에 비중을 둔 전형적인 튜닝 프로파일
active 입력한 프로파일 실행
off 실행한 프로파일 종료
list
프로파일 리스트 확인

이런식으로 실행이 가능하다

 

'IT_공부 > Linux' 카테고리의 다른 글

/Linux/RHCSA/7일차  (0) 2021.06.30
/Linux/RHCSA/6일차  (0) 2021.06.28
/Linux/RHCSA/4일차  (1) 2021.06.22
/Linux/RHCSA/3일차  (0) 2021.06.20
/Linux/RHCSA/2일차  (0) 2021.06.18

>