Jinhwan
코딩랍스터🦞
Jinhwan
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • 일상 (15)
      • 독후감 (9)
    • Computer Science (26)
      • 네트워크 (0)
      • 알고리즘 (0)
      • 데이터베이스 (4)
      • 객체지향 (3)
      • Security (4)
      • 멀티코어 (3)
      • 디자인패턴 (8)
    • 개발 (40)
      • 쿠버네티스 (2)
      • Oracle (15)
      • Spring (12)
      • Git (2)
      • MySQL (1)
      • C++ (1)
      • Neo4j (4)
      • 데이터 엔지니어링 (2)
    • 인공지능 (12)
      • 강화학습 (2)
      • Computer Vision (2)
      • 생성모델 (1)
      • 논문 (2)
      • LLM (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Spring Rest Docs
  • RAG
  • GraphDB
  • 데이터 베이스개론
  • LockFreeHash
  • Spring
  • LLM
  • EER Model
  • springsecurity
  • JUnit
  • go
  • SQL 종류
  • self rag
  • Database
  • 남궁훈 고문
  • SQL
  • 자바
  • Java
  • CEO라는 직업
  • docker
  • 독후감
  • spring boot
  • 더 좋은 삶을 위한 철학
  • SQL 연산자
  • @Validation
  • 오브젝트
  • 객체지향
  • 강화학습
  • 마음의 법칙
  • Neo4j

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jinhwan

코딩랍스터🦞

SSH란?
Computer Science/Security

SSH란?

2023. 6. 5. 01:22

우리가 서버를 원격으로 접속해서 사용하기 위해서 SSH 명령어를 많이 쓴다. 하지만 이에 대해서 제대로 된 이해 없이 명령어만 썼기 때문에 이번 기회에 SSH에 대해 좀 더 알아보고자 글을 쓰게 되었다.

SSH란?

SSH는 Secure Shell의 줄임말로 안전하지 않는 네트워크 환경에서 보안 인증이나 파일 전송등에 쓰이는 Software Package이다. 이러한 SSH는 SSH 프로토콜을 기반으로 통신을 하게 된다.

SSH protocol이란?

먼저 SSH 프로토콜 스택 구조를 살펴보자

전송계층을 보면 SSH 또한 전송계층으로 TCP를 사용하는 것을 알 수 있다.(어떻게 보면 당연한 말이다)

응용계층에 대한 설명은 아래와 같다.

  • SSH 전송 프로토콜
    • 서버의 인증, 기밀성, 무결성, 압축을 제공하는 계층
    • 클라이언트, 서버 간에 협상(키 교환방식, 공개키 방식, 대칭 키 방식, 메세지 인증 방식, 해시 알고리즘)을 하는 곳
  • SSH 인증 프로토콜
    • 서버에 대한 사용자 인증을 제공하는 곳
  • SSH 연결 프로토콜
    • 암호화된 터널들 각각에 다수 논래채널들을 다중화 가능
  • SSH 응용 프로토콜
    • TELNET : 네트워크 연결에 쓰이는 프로토콜
    • RLOGIN : 통신 사용자가 네트워크를 통해 다른 호스트에 로그인할 수 있도록 하는 소프트웨어 유틸리티
    • SMTP : 이메일을 전송하는 기술 표준

SSH 통신 과정

이번 통신과정에서는 대칭키 기반 통신 과정에 대해서 설명하겠다.

공개키 추가

통신을 하기에 앞써 사전에 SSH Server에는 SSH Client의 공개키가 저장되어있어야한다. SSH Server와 Client가 Linux OS 기반으로 작동한다면 다음과 같은 과정을 통해 SSH Client의 공개키를 SSH Server에 저장할 수 있다.

1. 클라이언트 SSH 키 생성

만약 Client PC에 open-ssh가 깔려있지 않다면 다음과 같은 과정을 따르면 된다.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-client

이후 다음과 같은 명령어를 치게되면

ssh-keygen

개인키는 ./ssh/id_rsa 에 저장되고

공개키는 ./ssh/id_rsa.pub에 저장된다.

2. 서버에 공개키 추가

Client의 id_rsa.pub파일을 복사한후 서버의 .ssh/authorized_keys에 파일을 붙여넣는다.

3. 접속 테스트

이후 ssh username@server_ip를 통해 Client PC에서 Server로 원격접속을 성공하면 정상적으로 Client의 공개키가 저장된 것이다.

SSH Setup 통신 구조도

1. Client가 접속 요청을 보낸다.

우리가 SSH 명령어를 치게 되면 처음 발생하는 상황이다. 클라이언트에는 서버에게 연결 요청을 보내게 된다.

클라이언트는 자신의 비밀키를 사용하여 서버에 요청을 보내고 서버는 저장된 공개키 파일을 확인하여 Client의 신원이 확인된다면 서버의 공개키를 보내게 된다.

2. SSH 세션 설정

SSH 인증 요청이 수락되면 클라이언트와 서버간의 암호화된 터널이 만들어 집니다. 이때 SSH 세션의 동작을 제어하는 다양한 옵션을 설정할 수 있다. 암호화 알고리즘, 전송 속도 제한, 전송 압축등이 존재한다. 클라이언트는 이러한 설정 정보를 ‘~/.ssh/config’파일에 저장해두고 SSH요청을 보낼때 같이 보내어 일관성 있는 연결을 만들 수 있다.

이러한 과정을 통해 암호화된 터널이 만들어지면 SSH Client가 SSH Server를 원격으로 사용할 수 있게 된다


긴 글 읽어주셔서 감사합니다.

틀린 부분이 있으면 댓글을 달아주시면 감사하겠습니다.

📧 : realhwan1202@gmail.com

🔗 : https://github.com/RicardoKim


참고

https://www.ssh.com/academy/ssh/protocol

 

What is the Secure Shell (SSH) Protocol? | SSH Academy

The SSH protocol (also referred to as Secure Shell) is a method for secure remote login from one computer to another.

www.ssh.com

http://www.ktword.co.kr/test/view/view.php?m_temp1=2524 

 

SSH

 

www.ktword.co.kr

 

저작자표시 비영리 (새창열림)

'Computer Science > Security' 카테고리의 다른 글

[보안] 암호(2) RC4  (0) 2022.11.01
[보안] 암호(1) Perfect Secret과 OTP  (0) 2022.11.01
[보안] 디피-헬먼 키 교환 1편  (0) 2022.10.29
    'Computer Science/Security' 카테고리의 다른 글
    • [보안] 암호(2) RC4
    • [보안] 암호(1) Perfect Secret과 OTP
    • [보안] 디피-헬먼 키 교환 1편
    Jinhwan
    Jinhwan
    잘 몰라서 하고 있는 블로그 입니다. 틀린 부분에 대해서 언제든지 댓글 달아주세요.

    티스토리툴바