SSH - SSH 동작 원리

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