Linux란?
- 운영체제(Operating System, OS): PC의 하드웨어 리소스(CPU, 메모리, 스토리지)를 관리하는 소프트웨어.
- 리눅스(Linux): 오픈소스 운영체제. (≒ 커널). 하드웨어 리소스(CPU, 메모리, 스토리지)를 관리함.
Linux의 특징
- 오픈 소스: 소스 코드를 공개해서 무료 이용, 수정, 배포 가능.
- 멀티 유저: 하나의 PC에서 여러 사용자가 동시에 각각의 계정을 가지고 접속 가능.
- 멀티 태스킹: 하나의 PC에서 여러 작업을 동시에 실행 가능.
SSH란?
- SSH: 원격 서버에 암호화 접속하고 명령을 실행할 수 있는 프로토콜. 클라이언트와 서버 간에 주고받는 데이터를 암호화하여 보호함. (기본 포트 번호: 22)
- SSHD(SSH Daemon): 원격 서버에 SSH 프로토콜 접속하기 위한 프로세스(프로그램).
- 데몬(Daemon): 커널이 프로세스를 처리하기 위해 백그라운드에서 항상 실행하며 요청을 기다리는 프로세스.
쉘과 터미널
- 쉘(Shell): 커널 인스턴스. 사용자가 애플리케이션을 통해 명령어를 입력한 것을 커널로 전달하고, 그 결과를 사용자에게 보여주는 역할임. (ex. Git Bash)
- 터미널(Terminal): 명령줄 인터페이스(CLI). 명령어를 입력하고 수행 결과를 출력함.
SSH vs Telnet
- ssh: 암호화 통신해서 데이터를 중간자 공격으로 탈취해도 데이터가 암호화되어 있음.
- telnet: 암호화 X 통신해서 중간자 공격으로 데이터 탈취 가능.
SSHD 동작 원리
SSHD 프로토콜 인증 방법
① 클라이언트 연결 요청 대기: 서버 부팅 시 백그라운드 실행하며 인증과 암호화 설정을 로드하고 22번 포트에서 클라이언트 요청을 상시 대기함.
② 클라이언트 연결 요청 수신: 클라이언트 IP 주소와 포트 확인.
③ 클라이언트 인증 요청: 클라이언트가 SSH 서버에 연결되면, SSHD가 클라이언트에게 인증 요청.
④ 세션 키 설정: 인증 완료 후, 클라이언트와 서버 간 암호화 세션 설정.
⑤ 클라이언트 명령 실행: 클라이언트 연결 수신 → 명령 서버에서 실행 → 결과 클라이언트에게 반환.
※ 세션: 서버에서 클라이언트의 상태(인증 정보)를 저장하는 것.
※ 세션 키: 세션 동안 암호화 통신하기 위해 사용됨. 하나의 세션 키로 클라이언트와 서버가 통신함.
클라이언트가 서버를 인증하는 방법
① 공개키 확인: 클라이언트는 접속하려는 SSH 서버의 공개키를 확인해서 해당 서버가 신뢰할 수 있는 서버인지 판단.
② known_hosts 파일 확인: 클라이언트의 로컬 데이터베이스에 있는 known_hosts
파일에 저장된 서버의 공개키와 비교함.
cat ~/.ssh/known_hosts
③ 불일치 시 연결 중단: 공개키가 서로 불일치하면, 클라이언트는 해당 서버를 신뢰할 수 없다고 판단하고 연결을 중단함.
'Linux' 카테고리의 다른 글
SSH - Root 로그인과 비밀번호 인증 설정 (1) | 2024.10.16 |
---|